From 2e32a27d75443805d5a902f2c37dfeb6df880573 Mon Sep 17 00:00:00 2001 From: Ariel Antonitis Date: Fri, 12 Jun 2020 00:17:39 -0400 Subject: [PATCH 001/241] Testing follower pokemon. --- .gitignore | 1 + data/maps/map_groups.json | 1 + gen3.png | Bin 0 -> 350836 bytes graphics/object_events/palettes/marshtomp.pal | 19 + .../object_events/pics/pokemon/altaria.png | Bin 0 -> 1782 bytes .../object_events/pics/pokemon/marshtomp.png | Bin 0 -> 5691 bytes .../object_events/pics/pokemon/palette.py | 25 + include/constants/event_object_movement.h | 1 + include/constants/event_objects.h | 4 +- include/event_object_movement.h | 16 + ld_script.txt | 7 +- spritesheet_rules.mk | 4 + .../object_events/movement_type_func_tables.h | 20 + src/data/object_events/object_event_anims.h | 59 + .../object_events/object_event_graphics.h | 4 + .../object_event_graphics_info.h | 2 + .../object_event_graphics_info_pointers.h | 5 + .../object_events/object_event_pic_tables.h | 24 + src/data/wild_encounters.json | 3765 +++++++++-------- src/event_object_movement.c | 308 +- src/overworld.c | 7 +- 21 files changed, 2378 insertions(+), 1894 deletions(-) create mode 100644 gen3.png create mode 100644 graphics/object_events/palettes/marshtomp.pal create mode 100644 graphics/object_events/pics/pokemon/altaria.png create mode 100644 graphics/object_events/pics/pokemon/marshtomp.png create mode 100755 graphics/object_events/pics/pokemon/palette.py diff --git a/.gitignore b/.gitignore index 38c3e02d6..de5b0c743 100644 --- a/.gitignore +++ b/.gitignore @@ -33,4 +33,5 @@ porymap.project.cfg .vscode/ *.a .fuse_hidden* +.ccls-cache/* *.sna diff --git a/data/maps/map_groups.json b/data/maps/map_groups.json index 4268abbef..4a5196b50 100644 --- a/data/maps/map_groups.json +++ b/data/maps/map_groups.json @@ -1,4 +1,5 @@ { + "layouts_table_label": "gMapLayouts", "group_order": [ "gMapGroup0", "gMapGroup1", diff --git a/gen3.png b/gen3.png new file mode 100644 index 0000000000000000000000000000000000000000..ad2f2fb90cabc1ec4000d7c930e9910ca101823f GIT binary patch literal 350836 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 z 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 L9pxHDtH}QcT5CX< literal 0 HcmV?d00001 diff --git a/graphics/object_events/palettes/marshtomp.pal b/graphics/object_events/palettes/marshtomp.pal new file mode 100644 index 000000000..8f3efce88 --- /dev/null +++ b/graphics/object_events/palettes/marshtomp.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +136 184 104 +0 0 0 +72 56 16 +32 80 88 +48 80 96 +160 72 16 +192 88 16 +64 128 128 +96 120 128 +240 128 16 +128 160 176 +88 184 176 +176 192 208 +232 232 248 +0 0 0 +0 0 0 diff --git a/graphics/object_events/pics/pokemon/altaria.png b/graphics/object_events/pics/pokemon/altaria.png new file mode 100644 index 0000000000000000000000000000000000000000..3414eafb7ed0fe6d411a955f4ac766e22b9ef7c6 GIT binary patch literal 1782 zcmVEX>4Tx04R}tkv&MmKpe$iTWdut4t5Z6h)|tc5EXIMDionYs1;guFuC+YXws0R zxHt-~1qVMCs}3&Cx;nTDg5U>;lcSTOi}v_ypn^rW+RVI`Pz| zrE}gVjXeely0E7l8 zfT(bQkU*%|V8H08u)xsZ==k{f`lCc000009a7bBm000XU000XU0RWnu7ytkO2XskI zMF->t3km}g%tI!~000EhNkl?jj zVTDiQ_`Pqw?|YN?Y(oC8m-UMAS+HvVNzR??S*SG|GXqL9`84;e+gWb?UA$GO4`u;8 z87$`GE$q>uzC+6L(rg8Kyj2*~Yx#~?OZ9vCcssOAYZ@cn@`R!c1$w;Is=Zdrb)@k4 z-tti+7jLgj)^vY0%ae*S6zCyS!bi3)Yw9s~r^`GU|{L`cJ% zx9xMVCx)Z6W@A*!spf~DDy?VSx zD4j2k@mgys`pYHo=GgZyDg7og$e)_Za$FY~z*s8U0$^>WVB|3Huha1YGa3OK+NuF~-WWc9@lf2_Wc zczQmP?EZ9If2%9WX?VP+mo~kFSR3s#r!6-q_SghB1kXf8h6}i1pkTxg1dP-1a+8lQ zZ$4O50+acKbbH?V@rOsQ(31})y60!#|W^~FAbf29EL!SjQIU2sIBOXY9#o%x{~@)LDMQh1_BEm~zB@#@>``XC!5x54z6I`pP^{-4@_TF({Qf$PCkg%B+h{fia$awN zKlRXZ*Ox_2E9$S)uMl9Pkrj^{!tbAf+EB|ECH(Q^{5@4d4G-@peVBA8mBYnwd4{kY ze9sgfxE?BUJyl~=0N{>=0zKXkgv7)hUrK~vreK(t&r zQtdgYsONM@qyV6^ah4U24ya2ykj%$6@IGw~=^J4iNaCSJ0Y*0>Bmm5qv;q(@YV)Kqa zz1S%S3KH=KI>0^QexL(pD&J=vv&0AMe95S)VVlGgBBM5mw^hXNL~lD%QS6Oi1mj0L zL@7wbqXWTF3x{buU(Gu;H#6{1By&|$kgb+8He;U*LQ(8}smKjzX2uuM0mW0zws`*5 zIQeFgg@?J}yGn43E9Py!3!``=%Yj6wnY~WM`P25De6wac@UMU-ck>bbPaU`w&?|KP Y1uqV!0@OS@UjP6A07*qoM6N<$f-loog8%>k literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/marshtomp.png b/graphics/object_events/pics/pokemon/marshtomp.png new file mode 100644 index 0000000000000000000000000000000000000000..03875540edffbf6c0a1a6583774e874d1b4eee6c GIT binary patch literal 5691 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 literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/palette.py b/graphics/object_events/pics/pokemon/palette.py new file mode 100755 index 000000000..70f1a1710 --- /dev/null +++ b/graphics/object_events/pics/pokemon/palette.py @@ -0,0 +1,25 @@ +#!/usr/bin/python3 +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/include/constants/event_object_movement.h b/include/constants/event_object_movement.h index 223650081..25f133f0e 100755 --- a/include/constants/event_object_movement.h +++ b/include/constants/event_object_movement.h @@ -82,6 +82,7 @@ #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 MOVEMENT_TYPE_FOLLOW_PLAYER 0x51 #define MOVEMENT_ACTION_FACE_DOWN 0x0 #define MOVEMENT_ACTION_FACE_UP 0x1 diff --git a/include/constants/event_objects.h b/include/constants/event_objects.h index 8e026ef2d..deb775271 100644 --- a/include/constants/event_objects.h +++ b/include/constants/event_objects.h @@ -240,8 +240,10 @@ #define OBJ_EVENT_GFX_LINK_RS_MAY 236 #define OBJ_EVENT_GFX_LUGIA 237 #define OBJ_EVENT_GFX_HOOH 238 +#define OBJ_EVENT_GFX_MARSHTOMP 239 +#define OBJ_EVENT_GFX_ALTARIA 240 -#define NUM_OBJ_EVENT_GFX 239 +#define NUM_OBJ_EVENT_GFX 241 // These are dynamic object gfx ids. diff --git a/include/event_object_movement.h b/include/event_object_movement.h index 1e754dcd9..a6264419c 100644 --- a/include/event_object_movement.h +++ b/include/event_object_movement.h @@ -94,6 +94,7 @@ u8 GetFaceDirectionAnimNum(u8); void SetSpritePosToOffsetMapCoords(s16 *, s16 *, s16, s16); void ObjectEventClearHeldMovement(struct ObjectEvent *); void ObjectEventClearHeldMovementIfActive(struct ObjectEvent *); +u8 SpawnFollowingPokemon(void); void TrySpawnObjectEvents(s16, s16); u8 CreateObjectSprite(u8 graphicsId, u8 a1, s16 x, s16 y, u8 z, u8 direction); u8 AddPseudoObjectEvent(u16, void (*)(struct Sprite *), s16 x, s16 y, u8 subpriority); @@ -261,6 +262,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 GetJumpInPlaceMovementAction(u32); u8 GetJumpMovementAction(u32); @@ -412,6 +414,20 @@ bool8 CopyablePlayerMovement_Slide(struct ObjectEvent *, struct Sprite *, u8, bo bool8 cph_IM_DIFFERENT(struct ObjectEvent *, struct Sprite *, u8, bool8(u8)); bool8 CopyablePlayerMovement_GoSpeed4(struct ObjectEvent *, struct Sprite *, u8, bool8(u8)); bool8 CopyablePlayerMovement_Jump(struct ObjectEvent *, struct Sprite *, u8, bool8(u8)); + +u8 MovementType_FollowPlayer_Step0(struct ObjectEvent *, struct Sprite *); +u8 MovementType_FollowPlayer_Step1(struct ObjectEvent *, struct Sprite *); +u8 MovementType_FollowPlayer_Step2(struct ObjectEvent *, struct Sprite *); + +bool8 FollowablePlayerMovement_Idle(struct ObjectEvent *, struct Sprite *, u8, bool8(u8)); +bool8 FollowablePlayerMovement_FaceDirection(struct ObjectEvent *, struct Sprite *, u8, bool8(u8)); +bool8 FollowablePlayerMovement_GoSpeed0(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)); u8 MovementType_CopyPlayerInGrass_Step1(struct ObjectEvent *, struct Sprite *); u8 MovementType_Buried_Step0(struct ObjectEvent *, struct Sprite *); u8 MovementType_WalkInPlace_Step0(struct ObjectEvent *, struct Sprite *); diff --git a/ld_script.txt b/ld_script.txt index 0b8702d96..88b59295e 100644 --- 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; @@ -1256,13 +1253,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/spritesheet_rules.mk b/spritesheet_rules.mk index ae7971960..e030a66c5 100644 --- a/spritesheet_rules.mk +++ b/spritesheet_rules.mk @@ -468,7 +468,11 @@ $(OBJEVENTGFXDIR)/pokemon/wingull.4bpp: %.4bpp: %.png $(OBJEVENTGFXDIR)/pokemon/zigzagoon.4bpp: %.4bpp: %.png $(GFX) $< $@ -mwidth 2 -mheight 2 +$(OBJEVENTGFXDIR)/pokemon/marshtomp.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 2 -mheight 4 +$(OBJEVENTGFXDIR)/pokemon/altaria.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 $(OBJEVENTGFXDIR)/berry_trees/aguav.4bpp: %.4bpp: %.png $(GFX) $< $@ -mwidth 2 -mheight 4 diff --git a/src/data/object_events/movement_type_func_tables.h b/src/data/object_events/movement_type_func_tables.h index f4890d684..083e69432 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 *, CopyablePlayerMovement_None, }; +u8 (*const gMovementTypeFuncs_FollowPlayer[])(struct ObjectEvent *, struct Sprite *) = { + MovementType_FollowPlayer_Step0, + MovementType_FollowPlayer_Step1, + MovementType_FollowPlayer_Step2, +}; + +bool8 (*const gFollowPlayerMovementFuncs[])(struct ObjectEvent *, struct Sprite *, u8, bool8(u8)) = { + FollowablePlayerMovement_Idle, + FollowablePlayerMovement_Idle, + FollowablePlayerMovement_GoSpeed0, + FollowablePlayerMovement_GoSpeed1, + FollowablePlayerMovement_GoSpeed2, + FollowablePlayerMovement_Slide, + fph_IM_DIFFERENT, + FollowablePlayerMovement_GoSpeed4, + FollowablePlayerMovement_Jump, + FollowablePlayerMovement_Idle, + 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 b319c2845..f443ea572 100755 --- a/src/data/object_events/object_event_anims.h +++ b/src/data/object_events/object_event_anims.h @@ -208,6 +208,15 @@ const union AnimCmd gObjectEventImageAnim_GoSouth[] = ANIMCMD_JUMP(0), }; +const union AnimCmd gObjectEventImageAnim_GoSouth2F[] = +{ + ANIMCMD_FRAME(3, 6), + ANIMCMD_FRAME(4, 6), + ANIMCMD_FRAME(4, 6), + ANIMCMD_FRAME(0, 6), + ANIMCMD_JUMP(0), +}; + const union AnimCmd gObjectEventImageAnim_GoNorth[] = { ANIMCMD_FRAME(5, 8), @@ -217,6 +226,15 @@ const union AnimCmd gObjectEventImageAnim_GoNorth[] = ANIMCMD_JUMP(0), }; +const union AnimCmd gObjectEventImageAnim_GoNorth2F[] = +{ + ANIMCMD_FRAME(5, 6), + ANIMCMD_FRAME(6, 6), + ANIMCMD_FRAME(6, 6), + ANIMCMD_FRAME(1, 6), + ANIMCMD_JUMP(0), +}; + const union AnimCmd gObjectEventImageAnim_GoWest[] = { ANIMCMD_FRAME(7, 8), @@ -226,6 +244,15 @@ const union AnimCmd gObjectEventImageAnim_GoWest[] = ANIMCMD_JUMP(0), }; +const union AnimCmd gObjectEventImageAnim_GoWest2F[] = +{ + ANIMCMD_FRAME(7, 6), + ANIMCMD_FRAME(8, 6), + ANIMCMD_FRAME(8, 6), + ANIMCMD_FRAME(2, 6), + ANIMCMD_JUMP(0), +}; + const union AnimCmd gObjectEventImageAnim_GoEast[] = { ANIMCMD_FRAME(7, 8, .hFlip = TRUE), @@ -235,6 +262,15 @@ const union AnimCmd gObjectEventImageAnim_GoEast[] = ANIMCMD_JUMP(0), }; +const union AnimCmd gObjectEventImageAnim_GoEast2F[] = +{ + ANIMCMD_FRAME(7, 6, .hFlip = TRUE), + ANIMCMD_FRAME(8, 6, .hFlip = TRUE), + ANIMCMD_FRAME(8, 6, .hFlip = TRUE), + ANIMCMD_FRAME(2, 6, .hFlip = TRUE), + ANIMCMD_JUMP(0), +}; + const union AnimCmd gObjectEventImageAnim_GoFastSouth[] = { ANIMCMD_FRAME(3, 4), @@ -845,6 +881,29 @@ const union AnimCmd *const gObjectEventImageAnimTable_Standard[] = { gObjectEventImageAnim_GoFastestEast, }; +const union AnimCmd *const gObjectEventImageAnimTable_Following[] = { + gObjectEventImageAnim_FaceSouth, + gObjectEventImageAnim_FaceNorth, + gObjectEventImageAnim_FaceWest, + gObjectEventImageAnim_FaceEast, + gObjectEventImageAnim_GoSouth2F, + gObjectEventImageAnim_GoNorth2F, + gObjectEventImageAnim_GoWest2F, + gObjectEventImageAnim_GoEast2F, + gObjectEventImageAnim_GoFastSouth, + gObjectEventImageAnim_GoFastNorth, + gObjectEventImageAnim_GoFastWest, + gObjectEventImageAnim_GoFastEast, + gObjectEventImageAnim_GoFasterSouth, + gObjectEventImageAnim_GoFasterNorth, + gObjectEventImageAnim_GoFasterWest, + gObjectEventImageAnim_GoFasterEast, + gObjectEventImageAnim_GoFastestSouth, + gObjectEventImageAnim_GoFastestNorth, + gObjectEventImageAnim_GoFastestWest, + gObjectEventImageAnim_GoFastestEast, +}; + const union AnimCmd *const gObjectEventImageAnimTable_HoOh[] = { gObjectEventImageAnim_FaceSouth, gObjectEventImageAnim_FaceNorth, diff --git a/src/data/object_events/object_event_graphics.h b/src/data/object_events/object_event_graphics.h index 81d83a856..47d15eac0 100755 --- a/src/data/object_events/object_event_graphics.h +++ b/src/data/object_events/object_event_graphics.h @@ -68,6 +68,7 @@ const u16 gObjectEventPal_Npc1Reflection[] = INCBIN_U16("graphics/object_events/ const u16 gObjectEventPal_Npc2Reflection[] = INCBIN_U16("graphics/object_events/palettes/npc_2_reflection.gbapal"); const u16 gObjectEventPal_Npc3Reflection[] = INCBIN_U16("graphics/object_events/palettes/npc_3_reflection.gbapal"); const u16 gObjectEventPal_Npc4Reflection[] = INCBIN_U16("graphics/object_events/palettes/npc_4_reflection.gbapal"); +const u16 gObjectEventPaletteMarshtomp[] = INCBIN_U16("graphics/object_events/palettes/marshtomp.gbapal"); const u32 gObjectEventPic_NinjaBoy[] = INCBIN_U32("graphics/object_events/pics/people/ninja_boy.4bpp"); const u32 gObjectEventPic_Twin[] = INCBIN_U32("graphics/object_events/pics/people/twin.4bpp"); const u32 gObjectEventPic_Boy1[] = INCBIN_U32("graphics/object_events/pics/people/boy_1.4bpp"); @@ -360,3 +361,6 @@ const u32 gObjectEventPic_Lugia[] = INCBIN_U32("graphics/object_events/pics/poke 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"); +const u32 gObjectEventPic_Marshtomp[] = INCBIN_U32("graphics/object_events/pics/pokemon/marshtomp.4bpp"); +const u32 gObjectEventPic_Altaria[] = INCBIN_U32("graphics/object_events/pics/pokemon/altaria.4bpp"); +const u16 gObjectEventPalette31[] = INCBIN_U16("graphics/object_events/palettes/31.gbapal"); diff --git a/src/data/object_events/object_event_graphics_info.h b/src/data/object_events/object_event_graphics_info.h index c6c78dca9..661db38c4 100755 --- a/src/data/object_events/object_event_graphics_info.h +++ b/src/data/object_events/object_event_graphics_info.h @@ -243,3 +243,5 @@ const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_RubySapphireBrenda const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_RubySapphireMay = {0xFFFF, OBJ_EVENT_PAL_TAG_RS_MAY, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_RubySapphireMay, gDummySpriteAffineAnimTable}; const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Lugia = {0xFFFF, OBJ_EVENT_PAL_TAG_LUGIA, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_Lugia, gDummySpriteAffineAnimTable}; const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_HoOh = {0xFFFF, OBJ_EVENT_PAL_TAG_HO_OH, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_HoOh, gObjectEventPicTable_HoOh, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Marshtomp = {0xFFFF, OBJ_EVENT_PAL_TAG_MARSHTOMP, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_Marshtomp, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Altaria = {0xFFFF, OBJ_EVENT_PAL_TAG_MARSHTOMP, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_Altaria, 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 0ca70fa33..cb94026ee 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,9 @@ const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_RubySapphireBrenda const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_RubySapphireMay; const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Lugia; const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_HoOh; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Marshtomp; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Altaria; + const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Bard; const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Hipster; const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Trader; @@ -486,6 +489,8 @@ 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_MARSHTOMP] = &gObjectEventGraphicsInfo_Marshtomp, + [OBJ_EVENT_GFX_ALTARIA] = &gObjectEventGraphicsInfo_Altaria, }; 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 9cfdca7c1..f63f26527 100755 --- a/src/data/object_events/object_event_pic_tables.h +++ b/src/data/object_events/object_event_pic_tables.h @@ -2149,6 +2149,30 @@ const struct SpriteFrameImage gObjectEventPicTable_HoOh[] = { overworld_frame(gObjectEventPic_HoOh, 4, 4, 1), }; +const struct SpriteFrameImage gObjectEventPicTable_Marshtomp[] = { + overworld_frame(gObjectEventPic_Marshtomp, 2, 4, 0), + overworld_frame(gObjectEventPic_Marshtomp, 2, 4, 1), + overworld_frame(gObjectEventPic_Marshtomp, 2, 4, 2), + overworld_frame(gObjectEventPic_Marshtomp, 2, 4, 3), + overworld_frame(gObjectEventPic_Marshtomp, 2, 4, 4), + overworld_frame(gObjectEventPic_Marshtomp, 2, 4, 5), + overworld_frame(gObjectEventPic_Marshtomp, 2, 4, 6), + overworld_frame(gObjectEventPic_Marshtomp, 2, 4, 7), + overworld_frame(gObjectEventPic_Marshtomp, 2, 4, 8), +}; + +const struct SpriteFrameImage gObjectEventPicTable_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), + overworld_frame(gObjectEventPic_Altaria, 4, 4, 6), + overworld_frame(gObjectEventPic_Altaria, 4, 4, 7), + overworld_frame(gObjectEventPic_Altaria, 4, 4, 8), +}; + const struct SpriteFrameImage gObjectEventPicTable_RubySapphireBrendan[] = { overworld_frame(gObjectEventPic_RubySapphireBrendanNormal, 2, 4, 0), overworld_frame(gObjectEventPic_RubySapphireBrendanNormal, 2, 4, 1), diff --git a/src/data/wild_encounters.json b/src/data/wild_encounters.json index 0b30c0f65..463dadd0b 100755 --- a/src/data/wild_encounters.json +++ b/src/data/wild_encounters.json @@ -7,30 +7,71 @@ { "type": "land_mons", "encounter_rates": [ - 20, 20, 10, 10, 10, 10, 5, 5, 4, 4, 1, 1 + 20, + 20, + 10, + 10, + 10, + 10, + 5, + 5, + 4, + 4, + 1, + 1 ] }, { "type": "water_mons", "encounter_rates": [ - 60, 30, 5, 4, 1 + 60, + 30, + 5, + 4, + 1 ] }, { "type": "rock_smash_mons", "encounter_rates": [ - 60, 30, 5, 4, 1 + 60, + 30, + 5, + 4, + 1 ] }, { "type": "fishing_mons", "encounter_rates": [ - 70, 30, 60, 20, 20, 40, 40, 15, 4, 1 + 70, + 30, + 60, + 20, + 20, + 40, + 40, + 15, + 4, + 1 ], "groups": { - "old_rod": [0, 1], - "good_rod": [2, 3, 4], - "super_rod": [5, 6, 7, 8, 9] + "good_rod": [ + 2, + 3, + 4 + ], + "old_rod": [ + 0, + 1 + ], + "super_rod": [ + 5, + 6, + 7, + 8, + 9 + ] } } ], @@ -107,6 +148,61 @@ { "map": "MAP_ROUTE102", "base_label": "gRoute102", + "fishing_mons": { + "encounter_rate": 30, + "mons": [ + { + "min_level": 5, + "max_level": 10, + "species": "SPECIES_MAGIKARP" + }, + { + "min_level": 5, + "max_level": 10, + "species": "SPECIES_GOLDEEN" + }, + { + "min_level": 10, + "max_level": 30, + "species": "SPECIES_MAGIKARP" + }, + { + "min_level": 10, + "max_level": 30, + "species": "SPECIES_GOLDEEN" + }, + { + "min_level": 10, + "max_level": 30, + "species": "SPECIES_CORPHISH" + }, + { + "min_level": 25, + "max_level": 30, + "species": "SPECIES_CORPHISH" + }, + { + "min_level": 30, + "max_level": 35, + "species": "SPECIES_CORPHISH" + }, + { + "min_level": 20, + "max_level": 25, + "species": "SPECIES_CORPHISH" + }, + { + "min_level": 35, + "max_level": 40, + "species": "SPECIES_CORPHISH" + }, + { + "min_level": 40, + "max_level": 45, + "species": "SPECIES_CORPHISH" + } + ] + }, "land_mons": { "encounter_rate": 20, "mons": [ @@ -201,7 +297,11 @@ "species": "SPECIES_GOLDEEN" } ] - }, + } + }, + { + "map": "MAP_ROUTE103", + "base_label": "gRoute103", "fishing_mons": { "encounter_rate": 30, "mons": [ @@ -213,7 +313,7 @@ { "min_level": 5, "max_level": 10, - "species": "SPECIES_GOLDEEN" + "species": "SPECIES_TENTACOOL" }, { "min_level": 10, @@ -223,44 +323,40 @@ { "min_level": 10, "max_level": 30, - "species": "SPECIES_GOLDEEN" + "species": "SPECIES_TENTACOOL" }, { "min_level": 10, "max_level": 30, - "species": "SPECIES_CORPHISH" - }, - { - "min_level": 25, - "max_level": 30, - "species": "SPECIES_CORPHISH" + "species": "SPECIES_WAILMER" }, { "min_level": 30, "max_level": 35, - "species": "SPECIES_CORPHISH" + "species": "SPECIES_SHARPEDO" }, { - "min_level": 20, - "max_level": 25, - "species": "SPECIES_CORPHISH" + "min_level": 30, + "max_level": 35, + "species": "SPECIES_WAILMER" + }, + { + "min_level": 25, + "max_level": 30, + "species": "SPECIES_WAILMER" }, { "min_level": 35, "max_level": 40, - "species": "SPECIES_CORPHISH" + "species": "SPECIES_WAILMER" }, { "min_level": 40, "max_level": 45, - "species": "SPECIES_CORPHISH" + "species": "SPECIES_WAILMER" } ] - } - }, - { - "map": "MAP_ROUTE103", - "base_label": "gRoute103", + }, "land_mons": { "encounter_rate": 20, "mons": [ @@ -355,7 +451,11 @@ "species": "SPECIES_PELIPPER" } ] - }, + } + }, + { + "map": "MAP_ROUTE104", + "base_label": "gRoute104", "fishing_mons": { "encounter_rate": 30, "mons": [ @@ -367,7 +467,7 @@ { "min_level": 5, "max_level": 10, - "species": "SPECIES_TENTACOOL" + "species": "SPECIES_MAGIKARP" }, { "min_level": 10, @@ -377,44 +477,40 @@ { "min_level": 10, "max_level": 30, - "species": "SPECIES_TENTACOOL" + "species": "SPECIES_MAGIKARP" }, { "min_level": 10, "max_level": 30, - "species": "SPECIES_WAILMER" - }, - { - "min_level": 30, - "max_level": 35, - "species": "SPECIES_SHARPEDO" - }, - { - "min_level": 30, - "max_level": 35, - "species": "SPECIES_WAILMER" + "species": "SPECIES_MAGIKARP" }, { "min_level": 25, "max_level": 30, - "species": "SPECIES_WAILMER" + "species": "SPECIES_MAGIKARP" + }, + { + "min_level": 30, + "max_level": 35, + "species": "SPECIES_MAGIKARP" + }, + { + "min_level": 20, + "max_level": 25, + "species": "SPECIES_MAGIKARP" }, { "min_level": 35, "max_level": 40, - "species": "SPECIES_WAILMER" + "species": "SPECIES_MAGIKARP" }, { "min_level": 40, "max_level": 45, - "species": "SPECIES_WAILMER" + "species": "SPECIES_MAGIKARP" } ] - } - }, - { - "map": "MAP_ROUTE104", - "base_label": "gRoute104", + }, "land_mons": { "encounter_rate": 20, "mons": [ @@ -509,7 +605,11 @@ "species": "SPECIES_PELIPPER" } ] - }, + } + }, + { + "map": "MAP_ROUTE105", + "base_label": "gRoute105", "fishing_mons": { "encounter_rate": 30, "mons": [ @@ -521,7 +621,7 @@ { "min_level": 5, "max_level": 10, - "species": "SPECIES_MAGIKARP" + "species": "SPECIES_TENTACOOL" }, { "min_level": 10, @@ -531,44 +631,40 @@ { "min_level": 10, "max_level": 30, - "species": "SPECIES_MAGIKARP" + "species": "SPECIES_TENTACOOL" }, { "min_level": 10, "max_level": 30, - "species": "SPECIES_MAGIKARP" + "species": "SPECIES_WAILMER" }, { "min_level": 25, "max_level": 30, - "species": "SPECIES_MAGIKARP" + "species": "SPECIES_WAILMER" }, { "min_level": 30, "max_level": 35, - "species": "SPECIES_MAGIKARP" + "species": "SPECIES_WAILMER" }, { "min_level": 20, "max_level": 25, - "species": "SPECIES_MAGIKARP" + "species": "SPECIES_WAILMER" }, { "min_level": 35, "max_level": 40, - "species": "SPECIES_MAGIKARP" + "species": "SPECIES_WAILMER" }, { "min_level": 40, "max_level": 45, - "species": "SPECIES_MAGIKARP" + "species": "SPECIES_WAILMER" } ] - } - }, - { - "map": "MAP_ROUTE105", - "base_label": "gRoute105", + }, "water_mons": { "encounter_rate": 4, "mons": [ @@ -598,7 +694,11 @@ "species": "SPECIES_PELIPPER" } ] - }, + } + }, + { + "map": "MAP_ROUTE110", + "base_label": "gRoute110", "fishing_mons": { "encounter_rate": 30, "mons": [ @@ -653,11 +753,7 @@ "species": "SPECIES_WAILMER" } ] - } - }, - { - "map": "MAP_ROUTE110", - "base_label": "gRoute110", + }, "land_mons": { "encounter_rate": 20, "mons": [ @@ -752,7 +848,11 @@ "species": "SPECIES_PELIPPER" } ] - }, + } + }, + { + "map": "MAP_ROUTE111", + "base_label": "gRoute111", "fishing_mons": { "encounter_rate": 30, "mons": [ @@ -764,7 +864,7 @@ { "min_level": 5, "max_level": 10, - "species": "SPECIES_TENTACOOL" + "species": "SPECIES_GOLDEEN" }, { "min_level": 10, @@ -774,44 +874,40 @@ { "min_level": 10, "max_level": 30, - "species": "SPECIES_TENTACOOL" + "species": "SPECIES_GOLDEEN" }, { "min_level": 10, "max_level": 30, - "species": "SPECIES_WAILMER" + "species": "SPECIES_BARBOACH" }, { "min_level": 25, "max_level": 30, - "species": "SPECIES_WAILMER" + "species": "SPECIES_BARBOACH" }, { "min_level": 30, "max_level": 35, - "species": "SPECIES_WAILMER" + "species": "SPECIES_BARBOACH" }, { "min_level": 20, "max_level": 25, - "species": "SPECIES_WAILMER" + "species": "SPECIES_BARBOACH" }, { "min_level": 35, "max_level": 40, - "species": "SPECIES_WAILMER" + "species": "SPECIES_BARBOACH" }, { "min_level": 40, "max_level": 45, - "species": "SPECIES_WAILMER" + "species": "SPECIES_BARBOACH" } ] - } - }, - { - "map": "MAP_ROUTE111", - "base_label": "gRoute111", + }, "land_mons": { "encounter_rate": 10, "mons": [ @@ -877,36 +973,6 @@ } ] }, - "water_mons": { - "encounter_rate": 4, - "mons": [ - { - "min_level": 20, - "max_level": 30, - "species": "SPECIES_MARILL" - }, - { - "min_level": 10, - "max_level": 20, - "species": "SPECIES_MARILL" - }, - { - "min_level": 30, - "max_level": 35, - "species": "SPECIES_MARILL" - }, - { - "min_level": 5, - "max_level": 10, - "species": "SPECIES_MARILL" - }, - { - "min_level": 20, - "max_level": 30, - "species": "SPECIES_GOLDEEN" - } - ] - }, "rock_smash_mons": { "encounter_rate": 20, "mons": [ @@ -937,58 +1003,33 @@ } ] }, - "fishing_mons": { - "encounter_rate": 30, + "water_mons": { + "encounter_rate": 4, "mons": [ { - "min_level": 5, - "max_level": 10, - "species": "SPECIES_MAGIKARP" - }, - { - "min_level": 5, - "max_level": 10, - "species": "SPECIES_GOLDEEN" + "min_level": 20, + "max_level": 30, + "species": "SPECIES_MARILL" }, { "min_level": 10, - "max_level": 30, - "species": "SPECIES_MAGIKARP" - }, - { - "min_level": 10, - "max_level": 30, - "species": "SPECIES_GOLDEEN" - }, - { - "min_level": 10, - "max_level": 30, - "species": "SPECIES_BARBOACH" - }, - { - "min_level": 25, - "max_level": 30, - "species": "SPECIES_BARBOACH" + "max_level": 20, + "species": "SPECIES_MARILL" }, { "min_level": 30, "max_level": 35, - "species": "SPECIES_BARBOACH" + "species": "SPECIES_MARILL" + }, + { + "min_level": 5, + "max_level": 10, + "species": "SPECIES_MARILL" }, { "min_level": 20, - "max_level": 25, - "species": "SPECIES_BARBOACH" - }, - { - "min_level": 35, - "max_level": 40, - "species": "SPECIES_BARBOACH" - }, - { - "min_level": 40, - "max_level": 45, - "species": "SPECIES_BARBOACH" + "max_level": 30, + "species": "SPECIES_GOLDEEN" } ] } @@ -1134,6 +1175,61 @@ { "map": "MAP_ROUTE114", "base_label": "gRoute114", + "fishing_mons": { + "encounter_rate": 30, + "mons": [ + { + "min_level": 5, + "max_level": 10, + "species": "SPECIES_MAGIKARP" + }, + { + "min_level": 5, + "max_level": 10, + "species": "SPECIES_GOLDEEN" + }, + { + "min_level": 10, + "max_level": 30, + "species": "SPECIES_MAGIKARP" + }, + { + "min_level": 10, + "max_level": 30, + "species": "SPECIES_GOLDEEN" + }, + { + "min_level": 10, + "max_level": 30, + "species": "SPECIES_BARBOACH" + }, + { + "min_level": 25, + "max_level": 30, + "species": "SPECIES_BARBOACH" + }, + { + "min_level": 30, + "max_level": 35, + "species": "SPECIES_BARBOACH" + }, + { + "min_level": 20, + "max_level": 25, + "species": "SPECIES_BARBOACH" + }, + { + "min_level": 35, + "max_level": 40, + "species": "SPECIES_BARBOACH" + }, + { + "min_level": 40, + "max_level": 45, + "species": "SPECIES_BARBOACH" + } + ] + }, "land_mons": { "encounter_rate": 20, "mons": [ @@ -1199,36 +1295,6 @@ } ] }, - "water_mons": { - "encounter_rate": 4, - "mons": [ - { - "min_level": 20, - "max_level": 30, - "species": "SPECIES_MARILL" - }, - { - "min_level": 10, - "max_level": 20, - "species": "SPECIES_MARILL" - }, - { - "min_level": 30, - "max_level": 35, - "species": "SPECIES_MARILL" - }, - { - "min_level": 5, - "max_level": 10, - "species": "SPECIES_MARILL" - }, - { - "min_level": 20, - "max_level": 30, - "species": "SPECIES_GOLDEEN" - } - ] - }, "rock_smash_mons": { "encounter_rate": 20, "mons": [ @@ -1259,58 +1325,33 @@ } ] }, - "fishing_mons": { - "encounter_rate": 30, + "water_mons": { + "encounter_rate": 4, "mons": [ { - "min_level": 5, - "max_level": 10, - "species": "SPECIES_MAGIKARP" - }, - { - "min_level": 5, - "max_level": 10, - "species": "SPECIES_GOLDEEN" + "min_level": 20, + "max_level": 30, + "species": "SPECIES_MARILL" }, { "min_level": 10, - "max_level": 30, - "species": "SPECIES_MAGIKARP" - }, - { - "min_level": 10, - "max_level": 30, - "species": "SPECIES_GOLDEEN" - }, - { - "min_level": 10, - "max_level": 30, - "species": "SPECIES_BARBOACH" - }, - { - "min_level": 25, - "max_level": 30, - "species": "SPECIES_BARBOACH" + "max_level": 20, + "species": "SPECIES_MARILL" }, { "min_level": 30, "max_level": 35, - "species": "SPECIES_BARBOACH" + "species": "SPECIES_MARILL" + }, + { + "min_level": 5, + "max_level": 10, + "species": "SPECIES_MARILL" }, { "min_level": 20, - "max_level": 25, - "species": "SPECIES_BARBOACH" - }, - { - "min_level": 35, - "max_level": 40, - "species": "SPECIES_BARBOACH" - }, - { - "min_level": 40, - "max_level": 45, - "species": "SPECIES_BARBOACH" + "max_level": 30, + "species": "SPECIES_GOLDEEN" } ] } @@ -1387,6 +1428,61 @@ { "map": "MAP_ROUTE117", "base_label": "gRoute117", + "fishing_mons": { + "encounter_rate": 30, + "mons": [ + { + "min_level": 5, + "max_level": 10, + "species": "SPECIES_MAGIKARP" + }, + { + "min_level": 5, + "max_level": 10, + "species": "SPECIES_GOLDEEN" + }, + { + "min_level": 10, + "max_level": 30, + "species": "SPECIES_MAGIKARP" + }, + { + "min_level": 10, + "max_level": 30, + "species": "SPECIES_GOLDEEN" + }, + { + "min_level": 10, + "max_level": 30, + "species": "SPECIES_CORPHISH" + }, + { + "min_level": 25, + "max_level": 30, + "species": "SPECIES_CORPHISH" + }, + { + "min_level": 30, + "max_level": 35, + "species": "SPECIES_CORPHISH" + }, + { + "min_level": 20, + "max_level": 25, + "species": "SPECIES_CORPHISH" + }, + { + "min_level": 35, + "max_level": 40, + "species": "SPECIES_CORPHISH" + }, + { + "min_level": 40, + "max_level": 45, + "species": "SPECIES_CORPHISH" + } + ] + }, "land_mons": { "encounter_rate": 20, "mons": [ @@ -1481,7 +1577,11 @@ "species": "SPECIES_GOLDEEN" } ] - }, + } + }, + { + "map": "MAP_ROUTE118", + "base_label": "gRoute118", "fishing_mons": { "encounter_rate": 30, "mons": [ @@ -1493,7 +1593,7 @@ { "min_level": 5, "max_level": 10, - "species": "SPECIES_GOLDEEN" + "species": "SPECIES_TENTACOOL" }, { "min_level": 10, @@ -1503,44 +1603,40 @@ { "min_level": 10, "max_level": 30, - "species": "SPECIES_GOLDEEN" + "species": "SPECIES_TENTACOOL" }, { "min_level": 10, "max_level": 30, - "species": "SPECIES_CORPHISH" - }, - { - "min_level": 25, - "max_level": 30, - "species": "SPECIES_CORPHISH" + "species": "SPECIES_CARVANHA" }, { "min_level": 30, "max_level": 35, - "species": "SPECIES_CORPHISH" + "species": "SPECIES_SHARPEDO" + }, + { + "min_level": 30, + "max_level": 35, + "species": "SPECIES_CARVANHA" }, { "min_level": 20, "max_level": 25, - "species": "SPECIES_CORPHISH" + "species": "SPECIES_CARVANHA" }, { "min_level": 35, "max_level": 40, - "species": "SPECIES_CORPHISH" + "species": "SPECIES_CARVANHA" }, { "min_level": 40, "max_level": 45, - "species": "SPECIES_CORPHISH" + "species": "SPECIES_CARVANHA" } ] - } - }, - { - "map": "MAP_ROUTE118", - "base_label": "gRoute118", + }, "land_mons": { "encounter_rate": 20, "mons": [ @@ -1635,7 +1731,11 @@ "species": "SPECIES_PELIPPER" } ] - }, + } + }, + { + "map": "MAP_ROUTE124", + "base_label": "gRoute124", "fishing_mons": { "encounter_rate": 30, "mons": [ @@ -1662,7 +1762,7 @@ { "min_level": 10, "max_level": 30, - "species": "SPECIES_CARVANHA" + "species": "SPECIES_WAILMER" }, { "min_level": 30, @@ -1672,29 +1772,25 @@ { "min_level": 30, "max_level": 35, - "species": "SPECIES_CARVANHA" + "species": "SPECIES_WAILMER" }, { - "min_level": 20, - "max_level": 25, - "species": "SPECIES_CARVANHA" + "min_level": 25, + "max_level": 30, + "species": "SPECIES_WAILMER" }, { "min_level": 35, "max_level": 40, - "species": "SPECIES_CARVANHA" + "species": "SPECIES_WAILMER" }, { "min_level": 40, "max_level": 45, - "species": "SPECIES_CARVANHA" + "species": "SPECIES_WAILMER" } ] - } - }, - { - "map": "MAP_ROUTE124", - "base_label": "gRoute124", + }, "water_mons": { "encounter_rate": 4, "mons": [ @@ -1724,61 +1820,6 @@ "species": "SPECIES_PELIPPER" } ] - }, - "fishing_mons": { - "encounter_rate": 30, - "mons": [ - { - "min_level": 5, - "max_level": 10, - "species": "SPECIES_MAGIKARP" - }, - { - "min_level": 5, - "max_level": 10, - "species": "SPECIES_TENTACOOL" - }, - { - "min_level": 10, - "max_level": 30, - "species": "SPECIES_MAGIKARP" - }, - { - "min_level": 10, - "max_level": 30, - "species": "SPECIES_TENTACOOL" - }, - { - "min_level": 10, - "max_level": 30, - "species": "SPECIES_WAILMER" - }, - { - "min_level": 30, - "max_level": 35, - "species": "SPECIES_SHARPEDO" - }, - { - "min_level": 30, - "max_level": 35, - "species": "SPECIES_WAILMER" - }, - { - "min_level": 25, - "max_level": 30, - "species": "SPECIES_WAILMER" - }, - { - "min_level": 35, - "max_level": 40, - "species": "SPECIES_WAILMER" - }, - { - "min_level": 40, - "max_level": 45, - "species": "SPECIES_WAILMER" - } - ] } }, { @@ -2301,36 +2342,6 @@ { "map": "MAP_ABANDONED_SHIP_ROOMS_B1F", "base_label": "gAbandonedShip_Rooms_B1F", - "water_mons": { - "encounter_rate": 4, - "mons": [ - { - "min_level": 5, - "max_level": 35, - "species": "SPECIES_TENTACOOL" - }, - { - "min_level": 5, - "max_level": 35, - "species": "SPECIES_TENTACOOL" - }, - { - "min_level": 5, - "max_level": 35, - "species": "SPECIES_TENTACOOL" - }, - { - "min_level": 5, - "max_level": 35, - "species": "SPECIES_TENTACOOL" - }, - { - "min_level": 30, - "max_level": 35, - "species": "SPECIES_TENTACRUEL" - } - ] - }, "fishing_mons": { "encounter_rate": 20, "mons": [ @@ -2385,6 +2396,36 @@ "species": "SPECIES_TENTACRUEL" } ] + }, + "water_mons": { + "encounter_rate": 4, + "mons": [ + { + "min_level": 5, + "max_level": 35, + "species": "SPECIES_TENTACOOL" + }, + { + "min_level": 5, + "max_level": 35, + "species": "SPECIES_TENTACOOL" + }, + { + "min_level": 5, + "max_level": 35, + "species": "SPECIES_TENTACOOL" + }, + { + "min_level": 5, + "max_level": 35, + "species": "SPECIES_TENTACOOL" + }, + { + "min_level": 30, + "max_level": 35, + "species": "SPECIES_TENTACRUEL" + } + ] } }, { @@ -2558,6 +2599,61 @@ { "map": "MAP_METEOR_FALLS_B1F_2R", "base_label": "gMeteorFalls_B1F_2R", + "fishing_mons": { + "encounter_rate": 30, + "mons": [ + { + "min_level": 5, + "max_level": 10, + "species": "SPECIES_MAGIKARP" + }, + { + "min_level": 5, + "max_level": 10, + "species": "SPECIES_GOLDEEN" + }, + { + "min_level": 10, + "max_level": 30, + "species": "SPECIES_MAGIKARP" + }, + { + "min_level": 10, + "max_level": 30, + "species": "SPECIES_GOLDEEN" + }, + { + "min_level": 10, + "max_level": 30, + "species": "SPECIES_BARBOACH" + }, + { + "min_level": 25, + "max_level": 30, + "species": "SPECIES_BARBOACH" + }, + { + "min_level": 30, + "max_level": 35, + "species": "SPECIES_BARBOACH" + }, + { + "min_level": 30, + "max_level": 35, + "species": "SPECIES_WHISCASH" + }, + { + "min_level": 35, + "max_level": 40, + "species": "SPECIES_WHISCASH" + }, + { + "min_level": 40, + "max_level": 45, + "species": "SPECIES_WHISCASH" + } + ] + }, "land_mons": { "encounter_rate": 10, "mons": [ @@ -2652,61 +2748,6 @@ "species": "SPECIES_SOLROCK" } ] - }, - "fishing_mons": { - "encounter_rate": 30, - "mons": [ - { - "min_level": 5, - "max_level": 10, - "species": "SPECIES_MAGIKARP" - }, - { - "min_level": 5, - "max_level": 10, - "species": "SPECIES_GOLDEEN" - }, - { - "min_level": 10, - "max_level": 30, - "species": "SPECIES_MAGIKARP" - }, - { - "min_level": 10, - "max_level": 30, - "species": "SPECIES_GOLDEEN" - }, - { - "min_level": 10, - "max_level": 30, - "species": "SPECIES_BARBOACH" - }, - { - "min_level": 25, - "max_level": 30, - "species": "SPECIES_BARBOACH" - }, - { - "min_level": 30, - "max_level": 35, - "species": "SPECIES_BARBOACH" - }, - { - "min_level": 30, - "max_level": 35, - "species": "SPECIES_WHISCASH" - }, - { - "min_level": 35, - "max_level": 40, - "species": "SPECIES_WHISCASH" - }, - { - "min_level": 40, - "max_level": 45, - "species": "SPECIES_WHISCASH" - } - ] } }, { @@ -2781,36 +2822,6 @@ { "map": "MAP_ROUTE106", "base_label": "gRoute106", - "water_mons": { - "encounter_rate": 4, - "mons": [ - { - "min_level": 5, - "max_level": 35, - "species": "SPECIES_TENTACOOL" - }, - { - "min_level": 10, - "max_level": 30, - "species": "SPECIES_WINGULL" - }, - { - "min_level": 15, - "max_level": 25, - "species": "SPECIES_WINGULL" - }, - { - "min_level": 25, - "max_level": 30, - "species": "SPECIES_PELIPPER" - }, - { - "min_level": 25, - "max_level": 30, - "species": "SPECIES_PELIPPER" - } - ] - }, "fishing_mons": { "encounter_rate": 30, "mons": [ @@ -2865,41 +2876,41 @@ "species": "SPECIES_WAILMER" } ] + }, + "water_mons": { + "encounter_rate": 4, + "mons": [ + { + "min_level": 5, + "max_level": 35, + "species": "SPECIES_TENTACOOL" + }, + { + "min_level": 10, + "max_level": 30, + "species": "SPECIES_WINGULL" + }, + { + "min_level": 15, + "max_level": 25, + "species": "SPECIES_WINGULL" + }, + { + "min_level": 25, + "max_level": 30, + "species": "SPECIES_PELIPPER" + }, + { + "min_level": 25, + "max_level": 30, + "species": "SPECIES_PELIPPER" + } + ] } }, { "map": "MAP_ROUTE107", "base_label": "gRoute107", - "water_mons": { - "encounter_rate": 4, - "mons": [ - { - "min_level": 5, - "max_level": 35, - "species": "SPECIES_TENTACOOL" - }, - { - "min_level": 10, - "max_level": 30, - "species": "SPECIES_WINGULL" - }, - { - "min_level": 15, - "max_level": 25, - "species": "SPECIES_WINGULL" - }, - { - "min_level": 25, - "max_level": 30, - "species": "SPECIES_PELIPPER" - }, - { - "min_level": 25, - "max_level": 30, - "species": "SPECIES_PELIPPER" - } - ] - }, "fishing_mons": { "encounter_rate": 30, "mons": [ @@ -2954,41 +2965,41 @@ "species": "SPECIES_WAILMER" } ] + }, + "water_mons": { + "encounter_rate": 4, + "mons": [ + { + "min_level": 5, + "max_level": 35, + "species": "SPECIES_TENTACOOL" + }, + { + "min_level": 10, + "max_level": 30, + "species": "SPECIES_WINGULL" + }, + { + "min_level": 15, + "max_level": 25, + "species": "SPECIES_WINGULL" + }, + { + "min_level": 25, + "max_level": 30, + "species": "SPECIES_PELIPPER" + }, + { + "min_level": 25, + "max_level": 30, + "species": "SPECIES_PELIPPER" + } + ] } }, { "map": "MAP_ROUTE108", "base_label": "gRoute108", - "water_mons": { - "encounter_rate": 4, - "mons": [ - { - "min_level": 5, - "max_level": 35, - "species": "SPECIES_TENTACOOL" - }, - { - "min_level": 10, - "max_level": 30, - "species": "SPECIES_WINGULL" - }, - { - "min_level": 15, - "max_level": 25, - "species": "SPECIES_WINGULL" - }, - { - "min_level": 25, - "max_level": 30, - "species": "SPECIES_PELIPPER" - }, - { - "min_level": 25, - "max_level": 30, - "species": "SPECIES_PELIPPER" - } - ] - }, "fishing_mons": { "encounter_rate": 30, "mons": [ @@ -3043,41 +3054,41 @@ "species": "SPECIES_WAILMER" } ] + }, + "water_mons": { + "encounter_rate": 4, + "mons": [ + { + "min_level": 5, + "max_level": 35, + "species": "SPECIES_TENTACOOL" + }, + { + "min_level": 10, + "max_level": 30, + "species": "SPECIES_WINGULL" + }, + { + "min_level": 15, + "max_level": 25, + "species": "SPECIES_WINGULL" + }, + { + "min_level": 25, + "max_level": 30, + "species": "SPECIES_PELIPPER" + }, + { + "min_level": 25, + "max_level": 30, + "species": "SPECIES_PELIPPER" + } + ] } }, { "map": "MAP_ROUTE109", "base_label": "gRoute109", - "water_mons": { - "encounter_rate": 4, - "mons": [ - { - "min_level": 5, - "max_level": 35, - "species": "SPECIES_TENTACOOL" - }, - { - "min_level": 10, - "max_level": 30, - "species": "SPECIES_WINGULL" - }, - { - "min_level": 15, - "max_level": 25, - "species": "SPECIES_WINGULL" - }, - { - "min_level": 25, - "max_level": 30, - "species": "SPECIES_PELIPPER" - }, - { - "min_level": 25, - "max_level": 30, - "species": "SPECIES_PELIPPER" - } - ] - }, "fishing_mons": { "encounter_rate": 30, "mons": [ @@ -3132,11 +3143,96 @@ "species": "SPECIES_WAILMER" } ] + }, + "water_mons": { + "encounter_rate": 4, + "mons": [ + { + "min_level": 5, + "max_level": 35, + "species": "SPECIES_TENTACOOL" + }, + { + "min_level": 10, + "max_level": 30, + "species": "SPECIES_WINGULL" + }, + { + "min_level": 15, + "max_level": 25, + "species": "SPECIES_WINGULL" + }, + { + "min_level": 25, + "max_level": 30, + "species": "SPECIES_PELIPPER" + }, + { + "min_level": 25, + "max_level": 30, + "species": "SPECIES_PELIPPER" + } + ] } }, { "map": "MAP_ROUTE115", "base_label": "gRoute115", + "fishing_mons": { + "encounter_rate": 30, + "mons": [ + { + "min_level": 5, + "max_level": 10, + "species": "SPECIES_MAGIKARP" + }, + { + "min_level": 5, + "max_level": 10, + "species": "SPECIES_TENTACOOL" + }, + { + "min_level": 10, + "max_level": 30, + "species": "SPECIES_MAGIKARP" + }, + { + "min_level": 10, + "max_level": 30, + "species": "SPECIES_TENTACOOL" + }, + { + "min_level": 10, + "max_level": 30, + "species": "SPECIES_WAILMER" + }, + { + "min_level": 25, + "max_level": 30, + "species": "SPECIES_WAILMER" + }, + { + "min_level": 30, + "max_level": 35, + "species": "SPECIES_WAILMER" + }, + { + "min_level": 20, + "max_level": 25, + "species": "SPECIES_WAILMER" + }, + { + "min_level": 35, + "max_level": 40, + "species": "SPECIES_WAILMER" + }, + { + "min_level": 40, + "max_level": 45, + "species": "SPECIES_WAILMER" + } + ] + }, "land_mons": { "encounter_rate": 20, "mons": [ @@ -3231,61 +3327,6 @@ "species": "SPECIES_PELIPPER" } ] - }, - "fishing_mons": { - "encounter_rate": 30, - "mons": [ - { - "min_level": 5, - "max_level": 10, - "species": "SPECIES_MAGIKARP" - }, - { - "min_level": 5, - "max_level": 10, - "species": "SPECIES_TENTACOOL" - }, - { - "min_level": 10, - "max_level": 30, - "species": "SPECIES_MAGIKARP" - }, - { - "min_level": 10, - "max_level": 30, - "species": "SPECIES_TENTACOOL" - }, - { - "min_level": 10, - "max_level": 30, - "species": "SPECIES_WAILMER" - }, - { - "min_level": 25, - "max_level": 30, - "species": "SPECIES_WAILMER" - }, - { - "min_level": 30, - "max_level": 35, - "species": "SPECIES_WAILMER" - }, - { - "min_level": 20, - "max_level": 25, - "species": "SPECIES_WAILMER" - }, - { - "min_level": 35, - "max_level": 40, - "species": "SPECIES_WAILMER" - }, - { - "min_level": 40, - "max_level": 45, - "species": "SPECIES_WAILMER" - } - ] } }, { @@ -3360,6 +3401,61 @@ { "map": "MAP_ROUTE119", "base_label": "gRoute119", + "fishing_mons": { + "encounter_rate": 30, + "mons": [ + { + "min_level": 5, + "max_level": 10, + "species": "SPECIES_MAGIKARP" + }, + { + "min_level": 5, + "max_level": 10, + "species": "SPECIES_TENTACOOL" + }, + { + "min_level": 10, + "max_level": 30, + "species": "SPECIES_MAGIKARP" + }, + { + "min_level": 10, + "max_level": 30, + "species": "SPECIES_TENTACOOL" + }, + { + "min_level": 10, + "max_level": 30, + "species": "SPECIES_CARVANHA" + }, + { + "min_level": 25, + "max_level": 30, + "species": "SPECIES_CARVANHA" + }, + { + "min_level": 30, + "max_level": 35, + "species": "SPECIES_CARVANHA" + }, + { + "min_level": 20, + "max_level": 25, + "species": "SPECIES_CARVANHA" + }, + { + "min_level": 35, + "max_level": 40, + "species": "SPECIES_CARVANHA" + }, + { + "min_level": 40, + "max_level": 45, + "species": "SPECIES_CARVANHA" + } + ] + }, "land_mons": { "encounter_rate": 15, "mons": [ @@ -3454,7 +3550,11 @@ "species": "SPECIES_PELIPPER" } ] - }, + } + }, + { + "map": "MAP_ROUTE120", + "base_label": "gRoute120", "fishing_mons": { "encounter_rate": 30, "mons": [ @@ -3466,7 +3566,7 @@ { "min_level": 5, "max_level": 10, - "species": "SPECIES_TENTACOOL" + "species": "SPECIES_GOLDEEN" }, { "min_level": 10, @@ -3476,44 +3576,40 @@ { "min_level": 10, "max_level": 30, - "species": "SPECIES_TENTACOOL" + "species": "SPECIES_GOLDEEN" }, { "min_level": 10, "max_level": 30, - "species": "SPECIES_CARVANHA" + "species": "SPECIES_BARBOACH" }, { "min_level": 25, "max_level": 30, - "species": "SPECIES_CARVANHA" + "species": "SPECIES_BARBOACH" }, { "min_level": 30, "max_level": 35, - "species": "SPECIES_CARVANHA" + "species": "SPECIES_BARBOACH" }, { "min_level": 20, "max_level": 25, - "species": "SPECIES_CARVANHA" + "species": "SPECIES_BARBOACH" }, { "min_level": 35, "max_level": 40, - "species": "SPECIES_CARVANHA" + "species": "SPECIES_BARBOACH" }, { "min_level": 40, "max_level": 45, - "species": "SPECIES_CARVANHA" + "species": "SPECIES_BARBOACH" } ] - } - }, - { - "map": "MAP_ROUTE120", - "base_label": "gRoute120", + }, "land_mons": { "encounter_rate": 20, "mons": [ @@ -3608,7 +3704,11 @@ "species": "SPECIES_GOLDEEN" } ] - }, + } + }, + { + "map": "MAP_ROUTE121", + "base_label": "gRoute121", "fishing_mons": { "encounter_rate": 30, "mons": [ @@ -3620,7 +3720,7 @@ { "min_level": 5, "max_level": 10, - "species": "SPECIES_GOLDEEN" + "species": "SPECIES_TENTACOOL" }, { "min_level": 10, @@ -3630,44 +3730,40 @@ { "min_level": 10, "max_level": 30, - "species": "SPECIES_GOLDEEN" + "species": "SPECIES_TENTACOOL" }, { "min_level": 10, "max_level": 30, - "species": "SPECIES_BARBOACH" + "species": "SPECIES_WAILMER" }, { "min_level": 25, "max_level": 30, - "species": "SPECIES_BARBOACH" + "species": "SPECIES_WAILMER" }, { "min_level": 30, "max_level": 35, - "species": "SPECIES_BARBOACH" + "species": "SPECIES_WAILMER" }, { "min_level": 20, "max_level": 25, - "species": "SPECIES_BARBOACH" + "species": "SPECIES_WAILMER" }, { "min_level": 35, "max_level": 40, - "species": "SPECIES_BARBOACH" + "species": "SPECIES_WAILMER" }, { "min_level": 40, "max_level": 45, - "species": "SPECIES_BARBOACH" + "species": "SPECIES_WAILMER" } ] - } - }, - { - "map": "MAP_ROUTE121", - "base_label": "gRoute121", + }, "land_mons": { "encounter_rate": 20, "mons": [ @@ -3762,96 +3858,11 @@ "species": "SPECIES_PELIPPER" } ] - }, - "fishing_mons": { - "encounter_rate": 30, - "mons": [ - { - "min_level": 5, - "max_level": 10, - "species": "SPECIES_MAGIKARP" - }, - { - "min_level": 5, - "max_level": 10, - "species": "SPECIES_TENTACOOL" - }, - { - "min_level": 10, - "max_level": 30, - "species": "SPECIES_MAGIKARP" - }, - { - "min_level": 10, - "max_level": 30, - "species": "SPECIES_TENTACOOL" - }, - { - "min_level": 10, - "max_level": 30, - "species": "SPECIES_WAILMER" - }, - { - "min_level": 25, - "max_level": 30, - "species": "SPECIES_WAILMER" - }, - { - "min_level": 30, - "max_level": 35, - "species": "SPECIES_WAILMER" - }, - { - "min_level": 20, - "max_level": 25, - "species": "SPECIES_WAILMER" - }, - { - "min_level": 35, - "max_level": 40, - "species": "SPECIES_WAILMER" - }, - { - "min_level": 40, - "max_level": 45, - "species": "SPECIES_WAILMER" - } - ] } }, { "map": "MAP_ROUTE122", "base_label": "gRoute122", - "water_mons": { - "encounter_rate": 4, - "mons": [ - { - "min_level": 5, - "max_level": 35, - "species": "SPECIES_TENTACOOL" - }, - { - "min_level": 10, - "max_level": 30, - "species": "SPECIES_WINGULL" - }, - { - "min_level": 15, - "max_level": 25, - "species": "SPECIES_WINGULL" - }, - { - "min_level": 25, - "max_level": 30, - "species": "SPECIES_PELIPPER" - }, - { - "min_level": 25, - "max_level": 30, - "species": "SPECIES_PELIPPER" - } - ] - }, "fishing_mons": { "encounter_rate": 30, "mons": [ @@ -3906,11 +3917,96 @@ "species": "SPECIES_WAILMER" } ] + }, + "water_mons": { + "encounter_rate": 4, + "mons": [ + { + "min_level": 5, + "max_level": 35, + "species": "SPECIES_TENTACOOL" + }, + { + "min_level": 10, + "max_level": 30, + "species": "SPECIES_WINGULL" + }, + { + "min_level": 15, + "max_level": 25, + "species": "SPECIES_WINGULL" + }, + { + "min_level": 25, + "max_level": 30, + "species": "SPECIES_PELIPPER" + }, + { + "min_level": 25, + "max_level": 30, + "species": "SPECIES_PELIPPER" + } + ] } }, { "map": "MAP_ROUTE123", "base_label": "gRoute123", + "fishing_mons": { + "encounter_rate": 30, + "mons": [ + { + "min_level": 5, + "max_level": 10, + "species": "SPECIES_MAGIKARP" + }, + { + "min_level": 5, + "max_level": 10, + "species": "SPECIES_TENTACOOL" + }, + { + "min_level": 10, + "max_level": 30, + "species": "SPECIES_MAGIKARP" + }, + { + "min_level": 10, + "max_level": 30, + "species": "SPECIES_TENTACOOL" + }, + { + "min_level": 10, + "max_level": 30, + "species": "SPECIES_WAILMER" + }, + { + "min_level": 25, + "max_level": 30, + "species": "SPECIES_WAILMER" + }, + { + "min_level": 30, + "max_level": 35, + "species": "SPECIES_WAILMER" + }, + { + "min_level": 20, + "max_level": 25, + "species": "SPECIES_WAILMER" + }, + { + "min_level": 35, + "max_level": 40, + "species": "SPECIES_WAILMER" + }, + { + "min_level": 40, + "max_level": 45, + "species": "SPECIES_WAILMER" + } + ] + }, "land_mons": { "encounter_rate": 20, "mons": [ @@ -4005,61 +4101,6 @@ "species": "SPECIES_PELIPPER" } ] - }, - "fishing_mons": { - "encounter_rate": 30, - "mons": [ - { - "min_level": 5, - "max_level": 10, - "species": "SPECIES_MAGIKARP" - }, - { - "min_level": 5, - "max_level": 10, - "species": "SPECIES_TENTACOOL" - }, - { - "min_level": 10, - "max_level": 30, - "species": "SPECIES_MAGIKARP" - }, - { - "min_level": 10, - "max_level": 30, - "species": "SPECIES_TENTACOOL" - }, - { - "min_level": 10, - "max_level": 30, - "species": "SPECIES_WAILMER" - }, - { - "min_level": 25, - "max_level": 30, - "species": "SPECIES_WAILMER" - }, - { - "min_level": 30, - "max_level": 35, - "species": "SPECIES_WAILMER" - }, - { - "min_level": 20, - "max_level": 25, - "species": "SPECIES_WAILMER" - }, - { - "min_level": 35, - "max_level": 40, - "species": "SPECIES_WAILMER" - }, - { - "min_level": 40, - "max_level": 45, - "species": "SPECIES_WAILMER" - } - ] } }, { @@ -4617,36 +4658,6 @@ { "map": "MAP_ROUTE125", "base_label": "gRoute125", - "water_mons": { - "encounter_rate": 4, - "mons": [ - { - "min_level": 5, - "max_level": 35, - "species": "SPECIES_TENTACOOL" - }, - { - "min_level": 10, - "max_level": 30, - "species": "SPECIES_WINGULL" - }, - { - "min_level": 15, - "max_level": 25, - "species": "SPECIES_WINGULL" - }, - { - "min_level": 25, - "max_level": 30, - "species": "SPECIES_PELIPPER" - }, - { - "min_level": 25, - "max_level": 30, - "species": "SPECIES_PELIPPER" - } - ] - }, "fishing_mons": { "encounter_rate": 30, "mons": [ @@ -4701,41 +4712,41 @@ "species": "SPECIES_WAILMER" } ] + }, + "water_mons": { + "encounter_rate": 4, + "mons": [ + { + "min_level": 5, + "max_level": 35, + "species": "SPECIES_TENTACOOL" + }, + { + "min_level": 10, + "max_level": 30, + "species": "SPECIES_WINGULL" + }, + { + "min_level": 15, + "max_level": 25, + "species": "SPECIES_WINGULL" + }, + { + "min_level": 25, + "max_level": 30, + "species": "SPECIES_PELIPPER" + }, + { + "min_level": 25, + "max_level": 30, + "species": "SPECIES_PELIPPER" + } + ] } }, { "map": "MAP_ROUTE126", "base_label": "gRoute126", - "water_mons": { - "encounter_rate": 4, - "mons": [ - { - "min_level": 5, - "max_level": 35, - "species": "SPECIES_TENTACOOL" - }, - { - "min_level": 10, - "max_level": 30, - "species": "SPECIES_WINGULL" - }, - { - "min_level": 15, - "max_level": 25, - "species": "SPECIES_WINGULL" - }, - { - "min_level": 25, - "max_level": 30, - "species": "SPECIES_PELIPPER" - }, - { - "min_level": 25, - "max_level": 30, - "species": "SPECIES_PELIPPER" - } - ] - }, "fishing_mons": { "encounter_rate": 30, "mons": [ @@ -4790,41 +4801,41 @@ "species": "SPECIES_WAILMER" } ] + }, + "water_mons": { + "encounter_rate": 4, + "mons": [ + { + "min_level": 5, + "max_level": 35, + "species": "SPECIES_TENTACOOL" + }, + { + "min_level": 10, + "max_level": 30, + "species": "SPECIES_WINGULL" + }, + { + "min_level": 15, + "max_level": 25, + "species": "SPECIES_WINGULL" + }, + { + "min_level": 25, + "max_level": 30, + "species": "SPECIES_PELIPPER" + }, + { + "min_level": 25, + "max_level": 30, + "species": "SPECIES_PELIPPER" + } + ] } }, { "map": "MAP_ROUTE127", "base_label": "gRoute127", - "water_mons": { - "encounter_rate": 4, - "mons": [ - { - "min_level": 5, - "max_level": 35, - "species": "SPECIES_TENTACOOL" - }, - { - "min_level": 10, - "max_level": 30, - "species": "SPECIES_WINGULL" - }, - { - "min_level": 15, - "max_level": 25, - "species": "SPECIES_WINGULL" - }, - { - "min_level": 25, - "max_level": 30, - "species": "SPECIES_PELIPPER" - }, - { - "min_level": 25, - "max_level": 30, - "species": "SPECIES_PELIPPER" - } - ] - }, "fishing_mons": { "encounter_rate": 30, "mons": [ @@ -4879,11 +4890,7 @@ "species": "SPECIES_WAILMER" } ] - } - }, - { - "map": "MAP_ROUTE128", - "base_label": "gRoute128", + }, "water_mons": { "encounter_rate": 4, "mons": [ @@ -4913,7 +4920,11 @@ "species": "SPECIES_PELIPPER" } ] - }, + } + }, + { + "map": "MAP_ROUTE128", + "base_label": "gRoute128", "fishing_mons": { "encounter_rate": 30, "mons": [ @@ -4968,11 +4979,7 @@ "species": "SPECIES_WAILMER" } ] - } - }, - { - "map": "MAP_ROUTE129", - "base_label": "gRoute129", + }, "water_mons": { "encounter_rate": 4, "mons": [ @@ -4999,10 +5006,14 @@ { "min_level": 25, "max_level": 30, - "species": "SPECIES_WAILORD" + "species": "SPECIES_PELIPPER" } ] - }, + } + }, + { + "map": "MAP_ROUTE129", + "base_label": "gRoute129", "fishing_mons": { "encounter_rate": 30, "mons": [ @@ -5057,11 +5068,96 @@ "species": "SPECIES_WAILMER" } ] + }, + "water_mons": { + "encounter_rate": 4, + "mons": [ + { + "min_level": 5, + "max_level": 35, + "species": "SPECIES_TENTACOOL" + }, + { + "min_level": 10, + "max_level": 30, + "species": "SPECIES_WINGULL" + }, + { + "min_level": 15, + "max_level": 25, + "species": "SPECIES_WINGULL" + }, + { + "min_level": 25, + "max_level": 30, + "species": "SPECIES_PELIPPER" + }, + { + "min_level": 25, + "max_level": 30, + "species": "SPECIES_WAILORD" + } + ] } }, { "map": "MAP_ROUTE130", "base_label": "gRoute130", + "fishing_mons": { + "encounter_rate": 30, + "mons": [ + { + "min_level": 5, + "max_level": 10, + "species": "SPECIES_MAGIKARP" + }, + { + "min_level": 5, + "max_level": 10, + "species": "SPECIES_TENTACOOL" + }, + { + "min_level": 10, + "max_level": 30, + "species": "SPECIES_MAGIKARP" + }, + { + "min_level": 10, + "max_level": 30, + "species": "SPECIES_TENTACOOL" + }, + { + "min_level": 10, + "max_level": 30, + "species": "SPECIES_WAILMER" + }, + { + "min_level": 30, + "max_level": 35, + "species": "SPECIES_SHARPEDO" + }, + { + "min_level": 30, + "max_level": 35, + "species": "SPECIES_WAILMER" + }, + { + "min_level": 25, + "max_level": 30, + "species": "SPECIES_WAILMER" + }, + { + "min_level": 35, + "max_level": 40, + "species": "SPECIES_WAILMER" + }, + { + "min_level": 40, + "max_level": 45, + "species": "SPECIES_WAILMER" + } + ] + }, "land_mons": { "encounter_rate": 20, "mons": [ @@ -5156,7 +5252,11 @@ "species": "SPECIES_PELIPPER" } ] - }, + } + }, + { + "map": "MAP_ROUTE131", + "base_label": "gRoute131", "fishing_mons": { "encounter_rate": 30, "mons": [ @@ -5211,11 +5311,7 @@ "species": "SPECIES_WAILMER" } ] - } - }, - { - "map": "MAP_ROUTE131", - "base_label": "gRoute131", + }, "water_mons": { "encounter_rate": 4, "mons": [ @@ -5245,96 +5341,11 @@ "species": "SPECIES_PELIPPER" } ] - }, - "fishing_mons": { - "encounter_rate": 30, - "mons": [ - { - "min_level": 5, - "max_level": 10, - "species": "SPECIES_MAGIKARP" - }, - { - "min_level": 5, - "max_level": 10, - "species": "SPECIES_TENTACOOL" - }, - { - "min_level": 10, - "max_level": 30, - "species": "SPECIES_MAGIKARP" - }, - { - "min_level": 10, - "max_level": 30, - "species": "SPECIES_TENTACOOL" - }, - { - "min_level": 10, - "max_level": 30, - "species": "SPECIES_WAILMER" - }, - { - "min_level": 30, - "max_level": 35, - "species": "SPECIES_SHARPEDO" - }, - { - "min_level": 30, - "max_level": 35, - "species": "SPECIES_WAILMER" - }, - { - "min_level": 25, - "max_level": 30, - "species": "SPECIES_WAILMER" - }, - { - "min_level": 35, - "max_level": 40, - "species": "SPECIES_WAILMER" - }, - { - "min_level": 40, - "max_level": 45, - "species": "SPECIES_WAILMER" - } - ] } }, { "map": "MAP_ROUTE132", "base_label": "gRoute132", - "water_mons": { - "encounter_rate": 4, - "mons": [ - { - "min_level": 5, - "max_level": 35, - "species": "SPECIES_TENTACOOL" - }, - { - "min_level": 10, - "max_level": 30, - "species": "SPECIES_WINGULL" - }, - { - "min_level": 15, - "max_level": 25, - "species": "SPECIES_WINGULL" - }, - { - "min_level": 25, - "max_level": 30, - "species": "SPECIES_PELIPPER" - }, - { - "min_level": 25, - "max_level": 30, - "species": "SPECIES_PELIPPER" - } - ] - }, "fishing_mons": { "encounter_rate": 30, "mons": [ @@ -5389,41 +5400,41 @@ "species": "SPECIES_WAILMER" } ] + }, + "water_mons": { + "encounter_rate": 4, + "mons": [ + { + "min_level": 5, + "max_level": 35, + "species": "SPECIES_TENTACOOL" + }, + { + "min_level": 10, + "max_level": 30, + "species": "SPECIES_WINGULL" + }, + { + "min_level": 15, + "max_level": 25, + "species": "SPECIES_WINGULL" + }, + { + "min_level": 25, + "max_level": 30, + "species": "SPECIES_PELIPPER" + }, + { + "min_level": 25, + "max_level": 30, + "species": "SPECIES_PELIPPER" + } + ] } }, { "map": "MAP_ROUTE133", "base_label": "gRoute133", - "water_mons": { - "encounter_rate": 4, - "mons": [ - { - "min_level": 5, - "max_level": 35, - "species": "SPECIES_TENTACOOL" - }, - { - "min_level": 10, - "max_level": 30, - "species": "SPECIES_WINGULL" - }, - { - "min_level": 15, - "max_level": 25, - "species": "SPECIES_WINGULL" - }, - { - "min_level": 25, - "max_level": 30, - "species": "SPECIES_PELIPPER" - }, - { - "min_level": 25, - "max_level": 30, - "species": "SPECIES_PELIPPER" - } - ] - }, "fishing_mons": { "encounter_rate": 30, "mons": [ @@ -5478,41 +5489,41 @@ "species": "SPECIES_WAILMER" } ] + }, + "water_mons": { + "encounter_rate": 4, + "mons": [ + { + "min_level": 5, + "max_level": 35, + "species": "SPECIES_TENTACOOL" + }, + { + "min_level": 10, + "max_level": 30, + "species": "SPECIES_WINGULL" + }, + { + "min_level": 15, + "max_level": 25, + "species": "SPECIES_WINGULL" + }, + { + "min_level": 25, + "max_level": 30, + "species": "SPECIES_PELIPPER" + }, + { + "min_level": 25, + "max_level": 30, + "species": "SPECIES_PELIPPER" + } + ] } }, { "map": "MAP_ROUTE134", "base_label": "gRoute134", - "water_mons": { - "encounter_rate": 4, - "mons": [ - { - "min_level": 5, - "max_level": 35, - "species": "SPECIES_TENTACOOL" - }, - { - "min_level": 10, - "max_level": 30, - "species": "SPECIES_WINGULL" - }, - { - "min_level": 15, - "max_level": 25, - "species": "SPECIES_WINGULL" - }, - { - "min_level": 25, - "max_level": 30, - "species": "SPECIES_PELIPPER" - }, - { - "min_level": 25, - "max_level": 30, - "species": "SPECIES_PELIPPER" - } - ] - }, "fishing_mons": { "encounter_rate": 30, "mons": [ @@ -5567,11 +5578,7 @@ "species": "SPECIES_WAILMER" } ] - } - }, - { - "map": "MAP_ABANDONED_SHIP_HIDDEN_FLOOR_CORRIDORS", - "base_label": "gAbandonedShip_HiddenFloorCorridors", + }, "water_mons": { "encounter_rate": 4, "mons": [ @@ -5581,27 +5588,31 @@ "species": "SPECIES_TENTACOOL" }, { - "min_level": 5, - "max_level": 35, - "species": "SPECIES_TENTACOOL" + "min_level": 10, + "max_level": 30, + "species": "SPECIES_WINGULL" }, { - "min_level": 5, - "max_level": 35, - "species": "SPECIES_TENTACOOL" + "min_level": 15, + "max_level": 25, + "species": "SPECIES_WINGULL" }, { - "min_level": 5, - "max_level": 35, - "species": "SPECIES_TENTACOOL" + "min_level": 25, + "max_level": 30, + "species": "SPECIES_PELIPPER" }, { - "min_level": 30, - "max_level": 35, - "species": "SPECIES_TENTACRUEL" + "min_level": 25, + "max_level": 30, + "species": "SPECIES_PELIPPER" } ] - }, + } + }, + { + "map": "MAP_ABANDONED_SHIP_HIDDEN_FLOOR_CORRIDORS", + "base_label": "gAbandonedShip_HiddenFloorCorridors", "fishing_mons": { "encounter_rate": 20, "mons": [ @@ -5656,6 +5667,36 @@ "species": "SPECIES_TENTACRUEL" } ] + }, + "water_mons": { + "encounter_rate": 4, + "mons": [ + { + "min_level": 5, + "max_level": 35, + "species": "SPECIES_TENTACOOL" + }, + { + "min_level": 5, + "max_level": 35, + "species": "SPECIES_TENTACOOL" + }, + { + "min_level": 5, + "max_level": 35, + "species": "SPECIES_TENTACOOL" + }, + { + "min_level": 5, + "max_level": 35, + "species": "SPECIES_TENTACOOL" + }, + { + "min_level": 30, + "max_level": 35, + "species": "SPECIES_TENTACRUEL" + } + ] } }, { @@ -6006,6 +6047,61 @@ { "map": "MAP_SEAFLOOR_CAVERN_ROOM6", "base_label": "gSeafloorCavern_Room6", + "fishing_mons": { + "encounter_rate": 10, + "mons": [ + { + "min_level": 5, + "max_level": 10, + "species": "SPECIES_MAGIKARP" + }, + { + "min_level": 5, + "max_level": 10, + "species": "SPECIES_TENTACOOL" + }, + { + "min_level": 10, + "max_level": 30, + "species": "SPECIES_MAGIKARP" + }, + { + "min_level": 10, + "max_level": 30, + "species": "SPECIES_TENTACOOL" + }, + { + "min_level": 10, + "max_level": 30, + "species": "SPECIES_WAILMER" + }, + { + "min_level": 25, + "max_level": 30, + "species": "SPECIES_WAILMER" + }, + { + "min_level": 30, + "max_level": 35, + "species": "SPECIES_WAILMER" + }, + { + "min_level": 20, + "max_level": 25, + "species": "SPECIES_WAILMER" + }, + { + "min_level": 35, + "max_level": 40, + "species": "SPECIES_WAILMER" + }, + { + "min_level": 40, + "max_level": 45, + "species": "SPECIES_WAILMER" + } + ] + }, "land_mons": { "encounter_rate": 4, "mons": [ @@ -6100,66 +6196,66 @@ "species": "SPECIES_GOLBAT" } ] - }, - "fishing_mons": { - "encounter_rate": 10, - "mons": [ - { - "min_level": 5, - "max_level": 10, - "species": "SPECIES_MAGIKARP" - }, - { - "min_level": 5, - "max_level": 10, - "species": "SPECIES_TENTACOOL" - }, - { - "min_level": 10, - "max_level": 30, - "species": "SPECIES_MAGIKARP" - }, - { - "min_level": 10, - "max_level": 30, - "species": "SPECIES_TENTACOOL" - }, - { - "min_level": 10, - "max_level": 30, - "species": "SPECIES_WAILMER" - }, - { - "min_level": 25, - "max_level": 30, - "species": "SPECIES_WAILMER" - }, - { - "min_level": 30, - "max_level": 35, - "species": "SPECIES_WAILMER" - }, - { - "min_level": 20, - "max_level": 25, - "species": "SPECIES_WAILMER" - }, - { - "min_level": 35, - "max_level": 40, - "species": "SPECIES_WAILMER" - }, - { - "min_level": 40, - "max_level": 45, - "species": "SPECIES_WAILMER" - } - ] } }, { "map": "MAP_SEAFLOOR_CAVERN_ROOM7", "base_label": "gSeafloorCavern_Room7", + "fishing_mons": { + "encounter_rate": 10, + "mons": [ + { + "min_level": 5, + "max_level": 10, + "species": "SPECIES_MAGIKARP" + }, + { + "min_level": 5, + "max_level": 10, + "species": "SPECIES_TENTACOOL" + }, + { + "min_level": 10, + "max_level": 30, + "species": "SPECIES_MAGIKARP" + }, + { + "min_level": 10, + "max_level": 30, + "species": "SPECIES_TENTACOOL" + }, + { + "min_level": 10, + "max_level": 30, + "species": "SPECIES_WAILMER" + }, + { + "min_level": 25, + "max_level": 30, + "species": "SPECIES_WAILMER" + }, + { + "min_level": 30, + "max_level": 35, + "species": "SPECIES_WAILMER" + }, + { + "min_level": 20, + "max_level": 25, + "species": "SPECIES_WAILMER" + }, + { + "min_level": 35, + "max_level": 40, + "species": "SPECIES_WAILMER" + }, + { + "min_level": 40, + "max_level": 45, + "species": "SPECIES_WAILMER" + } + ] + }, "land_mons": { "encounter_rate": 4, "mons": [ @@ -6254,61 +6350,6 @@ "species": "SPECIES_GOLBAT" } ] - }, - "fishing_mons": { - "encounter_rate": 10, - "mons": [ - { - "min_level": 5, - "max_level": 10, - "species": "SPECIES_MAGIKARP" - }, - { - "min_level": 5, - "max_level": 10, - "species": "SPECIES_TENTACOOL" - }, - { - "min_level": 10, - "max_level": 30, - "species": "SPECIES_MAGIKARP" - }, - { - "min_level": 10, - "max_level": 30, - "species": "SPECIES_TENTACOOL" - }, - { - "min_level": 10, - "max_level": 30, - "species": "SPECIES_WAILMER" - }, - { - "min_level": 25, - "max_level": 30, - "species": "SPECIES_WAILMER" - }, - { - "min_level": 30, - "max_level": 35, - "species": "SPECIES_WAILMER" - }, - { - "min_level": 20, - "max_level": 25, - "species": "SPECIES_WAILMER" - }, - { - "min_level": 35, - "max_level": 40, - "species": "SPECIES_WAILMER" - }, - { - "min_level": 40, - "max_level": 45, - "species": "SPECIES_WAILMER" - } - ] } }, { @@ -6383,36 +6424,6 @@ { "map": "MAP_SEAFLOOR_CAVERN_ENTRANCE", "base_label": "gSeafloorCavern_Entrance", - "water_mons": { - "encounter_rate": 4, - "mons": [ - { - "min_level": 5, - "max_level": 35, - "species": "SPECIES_TENTACOOL" - }, - { - "min_level": 5, - "max_level": 35, - "species": "SPECIES_ZUBAT" - }, - { - "min_level": 30, - "max_level": 35, - "species": "SPECIES_ZUBAT" - }, - { - "min_level": 30, - "max_level": 35, - "species": "SPECIES_GOLBAT" - }, - { - "min_level": 30, - "max_level": 35, - "species": "SPECIES_GOLBAT" - } - ] - }, "fishing_mons": { "encounter_rate": 10, "mons": [ @@ -6467,6 +6478,36 @@ "species": "SPECIES_WAILMER" } ] + }, + "water_mons": { + "encounter_rate": 4, + "mons": [ + { + "min_level": 5, + "max_level": 35, + "species": "SPECIES_TENTACOOL" + }, + { + "min_level": 5, + "max_level": 35, + "species": "SPECIES_ZUBAT" + }, + { + "min_level": 30, + "max_level": 35, + "species": "SPECIES_ZUBAT" + }, + { + "min_level": 30, + "max_level": 35, + "species": "SPECIES_GOLBAT" + }, + { + "min_level": 30, + "max_level": 35, + "species": "SPECIES_GOLBAT" + } + ] } }, { @@ -6886,6 +6927,61 @@ { "map": "MAP_SAFARI_ZONE_SOUTHWEST", "base_label": "gSafariZone_Southwest", + "fishing_mons": { + "encounter_rate": 35, + "mons": [ + { + "min_level": 5, + "max_level": 10, + "species": "SPECIES_MAGIKARP" + }, + { + "min_level": 5, + "max_level": 10, + "species": "SPECIES_GOLDEEN" + }, + { + "min_level": 10, + "max_level": 30, + "species": "SPECIES_MAGIKARP" + }, + { + "min_level": 10, + "max_level": 25, + "species": "SPECIES_GOLDEEN" + }, + { + "min_level": 10, + "max_level": 30, + "species": "SPECIES_GOLDEEN" + }, + { + "min_level": 25, + "max_level": 30, + "species": "SPECIES_GOLDEEN" + }, + { + "min_level": 30, + "max_level": 35, + "species": "SPECIES_GOLDEEN" + }, + { + "min_level": 30, + "max_level": 35, + "species": "SPECIES_SEAKING" + }, + { + "min_level": 35, + "max_level": 40, + "species": "SPECIES_SEAKING" + }, + { + "min_level": 25, + "max_level": 30, + "species": "SPECIES_SEAKING" + } + ] + }, "land_mons": { "encounter_rate": 25, "mons": [ @@ -6980,61 +7076,6 @@ "species": "SPECIES_PSYDUCK" } ] - }, - "fishing_mons": { - "encounter_rate": 35, - "mons": [ - { - "min_level": 5, - "max_level": 10, - "species": "SPECIES_MAGIKARP" - }, - { - "min_level": 5, - "max_level": 10, - "species": "SPECIES_GOLDEEN" - }, - { - "min_level": 10, - "max_level": 30, - "species": "SPECIES_MAGIKARP" - }, - { - "min_level": 10, - "max_level": 25, - "species": "SPECIES_GOLDEEN" - }, - { - "min_level": 10, - "max_level": 30, - "species": "SPECIES_GOLDEEN" - }, - { - "min_level": 25, - "max_level": 30, - "species": "SPECIES_GOLDEEN" - }, - { - "min_level": 30, - "max_level": 35, - "species": "SPECIES_GOLDEEN" - }, - { - "min_level": 30, - "max_level": 35, - "species": "SPECIES_SEAKING" - }, - { - "min_level": 35, - "max_level": 40, - "species": "SPECIES_SEAKING" - }, - { - "min_level": 25, - "max_level": 30, - "species": "SPECIES_SEAKING" - } - ] } }, { @@ -7139,6 +7180,61 @@ { "map": "MAP_SAFARI_ZONE_NORTHWEST", "base_label": "gSafariZone_Northwest", + "fishing_mons": { + "encounter_rate": 35, + "mons": [ + { + "min_level": 5, + "max_level": 10, + "species": "SPECIES_MAGIKARP" + }, + { + "min_level": 5, + "max_level": 10, + "species": "SPECIES_GOLDEEN" + }, + { + "min_level": 10, + "max_level": 30, + "species": "SPECIES_MAGIKARP" + }, + { + "min_level": 10, + "max_level": 25, + "species": "SPECIES_GOLDEEN" + }, + { + "min_level": 10, + "max_level": 30, + "species": "SPECIES_GOLDEEN" + }, + { + "min_level": 25, + "max_level": 30, + "species": "SPECIES_GOLDEEN" + }, + { + "min_level": 30, + "max_level": 35, + "species": "SPECIES_GOLDEEN" + }, + { + "min_level": 30, + "max_level": 35, + "species": "SPECIES_SEAKING" + }, + { + "min_level": 35, + "max_level": 40, + "species": "SPECIES_SEAKING" + }, + { + "min_level": 25, + "max_level": 30, + "species": "SPECIES_SEAKING" + } + ] + }, "land_mons": { "encounter_rate": 25, "mons": [ @@ -7233,61 +7329,6 @@ "species": "SPECIES_GOLDUCK" } ] - }, - "fishing_mons": { - "encounter_rate": 35, - "mons": [ - { - "min_level": 5, - "max_level": 10, - "species": "SPECIES_MAGIKARP" - }, - { - "min_level": 5, - "max_level": 10, - "species": "SPECIES_GOLDEEN" - }, - { - "min_level": 10, - "max_level": 30, - "species": "SPECIES_MAGIKARP" - }, - { - "min_level": 10, - "max_level": 25, - "species": "SPECIES_GOLDEEN" - }, - { - "min_level": 10, - "max_level": 30, - "species": "SPECIES_GOLDEEN" - }, - { - "min_level": 25, - "max_level": 30, - "species": "SPECIES_GOLDEEN" - }, - { - "min_level": 30, - "max_level": 35, - "species": "SPECIES_GOLDEEN" - }, - { - "min_level": 30, - "max_level": 35, - "species": "SPECIES_SEAKING" - }, - { - "min_level": 35, - "max_level": 40, - "species": "SPECIES_SEAKING" - }, - { - "min_level": 25, - "max_level": 30, - "species": "SPECIES_SEAKING" - } - ] } }, { @@ -7392,6 +7433,61 @@ { "map": "MAP_VICTORY_ROAD_B2F", "base_label": "gVictoryRoad_B2F", + "fishing_mons": { + "encounter_rate": 30, + "mons": [ + { + "min_level": 5, + "max_level": 10, + "species": "SPECIES_MAGIKARP" + }, + { + "min_level": 5, + "max_level": 10, + "species": "SPECIES_GOLDEEN" + }, + { + "min_level": 10, + "max_level": 30, + "species": "SPECIES_MAGIKARP" + }, + { + "min_level": 10, + "max_level": 30, + "species": "SPECIES_GOLDEEN" + }, + { + "min_level": 10, + "max_level": 30, + "species": "SPECIES_BARBOACH" + }, + { + "min_level": 25, + "max_level": 30, + "species": "SPECIES_BARBOACH" + }, + { + "min_level": 30, + "max_level": 35, + "species": "SPECIES_BARBOACH" + }, + { + "min_level": 30, + "max_level": 35, + "species": "SPECIES_WHISCASH" + }, + { + "min_level": 35, + "max_level": 40, + "species": "SPECIES_WHISCASH" + }, + { + "min_level": 40, + "max_level": 45, + "species": "SPECIES_WHISCASH" + } + ] + }, "land_mons": { "encounter_rate": 10, "mons": [ @@ -7486,7 +7582,11 @@ "species": "SPECIES_GOLBAT" } ] - }, + } + }, + { + "map": "MAP_METEOR_FALLS_1F_1R", + "base_label": "gMeteorFalls_1F_1R", "fishing_mons": { "encounter_rate": 30, "mons": [ @@ -7526,26 +7626,22 @@ "species": "SPECIES_BARBOACH" }, { - "min_level": 30, - "max_level": 35, - "species": "SPECIES_WHISCASH" + "min_level": 20, + "max_level": 25, + "species": "SPECIES_BARBOACH" }, { "min_level": 35, "max_level": 40, - "species": "SPECIES_WHISCASH" + "species": "SPECIES_BARBOACH" }, { "min_level": 40, "max_level": 45, - "species": "SPECIES_WHISCASH" + "species": "SPECIES_BARBOACH" } ] - } - }, - { - "map": "MAP_METEOR_FALLS_1F_1R", - "base_label": "gMeteorFalls_1F_1R", + }, "land_mons": { "encounter_rate": 10, "mons": [ @@ -7640,7 +7736,11 @@ "species": "SPECIES_SOLROCK" } ] - }, + } + }, + { + "map": "MAP_METEOR_FALLS_1F_2R", + "base_label": "gMeteorFalls_1F_2R", "fishing_mons": { "encounter_rate": 30, "mons": [ @@ -7680,26 +7780,22 @@ "species": "SPECIES_BARBOACH" }, { - "min_level": 20, - "max_level": 25, - "species": "SPECIES_BARBOACH" + "min_level": 30, + "max_level": 35, + "species": "SPECIES_WHISCASH" }, { "min_level": 35, "max_level": 40, - "species": "SPECIES_BARBOACH" + "species": "SPECIES_WHISCASH" }, { "min_level": 40, "max_level": 45, - "species": "SPECIES_BARBOACH" + "species": "SPECIES_WHISCASH" } ] - } - }, - { - "map": "MAP_METEOR_FALLS_1F_2R", - "base_label": "gMeteorFalls_1F_2R", + }, "land_mons": { "encounter_rate": 10, "mons": [ @@ -7794,66 +7890,66 @@ "species": "SPECIES_SOLROCK" } ] - }, - "fishing_mons": { - "encounter_rate": 30, - "mons": [ - { - "min_level": 5, - "max_level": 10, - "species": "SPECIES_MAGIKARP" - }, - { - "min_level": 5, - "max_level": 10, - "species": "SPECIES_GOLDEEN" - }, - { - "min_level": 10, - "max_level": 30, - "species": "SPECIES_MAGIKARP" - }, - { - "min_level": 10, - "max_level": 30, - "species": "SPECIES_GOLDEEN" - }, - { - "min_level": 10, - "max_level": 30, - "species": "SPECIES_BARBOACH" - }, - { - "min_level": 25, - "max_level": 30, - "species": "SPECIES_BARBOACH" - }, - { - "min_level": 30, - "max_level": 35, - "species": "SPECIES_BARBOACH" - }, - { - "min_level": 30, - "max_level": 35, - "species": "SPECIES_WHISCASH" - }, - { - "min_level": 35, - "max_level": 40, - "species": "SPECIES_WHISCASH" - }, - { - "min_level": 40, - "max_level": 45, - "species": "SPECIES_WHISCASH" - } - ] } }, { "map": "MAP_METEOR_FALLS_B1F_1R", "base_label": "gMeteorFalls_B1F_1R", + "fishing_mons": { + "encounter_rate": 30, + "mons": [ + { + "min_level": 5, + "max_level": 10, + "species": "SPECIES_MAGIKARP" + }, + { + "min_level": 5, + "max_level": 10, + "species": "SPECIES_GOLDEEN" + }, + { + "min_level": 10, + "max_level": 30, + "species": "SPECIES_MAGIKARP" + }, + { + "min_level": 10, + "max_level": 30, + "species": "SPECIES_GOLDEEN" + }, + { + "min_level": 10, + "max_level": 30, + "species": "SPECIES_BARBOACH" + }, + { + "min_level": 25, + "max_level": 30, + "species": "SPECIES_BARBOACH" + }, + { + "min_level": 30, + "max_level": 35, + "species": "SPECIES_BARBOACH" + }, + { + "min_level": 30, + "max_level": 35, + "species": "SPECIES_WHISCASH" + }, + { + "min_level": 35, + "max_level": 40, + "species": "SPECIES_WHISCASH" + }, + { + "min_level": 40, + "max_level": 45, + "species": "SPECIES_WHISCASH" + } + ] + }, "land_mons": { "encounter_rate": 10, "mons": [ @@ -7948,61 +8044,6 @@ "species": "SPECIES_SOLROCK" } ] - }, - "fishing_mons": { - "encounter_rate": 30, - "mons": [ - { - "min_level": 5, - "max_level": 10, - "species": "SPECIES_MAGIKARP" - }, - { - "min_level": 5, - "max_level": 10, - "species": "SPECIES_GOLDEEN" - }, - { - "min_level": 10, - "max_level": 30, - "species": "SPECIES_MAGIKARP" - }, - { - "min_level": 10, - "max_level": 30, - "species": "SPECIES_GOLDEEN" - }, - { - "min_level": 10, - "max_level": 30, - "species": "SPECIES_BARBOACH" - }, - { - "min_level": 25, - "max_level": 30, - "species": "SPECIES_BARBOACH" - }, - { - "min_level": 30, - "max_level": 35, - "species": "SPECIES_BARBOACH" - }, - { - "min_level": 30, - "max_level": 35, - "species": "SPECIES_WHISCASH" - }, - { - "min_level": 35, - "max_level": 40, - "species": "SPECIES_WHISCASH" - }, - { - "min_level": 40, - "max_level": 45, - "species": "SPECIES_WHISCASH" - } - ] } }, { @@ -8146,6 +8187,61 @@ { "map": "MAP_SHOAL_CAVE_LOW_TIDE_INNER_ROOM", "base_label": "gShoalCave_LowTideInnerRoom", + "fishing_mons": { + "encounter_rate": 10, + "mons": [ + { + "min_level": 5, + "max_level": 10, + "species": "SPECIES_MAGIKARP" + }, + { + "min_level": 5, + "max_level": 10, + "species": "SPECIES_TENTACOOL" + }, + { + "min_level": 10, + "max_level": 30, + "species": "SPECIES_MAGIKARP" + }, + { + "min_level": 10, + "max_level": 30, + "species": "SPECIES_TENTACOOL" + }, + { + "min_level": 10, + "max_level": 30, + "species": "SPECIES_WAILMER" + }, + { + "min_level": 25, + "max_level": 30, + "species": "SPECIES_WAILMER" + }, + { + "min_level": 30, + "max_level": 35, + "species": "SPECIES_WAILMER" + }, + { + "min_level": 20, + "max_level": 25, + "species": "SPECIES_WAILMER" + }, + { + "min_level": 35, + "max_level": 40, + "species": "SPECIES_WAILMER" + }, + { + "min_level": 40, + "max_level": 45, + "species": "SPECIES_WAILMER" + } + ] + }, "land_mons": { "encounter_rate": 10, "mons": [ @@ -8240,66 +8336,66 @@ "species": "SPECIES_SPHEAL" } ] - }, - "fishing_mons": { - "encounter_rate": 10, - "mons": [ - { - "min_level": 5, - "max_level": 10, - "species": "SPECIES_MAGIKARP" - }, - { - "min_level": 5, - "max_level": 10, - "species": "SPECIES_TENTACOOL" - }, - { - "min_level": 10, - "max_level": 30, - "species": "SPECIES_MAGIKARP" - }, - { - "min_level": 10, - "max_level": 30, - "species": "SPECIES_TENTACOOL" - }, - { - "min_level": 10, - "max_level": 30, - "species": "SPECIES_WAILMER" - }, - { - "min_level": 25, - "max_level": 30, - "species": "SPECIES_WAILMER" - }, - { - "min_level": 30, - "max_level": 35, - "species": "SPECIES_WAILMER" - }, - { - "min_level": 20, - "max_level": 25, - "species": "SPECIES_WAILMER" - }, - { - "min_level": 35, - "max_level": 40, - "species": "SPECIES_WAILMER" - }, - { - "min_level": 40, - "max_level": 45, - "species": "SPECIES_WAILMER" - } - ] } }, { "map": "MAP_SHOAL_CAVE_LOW_TIDE_ENTRANCE_ROOM", "base_label": "gShoalCave_LowTideEntranceRoom", + "fishing_mons": { + "encounter_rate": 10, + "mons": [ + { + "min_level": 5, + "max_level": 10, + "species": "SPECIES_MAGIKARP" + }, + { + "min_level": 5, + "max_level": 10, + "species": "SPECIES_TENTACOOL" + }, + { + "min_level": 10, + "max_level": 30, + "species": "SPECIES_MAGIKARP" + }, + { + "min_level": 10, + "max_level": 30, + "species": "SPECIES_TENTACOOL" + }, + { + "min_level": 10, + "max_level": 30, + "species": "SPECIES_WAILMER" + }, + { + "min_level": 25, + "max_level": 30, + "species": "SPECIES_WAILMER" + }, + { + "min_level": 30, + "max_level": 35, + "species": "SPECIES_WAILMER" + }, + { + "min_level": 20, + "max_level": 25, + "species": "SPECIES_WAILMER" + }, + { + "min_level": 35, + "max_level": 40, + "species": "SPECIES_WAILMER" + }, + { + "min_level": 40, + "max_level": 45, + "species": "SPECIES_WAILMER" + } + ] + }, "land_mons": { "encounter_rate": 10, "mons": [ @@ -8394,96 +8490,11 @@ "species": "SPECIES_SPHEAL" } ] - }, - "fishing_mons": { - "encounter_rate": 10, - "mons": [ - { - "min_level": 5, - "max_level": 10, - "species": "SPECIES_MAGIKARP" - }, - { - "min_level": 5, - "max_level": 10, - "species": "SPECIES_TENTACOOL" - }, - { - "min_level": 10, - "max_level": 30, - "species": "SPECIES_MAGIKARP" - }, - { - "min_level": 10, - "max_level": 30, - "species": "SPECIES_TENTACOOL" - }, - { - "min_level": 10, - "max_level": 30, - "species": "SPECIES_WAILMER" - }, - { - "min_level": 25, - "max_level": 30, - "species": "SPECIES_WAILMER" - }, - { - "min_level": 30, - "max_level": 35, - "species": "SPECIES_WAILMER" - }, - { - "min_level": 20, - "max_level": 25, - "species": "SPECIES_WAILMER" - }, - { - "min_level": 35, - "max_level": 40, - "species": "SPECIES_WAILMER" - }, - { - "min_level": 40, - "max_level": 45, - "species": "SPECIES_WAILMER" - } - ] } }, { "map": "MAP_LILYCOVE_CITY", "base_label": "gLilycoveCity", - "water_mons": { - "encounter_rate": 4, - "mons": [ - { - "min_level": 5, - "max_level": 35, - "species": "SPECIES_TENTACOOL" - }, - { - "min_level": 10, - "max_level": 30, - "species": "SPECIES_WINGULL" - }, - { - "min_level": 15, - "max_level": 25, - "species": "SPECIES_WINGULL" - }, - { - "min_level": 25, - "max_level": 30, - "species": "SPECIES_PELIPPER" - }, - { - "min_level": 25, - "max_level": 30, - "species": "SPECIES_PELIPPER" - } - ] - }, "fishing_mons": { "encounter_rate": 10, "mons": [ @@ -8538,11 +8549,7 @@ "species": "SPECIES_WAILMER" } ] - } - }, - { - "map": "MAP_DEWFORD_TOWN", - "base_label": "gDewfordTown", + }, "water_mons": { "encounter_rate": 4, "mons": [ @@ -8572,7 +8579,11 @@ "species": "SPECIES_PELIPPER" } ] - }, + } + }, + { + "map": "MAP_DEWFORD_TOWN", + "base_label": "gDewfordTown", "fishing_mons": { "encounter_rate": 10, "mons": [ @@ -8627,41 +8638,41 @@ "species": "SPECIES_WAILMER" } ] + }, + "water_mons": { + "encounter_rate": 4, + "mons": [ + { + "min_level": 5, + "max_level": 35, + "species": "SPECIES_TENTACOOL" + }, + { + "min_level": 10, + "max_level": 30, + "species": "SPECIES_WINGULL" + }, + { + "min_level": 15, + "max_level": 25, + "species": "SPECIES_WINGULL" + }, + { + "min_level": 25, + "max_level": 30, + "species": "SPECIES_PELIPPER" + }, + { + "min_level": 25, + "max_level": 30, + "species": "SPECIES_PELIPPER" + } + ] } }, { "map": "MAP_SLATEPORT_CITY", "base_label": "gSlateportCity", - "water_mons": { - "encounter_rate": 4, - "mons": [ - { - "min_level": 5, - "max_level": 35, - "species": "SPECIES_TENTACOOL" - }, - { - "min_level": 10, - "max_level": 30, - "species": "SPECIES_WINGULL" - }, - { - "min_level": 15, - "max_level": 25, - "species": "SPECIES_WINGULL" - }, - { - "min_level": 25, - "max_level": 30, - "species": "SPECIES_PELIPPER" - }, - { - "min_level": 25, - "max_level": 30, - "species": "SPECIES_PELIPPER" - } - ] - }, "fishing_mons": { "encounter_rate": 10, "mons": [ @@ -8716,11 +8727,7 @@ "species": "SPECIES_WAILMER" } ] - } - }, - { - "map": "MAP_MOSSDEEP_CITY", - "base_label": "gMossdeepCity", + }, "water_mons": { "encounter_rate": 4, "mons": [ @@ -8750,7 +8757,11 @@ "species": "SPECIES_PELIPPER" } ] - }, + } + }, + { + "map": "MAP_MOSSDEEP_CITY", + "base_label": "gMossdeepCity", "fishing_mons": { "encounter_rate": 10, "mons": [ @@ -8805,41 +8816,41 @@ "species": "SPECIES_WAILMER" } ] + }, + "water_mons": { + "encounter_rate": 4, + "mons": [ + { + "min_level": 5, + "max_level": 35, + "species": "SPECIES_TENTACOOL" + }, + { + "min_level": 10, + "max_level": 30, + "species": "SPECIES_WINGULL" + }, + { + "min_level": 15, + "max_level": 25, + "species": "SPECIES_WINGULL" + }, + { + "min_level": 25, + "max_level": 30, + "species": "SPECIES_PELIPPER" + }, + { + "min_level": 25, + "max_level": 30, + "species": "SPECIES_PELIPPER" + } + ] } }, { "map": "MAP_PACIFIDLOG_TOWN", "base_label": "gPacifidlogTown", - "water_mons": { - "encounter_rate": 4, - "mons": [ - { - "min_level": 5, - "max_level": 35, - "species": "SPECIES_TENTACOOL" - }, - { - "min_level": 10, - "max_level": 30, - "species": "SPECIES_WINGULL" - }, - { - "min_level": 15, - "max_level": 25, - "species": "SPECIES_WINGULL" - }, - { - "min_level": 25, - "max_level": 30, - "species": "SPECIES_PELIPPER" - }, - { - "min_level": 25, - "max_level": 30, - "species": "SPECIES_PELIPPER" - } - ] - }, "fishing_mons": { "encounter_rate": 10, "mons": [ @@ -8894,11 +8905,7 @@ "species": "SPECIES_WAILMER" } ] - } - }, - { - "map": "MAP_EVER_GRANDE_CITY", - "base_label": "gEverGrandeCity", + }, "water_mons": { "encounter_rate": 4, "mons": [ @@ -8928,7 +8935,11 @@ "species": "SPECIES_PELIPPER" } ] - }, + } + }, + { + "map": "MAP_EVER_GRANDE_CITY", + "base_label": "gEverGrandeCity", "fishing_mons": { "encounter_rate": 10, "mons": [ @@ -8983,41 +8994,41 @@ "species": "SPECIES_WAILMER" } ] + }, + "water_mons": { + "encounter_rate": 4, + "mons": [ + { + "min_level": 5, + "max_level": 35, + "species": "SPECIES_TENTACOOL" + }, + { + "min_level": 10, + "max_level": 30, + "species": "SPECIES_WINGULL" + }, + { + "min_level": 15, + "max_level": 25, + "species": "SPECIES_WINGULL" + }, + { + "min_level": 25, + "max_level": 30, + "species": "SPECIES_PELIPPER" + }, + { + "min_level": 25, + "max_level": 30, + "species": "SPECIES_PELIPPER" + } + ] } }, { "map": "MAP_PETALBURG_CITY", "base_label": "gPetalburgCity", - "water_mons": { - "encounter_rate": 1, - "mons": [ - { - "min_level": 20, - "max_level": 30, - "species": "SPECIES_MARILL" - }, - { - "min_level": 10, - "max_level": 20, - "species": "SPECIES_MARILL" - }, - { - "min_level": 30, - "max_level": 35, - "species": "SPECIES_MARILL" - }, - { - "min_level": 5, - "max_level": 10, - "species": "SPECIES_MARILL" - }, - { - "min_level": 5, - "max_level": 10, - "species": "SPECIES_MARILL" - } - ] - }, "fishing_mons": { "encounter_rate": 10, "mons": [ @@ -9072,6 +9083,36 @@ "species": "SPECIES_CORPHISH" } ] + }, + "water_mons": { + "encounter_rate": 1, + "mons": [ + { + "min_level": 20, + "max_level": 30, + "species": "SPECIES_MARILL" + }, + { + "min_level": 10, + "max_level": 20, + "species": "SPECIES_MARILL" + }, + { + "min_level": 30, + "max_level": 35, + "species": "SPECIES_MARILL" + }, + { + "min_level": 5, + "max_level": 10, + "species": "SPECIES_MARILL" + }, + { + "min_level": 5, + "max_level": 10, + "species": "SPECIES_MARILL" + } + ] } }, { @@ -9249,36 +9290,6 @@ { "map": "MAP_SOOTOPOLIS_CITY", "base_label": "gSootopolisCity", - "water_mons": { - "encounter_rate": 1, - "mons": [ - { - "min_level": 5, - "max_level": 35, - "species": "SPECIES_MAGIKARP" - }, - { - "min_level": 10, - "max_level": 30, - "species": "SPECIES_MAGIKARP" - }, - { - "min_level": 15, - "max_level": 25, - "species": "SPECIES_MAGIKARP" - }, - { - "min_level": 25, - "max_level": 30, - "species": "SPECIES_MAGIKARP" - }, - { - "min_level": 25, - "max_level": 30, - "species": "SPECIES_MAGIKARP" - } - ] - }, "fishing_mons": { "encounter_rate": 10, "mons": [ @@ -9333,6 +9344,36 @@ "species": "SPECIES_GYARADOS" } ] + }, + "water_mons": { + "encounter_rate": 1, + "mons": [ + { + "min_level": 5, + "max_level": 35, + "species": "SPECIES_MAGIKARP" + }, + { + "min_level": 10, + "max_level": 30, + "species": "SPECIES_MAGIKARP" + }, + { + "min_level": 15, + "max_level": 25, + "species": "SPECIES_MAGIKARP" + }, + { + "min_level": 25, + "max_level": 30, + "species": "SPECIES_MAGIKARP" + }, + { + "min_level": 25, + "max_level": 30, + "species": "SPECIES_MAGIKARP" + } + ] } }, { @@ -9476,6 +9517,61 @@ { "map": "MAP_SAFARI_ZONE_SOUTHEAST", "base_label": "gSafariZone_Southeast", + "fishing_mons": { + "encounter_rate": 35, + "mons": [ + { + "min_level": 25, + "max_level": 30, + "species": "SPECIES_MAGIKARP" + }, + { + "min_level": 25, + "max_level": 30, + "species": "SPECIES_GOLDEEN" + }, + { + "min_level": 25, + "max_level": 30, + "species": "SPECIES_MAGIKARP" + }, + { + "min_level": 25, + "max_level": 30, + "species": "SPECIES_GOLDEEN" + }, + { + "min_level": 30, + "max_level": 35, + "species": "SPECIES_REMORAID" + }, + { + "min_level": 25, + "max_level": 30, + "species": "SPECIES_GOLDEEN" + }, + { + "min_level": 25, + "max_level": 30, + "species": "SPECIES_REMORAID" + }, + { + "min_level": 30, + "max_level": 35, + "species": "SPECIES_REMORAID" + }, + { + "min_level": 30, + "max_level": 35, + "species": "SPECIES_REMORAID" + }, + { + "min_level": 35, + "max_level": 40, + "species": "SPECIES_OCTILLERY" + } + ] + }, "land_mons": { "encounter_rate": 25, "mons": [ @@ -9570,61 +9666,6 @@ "species": "SPECIES_QUAGSIRE" } ] - }, - "fishing_mons": { - "encounter_rate": 35, - "mons": [ - { - "min_level": 25, - "max_level": 30, - "species": "SPECIES_MAGIKARP" - }, - { - "min_level": 25, - "max_level": 30, - "species": "SPECIES_GOLDEEN" - }, - { - "min_level": 25, - "max_level": 30, - "species": "SPECIES_MAGIKARP" - }, - { - "min_level": 25, - "max_level": 30, - "species": "SPECIES_GOLDEEN" - }, - { - "min_level": 30, - "max_level": 35, - "species": "SPECIES_REMORAID" - }, - { - "min_level": 25, - "max_level": 30, - "species": "SPECIES_GOLDEEN" - }, - { - "min_level": 25, - "max_level": 30, - "species": "SPECIES_REMORAID" - }, - { - "min_level": 30, - "max_level": 35, - "species": "SPECIES_REMORAID" - }, - { - "min_level": 30, - "max_level": 35, - "species": "SPECIES_REMORAID" - }, - { - "min_level": 35, - "max_level": 40, - "species": "SPECIES_OCTILLERY" - } - ] } }, { @@ -11454,8 +11495,6 @@ ] }, { - "label": "gBattlePyramidWildMonHeaders", - "for_maps": false, "encounters": [ { "base_label": "gBattlePyramid_1", @@ -11463,63 +11502,63 @@ "encounter_rate": 4, "mons": [ { - "min_level": 5, "max_level": 5, + "min_level": 5, "species": "SPECIES_BULBASAUR" }, { - "min_level": 5, "max_level": 5, + "min_level": 5, "species": "SPECIES_BULBASAUR" }, { - "min_level": 5, "max_level": 5, + "min_level": 5, "species": "SPECIES_BULBASAUR" }, { - "min_level": 5, "max_level": 5, + "min_level": 5, "species": "SPECIES_BULBASAUR" }, { - "min_level": 5, "max_level": 5, + "min_level": 5, "species": "SPECIES_IVYSAUR" }, { - "min_level": 5, "max_level": 5, + "min_level": 5, "species": "SPECIES_IVYSAUR" }, { - "min_level": 5, "max_level": 5, + "min_level": 5, "species": "SPECIES_VENUSAUR" }, { - "min_level": 5, "max_level": 5, + "min_level": 5, "species": "SPECIES_VENUSAUR" }, { - "min_level": 5, "max_level": 5, + "min_level": 5, "species": "SPECIES_VENUSAUR" }, { - "min_level": 5, "max_level": 5, + "min_level": 5, "species": "SPECIES_CHARMANDER" }, { - "min_level": 5, "max_level": 5, + "min_level": 5, "species": "SPECIES_VENUSAUR" }, { - "min_level": 5, "max_level": 5, + "min_level": 5, "species": "SPECIES_CHARMANDER" } ] @@ -11531,63 +11570,63 @@ "encounter_rate": 4, "mons": [ { - "min_level": 5, "max_level": 5, + "min_level": 5, "species": "SPECIES_IVYSAUR" }, { - "min_level": 5, "max_level": 5, + "min_level": 5, "species": "SPECIES_IVYSAUR" }, { - "min_level": 5, "max_level": 5, + "min_level": 5, "species": "SPECIES_IVYSAUR" }, { - "min_level": 5, "max_level": 5, + "min_level": 5, "species": "SPECIES_IVYSAUR" }, { - "min_level": 5, "max_level": 5, + "min_level": 5, "species": "SPECIES_VENUSAUR" }, { - "min_level": 5, "max_level": 5, + "min_level": 5, "species": "SPECIES_VENUSAUR" }, { - "min_level": 5, "max_level": 5, + "min_level": 5, "species": "SPECIES_CHARMANDER" }, { - "min_level": 5, "max_level": 5, + "min_level": 5, "species": "SPECIES_CHARMANDER" }, { - "min_level": 5, "max_level": 5, + "min_level": 5, "species": "SPECIES_CHARMANDER" }, { - "min_level": 5, "max_level": 5, + "min_level": 5, "species": "SPECIES_CHARMELEON" }, { - "min_level": 5, "max_level": 5, + "min_level": 5, "species": "SPECIES_CHARMELEON" }, { - "min_level": 5, "max_level": 5, + "min_level": 5, "species": "SPECIES_CHARMANDER" } ] @@ -11599,63 +11638,63 @@ "encounter_rate": 4, "mons": [ { - "min_level": 5, "max_level": 5, + "min_level": 5, "species": "SPECIES_VENUSAUR" }, { - "min_level": 5, "max_level": 5, + "min_level": 5, "species": "SPECIES_VENUSAUR" }, { - "min_level": 5, "max_level": 5, + "min_level": 5, "species": "SPECIES_VENUSAUR" }, { - "min_level": 5, "max_level": 5, + "min_level": 5, "species": "SPECIES_VENUSAUR" }, { - "min_level": 5, "max_level": 5, + "min_level": 5, "species": "SPECIES_CHARMANDER" }, { - "min_level": 5, "max_level": 5, + "min_level": 5, "species": "SPECIES_CHARMANDER" }, { - "min_level": 5, "max_level": 5, + "min_level": 5, "species": "SPECIES_CHARMELEON" }, { - "min_level": 5, "max_level": 5, + "min_level": 5, "species": "SPECIES_CHARMELEON" }, { - "min_level": 5, "max_level": 5, + "min_level": 5, "species": "SPECIES_CHARMELEON" }, { - "min_level": 5, "max_level": 5, + "min_level": 5, "species": "SPECIES_CHARIZARD" }, { - "min_level": 5, "max_level": 5, + "min_level": 5, "species": "SPECIES_CHARMELEON" }, { - "min_level": 5, "max_level": 5, + "min_level": 5, "species": "SPECIES_CHARIZARD" } ] @@ -11667,63 +11706,63 @@ "encounter_rate": 4, "mons": [ { - "min_level": 5, "max_level": 5, + "min_level": 5, "species": "SPECIES_CHARMANDER" }, { - "min_level": 5, "max_level": 5, + "min_level": 5, "species": "SPECIES_CHARMANDER" }, { - "min_level": 5, "max_level": 5, + "min_level": 5, "species": "SPECIES_CHARMANDER" }, { - "min_level": 5, "max_level": 5, + "min_level": 5, "species": "SPECIES_CHARMANDER" }, { - "min_level": 5, "max_level": 5, + "min_level": 5, "species": "SPECIES_CHARMELEON" }, { - "min_level": 5, "max_level": 5, + "min_level": 5, "species": "SPECIES_CHARMELEON" }, { - "min_level": 5, "max_level": 5, + "min_level": 5, "species": "SPECIES_CHARIZARD" }, { - "min_level": 5, "max_level": 5, + "min_level": 5, "species": "SPECIES_CHARIZARD" }, { - "min_level": 5, "max_level": 5, + "min_level": 5, "species": "SPECIES_CHARIZARD" }, { - "min_level": 5, "max_level": 5, + "min_level": 5, "species": "SPECIES_SQUIRTLE" }, { - "min_level": 5, "max_level": 5, + "min_level": 5, "species": "SPECIES_CHARIZARD" }, { - "min_level": 5, "max_level": 5, + "min_level": 5, "species": "SPECIES_SQUIRTLE" } ] @@ -11735,63 +11774,63 @@ "encounter_rate": 4, "mons": [ { - "min_level": 5, "max_level": 5, + "min_level": 5, "species": "SPECIES_CHARMELEON" }, { - "min_level": 5, "max_level": 5, + "min_level": 5, "species": "SPECIES_CHARMELEON" }, { - "min_level": 5, "max_level": 5, + "min_level": 5, "species": "SPECIES_CHARMELEON" }, { - "min_level": 5, "max_level": 5, + "min_level": 5, "species": "SPECIES_CHARMELEON" }, { - "min_level": 5, "max_level": 5, + "min_level": 5, "species": "SPECIES_CHARIZARD" }, { - "min_level": 5, "max_level": 5, + "min_level": 5, "species": "SPECIES_CHARIZARD" }, { - "min_level": 5, "max_level": 5, + "min_level": 5, "species": "SPECIES_SQUIRTLE" }, { - "min_level": 5, "max_level": 5, + "min_level": 5, "species": "SPECIES_SQUIRTLE" }, { - "min_level": 5, "max_level": 5, + "min_level": 5, "species": "SPECIES_SQUIRTLE" }, { - "min_level": 5, "max_level": 5, + "min_level": 5, "species": "SPECIES_WARTORTLE" }, { - "min_level": 5, "max_level": 5, + "min_level": 5, "species": "SPECIES_SQUIRTLE" }, { - "min_level": 5, "max_level": 5, + "min_level": 5, "species": "SPECIES_WARTORTLE" } ] @@ -11803,63 +11842,63 @@ "encounter_rate": 4, "mons": [ { - "min_level": 5, "max_level": 5, + "min_level": 5, "species": "SPECIES_CHARIZARD" }, { - "min_level": 5, "max_level": 5, + "min_level": 5, "species": "SPECIES_CHARIZARD" }, { - "min_level": 5, "max_level": 5, + "min_level": 5, "species": "SPECIES_CHARIZARD" }, { - "min_level": 5, "max_level": 5, + "min_level": 5, "species": "SPECIES_CHARMELEON" }, { - "min_level": 5, "max_level": 5, + "min_level": 5, "species": "SPECIES_SQUIRTLE" }, { - "min_level": 5, "max_level": 5, + "min_level": 5, "species": "SPECIES_SQUIRTLE" }, { - "min_level": 5, "max_level": 5, + "min_level": 5, "species": "SPECIES_WARTORTLE" }, { - "min_level": 5, "max_level": 5, + "min_level": 5, "species": "SPECIES_WARTORTLE" }, { - "min_level": 5, "max_level": 5, + "min_level": 5, "species": "SPECIES_WARTORTLE" }, { - "min_level": 5, "max_level": 5, + "min_level": 5, "species": "SPECIES_WARTORTLE" }, { - "min_level": 5, "max_level": 5, + "min_level": 5, "species": "SPECIES_WARTORTLE" }, { - "min_level": 5, "max_level": 5, + "min_level": 5, "species": "SPECIES_WARTORTLE" } ] @@ -11871,73 +11910,73 @@ "encounter_rate": 8, "mons": [ { - "min_level": 5, "max_level": 5, + "min_level": 5, "species": "SPECIES_WARTORTLE" }, { - "min_level": 5, "max_level": 5, + "min_level": 5, "species": "SPECIES_WARTORTLE" }, { - "min_level": 5, "max_level": 5, + "min_level": 5, "species": "SPECIES_SQUIRTLE" }, { - "min_level": 5, "max_level": 5, + "min_level": 5, "species": "SPECIES_SQUIRTLE" }, { - "min_level": 5, "max_level": 5, + "min_level": 5, "species": "SPECIES_SQUIRTLE" }, { - "min_level": 5, "max_level": 5, + "min_level": 5, "species": "SPECIES_CHARIZARD" }, { - "min_level": 5, "max_level": 5, + "min_level": 5, "species": "SPECIES_CHARIZARD" }, { - "min_level": 5, "max_level": 5, + "min_level": 5, "species": "SPECIES_CHARIZARD" }, { - "min_level": 5, "max_level": 5, + "min_level": 5, "species": "SPECIES_CHARMELEON" }, { - "min_level": 5, "max_level": 5, + "min_level": 5, "species": "SPECIES_CHARMELEON" }, { - "min_level": 5, "max_level": 5, + "min_level": 5, "species": "SPECIES_CHARMELEON" }, { - "min_level": 5, "max_level": 5, + "min_level": 5, "species": "SPECIES_CHARMELEON" } ] } } - ] + ], + "for_maps": false, + "label": "gBattlePyramidWildMonHeaders" }, { - "label": "gBattlePikeWildMonHeaders", - "for_maps": false, "encounters": [ { "base_label": "gBattlePike_1", @@ -11945,63 +11984,63 @@ "encounter_rate": 10, "mons": [ { - "min_level": 5, "max_level": 5, + "min_level": 5, "species": "SPECIES_SEVIPER" }, { - "min_level": 5, "max_level": 5, + "min_level": 5, "species": "SPECIES_MILOTIC" }, { - "min_level": 5, "max_level": 5, + "min_level": 5, "species": "SPECIES_DUSCLOPS" }, { - "min_level": 5, "max_level": 5, + "min_level": 5, "species": "SPECIES_DUSCLOPS" }, { - "min_level": 5, "max_level": 5, + "min_level": 5, "species": "SPECIES_DUSCLOPS" }, { - "min_level": 5, "max_level": 5, + "min_level": 5, "species": "SPECIES_DUSCLOPS" }, { - "min_level": 5, "max_level": 5, + "min_level": 5, "species": "SPECIES_SEVIPER" }, { - "min_level": 5, "max_level": 5, + "min_level": 5, "species": "SPECIES_MILOTIC" }, { - "min_level": 5, "max_level": 5, + "min_level": 5, "species": "SPECIES_DUSCLOPS" }, { - "min_level": 5, "max_level": 5, + "min_level": 5, "species": "SPECIES_DUSCLOPS" }, { - "min_level": 5, "max_level": 5, + "min_level": 5, "species": "SPECIES_SEVIPER" }, { - "min_level": 5, "max_level": 5, + "min_level": 5, "species": "SPECIES_MILOTIC" } ] @@ -12013,63 +12052,63 @@ "encounter_rate": 10, "mons": [ { - "min_level": 5, "max_level": 5, + "min_level": 5, "species": "SPECIES_SEVIPER" }, { - "min_level": 5, "max_level": 5, + "min_level": 5, "species": "SPECIES_MILOTIC" }, { - "min_level": 5, "max_level": 5, + "min_level": 5, "species": "SPECIES_ELECTRODE" }, { - "min_level": 5, "max_level": 5, + "min_level": 5, "species": "SPECIES_ELECTRODE" }, { - "min_level": 5, "max_level": 5, + "min_level": 5, "species": "SPECIES_ELECTRODE" }, { - "min_level": 5, "max_level": 5, + "min_level": 5, "species": "SPECIES_ELECTRODE" }, { - "min_level": 5, "max_level": 5, + "min_level": 5, "species": "SPECIES_SEVIPER" }, { - "min_level": 5, "max_level": 5, + "min_level": 5, "species": "SPECIES_MILOTIC" }, { - "min_level": 5, "max_level": 5, + "min_level": 5, "species": "SPECIES_ELECTRODE" }, { - "min_level": 5, "max_level": 5, + "min_level": 5, "species": "SPECIES_ELECTRODE" }, { - "min_level": 5, "max_level": 5, + "min_level": 5, "species": "SPECIES_SEVIPER" }, { - "min_level": 5, "max_level": 5, + "min_level": 5, "species": "SPECIES_MILOTIC" } ] @@ -12081,63 +12120,63 @@ "encounter_rate": 10, "mons": [ { - "min_level": 5, "max_level": 5, + "min_level": 5, "species": "SPECIES_SEVIPER" }, { - "min_level": 5, "max_level": 5, + "min_level": 5, "species": "SPECIES_MILOTIC" }, { - "min_level": 5, "max_level": 5, + "min_level": 5, "species": "SPECIES_BRELOOM" }, { - "min_level": 5, "max_level": 5, + "min_level": 5, "species": "SPECIES_BRELOOM" }, { - "min_level": 5, "max_level": 5, + "min_level": 5, "species": "SPECIES_BRELOOM" }, { - "min_level": 5, "max_level": 5, + "min_level": 5, "species": "SPECIES_BRELOOM" }, { - "min_level": 5, "max_level": 5, + "min_level": 5, "species": "SPECIES_SEVIPER" }, { - "min_level": 5, "max_level": 5, + "min_level": 5, "species": "SPECIES_MILOTIC" }, { - "min_level": 5, "max_level": 5, + "min_level": 5, "species": "SPECIES_BRELOOM" }, { - "min_level": 5, "max_level": 5, + "min_level": 5, "species": "SPECIES_BRELOOM" }, { - "min_level": 5, "max_level": 5, + "min_level": 5, "species": "SPECIES_SEVIPER" }, { - "min_level": 5, "max_level": 5, + "min_level": 5, "species": "SPECIES_MILOTIC" } ] @@ -12149,69 +12188,71 @@ "encounter_rate": 10, "mons": [ { - "min_level": 5, "max_level": 5, + "min_level": 5, "species": "SPECIES_SEVIPER" }, { - "min_level": 5, "max_level": 5, + "min_level": 5, "species": "SPECIES_MILOTIC" }, { - "min_level": 5, "max_level": 5, + "min_level": 5, "species": "SPECIES_WOBBUFFET" }, { - "min_level": 5, "max_level": 5, + "min_level": 5, "species": "SPECIES_WOBBUFFET" }, { - "min_level": 5, "max_level": 5, + "min_level": 5, "species": "SPECIES_WOBBUFFET" }, { - "min_level": 5, "max_level": 5, + "min_level": 5, "species": "SPECIES_WOBBUFFET" }, { - "min_level": 5, "max_level": 5, + "min_level": 5, "species": "SPECIES_SEVIPER" }, { - "min_level": 5, "max_level": 5, + "min_level": 5, "species": "SPECIES_MILOTIC" }, { - "min_level": 5, "max_level": 5, + "min_level": 5, "species": "SPECIES_WOBBUFFET" }, { - "min_level": 5, "max_level": 5, + "min_level": 5, "species": "SPECIES_WOBBUFFET" }, { - "min_level": 5, "max_level": 5, + "min_level": 5, "species": "SPECIES_SEVIPER" }, { - "min_level": 5, "max_level": 5, + "min_level": 5, "species": "SPECIES_MILOTIC" } ] } } - ] + ], + "for_maps": false, + "label": "gBattlePikeWildMonHeaders" } ] } diff --git a/src/event_object_movement.c b/src/event_object_movement.c index 1a7d08db2..cf3a030b6 100644 --- a/src/event_object_movement.c +++ b/src/event_object_movement.c @@ -133,6 +133,8 @@ static void oamt_npc_ministep_reset(struct Sprite *, u8, u8); static void InitSpriteForFigure8Anim(struct Sprite *sprite); static bool8 AnimateSpriteInFigure8(struct Sprite *sprite); static void UpdateObjectEventSprite(struct Sprite *); +static void UpdateObjectEventSpriteSubpriorityAndVisibility(struct Sprite *); +u8 GetDirectionToFace(s16 x1, s16 y1, s16 x2, s16 y2); const u8 gReflectionEffectPaletteMap[] = {1, 1, 6, 7, 8, 9, 6, 7, 8, 9, 11, 11, 0, 0, 0, 0}; @@ -230,6 +232,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, }; const u8 gRangedMovementTypes[] = { @@ -436,7 +439,8 @@ 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_MARSHTOMP 0x1124 +#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" @@ -446,6 +450,7 @@ const u8 gInitialMovementTypeFacingDirections[] = { #include "data/object_events/object_event_subsprites.h" #include "data/object_events/object_event_graphics_info.h" +<<<<<<< HEAD static const struct SpritePalette sObjectEventSpritePalettes[] = { {gObjectEventPal_Npc1, OBJ_EVENT_PAL_TAG_NPC_1}, {gObjectEventPal_Npc2, OBJ_EVENT_PAL_TAG_NPC_2}, @@ -483,6 +488,46 @@ static const struct SpritePalette sObjectEventSpritePalettes[] = { {gObjectEventPal_RubySapphireBrendan, OBJ_EVENT_PAL_TAG_RS_BRENDAN}, {gObjectEventPal_RubySapphireMay, OBJ_EVENT_PAL_TAG_RS_MAY}, {NULL, 0x0000}, +======= +const struct SpritePalette sObjectEventSpritePalettes[] = { + {gObjectEventPalette0, OBJ_EVENT_PAL_TAG_0}, + {gObjectEventPalette1, OBJ_EVENT_PAL_TAG_1}, + {gObjectEventPalette2, OBJ_EVENT_PAL_TAG_2}, + {gObjectEventPalette3, OBJ_EVENT_PAL_TAG_3}, + {gObjectEventPalette4, OBJ_EVENT_PAL_TAG_4}, + {gObjectEventPalette5, OBJ_EVENT_PAL_TAG_5}, + {gObjectEventPalette6, OBJ_EVENT_PAL_TAG_6}, + {gObjectEventPalette7, OBJ_EVENT_PAL_TAG_7}, + {gObjectEventPalette8, OBJ_EVENT_PAL_TAG_8}, + {gObjectEventPalette9, OBJ_EVENT_PAL_TAG_9}, + {gObjectEventPalette10, OBJ_EVENT_PAL_TAG_10}, + {gObjectEventPalette11, OBJ_EVENT_PAL_TAG_11}, + {gObjectEventPalette12, OBJ_EVENT_PAL_TAG_12}, + {gObjectEventPalette13, OBJ_EVENT_PAL_TAG_13}, + {gObjectEventPalette14, OBJ_EVENT_PAL_TAG_14}, + {gObjectEventPalette15, OBJ_EVENT_PAL_TAG_15}, + {gObjectEventPalette16, OBJ_EVENT_PAL_TAG_16}, + {gObjectEventPalette17, OBJ_EVENT_PAL_TAG_17}, + {gObjectEventPalette18, OBJ_EVENT_PAL_TAG_18}, + {gObjectEventPalette19, OBJ_EVENT_PAL_TAG_19}, + {gObjectEventPalette20, OBJ_EVENT_PAL_TAG_20}, + {gObjectEventPalette21, OBJ_EVENT_PAL_TAG_21}, + {gObjectEventPalette22, OBJ_EVENT_PAL_TAG_22}, + {gObjectEventPalette23, OBJ_EVENT_PAL_TAG_23}, + {gObjectEventPalette24, OBJ_EVENT_PAL_TAG_24}, + {gObjectEventPalette25, OBJ_EVENT_PAL_TAG_25}, + {gObjectEventPalette26, OBJ_EVENT_PAL_TAG_26}, + {gObjectEventPalette27, OBJ_EVENT_PAL_TAG_27}, + {gObjectEventPalette28, OBJ_EVENT_PAL_TAG_28}, + {gObjectEventPalette29, OBJ_EVENT_PAL_TAG_29}, + {gObjectEventPalette30, OBJ_EVENT_PAL_TAG_30}, + {gObjectEventPalette31, OBJ_EVENT_PAL_TAG_31}, + {gObjectEventPalette32, OBJ_EVENT_PAL_TAG_32}, + {gObjectEventPalette33, OBJ_EVENT_PAL_TAG_33}, + {gObjectEventPalette34, OBJ_EVENT_PAL_TAG_34}, + {gObjectEventPaletteMarshtomp, OBJ_EVENT_PAL_TAG_MARSHTOMP}, + {NULL, 0x0000}, +>>>>>>> 43d2595b3 (Testing follower pokemon.) }; static const u16 sReflectionPaletteTags_Brendan[] = { @@ -1406,27 +1451,31 @@ static u8 TrySetupObjectEventSprite(struct ObjectEventTemplate *objectEventTempl return objectEventId; } -static u8 TrySpawnObjectEventTemplate(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; +static u8 +TrySpawnObjectEventTemplate(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; - graphicsInfo = GetObjectEventGraphicsInfo(objectEventTemplate->graphicsId); - MakeObjectTemplateFromObjectEventTemplate(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; + graphicsInfo = GetObjectEventGraphicsInfo(objectEventTemplate->graphicsId); + MakeObjectTemplateFromObjectEventTemplate(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; - gSprites[gObjectEvents[objectEventId].spriteId].images = graphicsInfo->images; - if (subspriteTables) - SetSubspriteTables(&gSprites[gObjectEvents[objectEventId].spriteId], subspriteTables); + gSprites[gObjectEvents[objectEventId].spriteId].images = graphicsInfo->images; + if (subspriteTables) + SetSubspriteTables(&gSprites[gObjectEvents[objectEventId].spriteId], + subspriteTables); - return objectEventId; + return objectEventId; } u8 SpawnSpecialObjectEvent(struct ObjectEventTemplate *objectEventTemplate) @@ -1571,6 +1620,24 @@ u8 CreateObjectSprite(u8 graphicsId, u8 a1, s16 x, s16 y, u8 z, u8 direction) return spriteId; } +u8 SpawnFollowingPokemon(void) { + u8 objectEventId; + struct ObjectEventTemplate template = {0}; + + template.localId = 0xFE; + template.graphicsId = OBJ_EVENT_GFX_MARSHTOMP; + template.x = gSaveBlock1Ptr->pos.x; + template.y = gSaveBlock1Ptr->pos.y; + template.elevation = 5; + template.movementType = MOVEMENT_TYPE_FOLLOW_PLAYER; + template.trainerType = 0xFE; + template.script = NULL; + objectEventId = SpawnSpecialObjectEvent(&template); + gObjectEvents[objectEventId].invisible = TRUE; + gObjectEvents[objectEventId].hasShadow = TRUE; + return objectEventId; +} + void TrySpawnObjectEvents(s16 cameraX, s16 cameraY) { u8 i; @@ -1876,7 +1943,7 @@ const struct ObjectEventGraphicsInfo *GetObjectEventGraphicsInfo(u8 graphicsId) { graphicsId = OBJ_EVENT_GFX_NINJA_BOY; } - + return gObjectEventGraphicsInfoPointers[graphicsId]; } @@ -4420,6 +4487,201 @@ bool8 CopyablePlayerMovement_Jump(struct ObjectEvent *objectEvent, struct Sprite return TRUE; } +movement_type_def(MovementType_FollowPlayer, gMovementTypeFuncs_FollowPlayer) + +bool8 MovementType_FollowPlayer_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite) +{ + ClearObjectEventMovement(objectEvent, sprite); + if (TestPlayerAvatarFlags(PLAYER_AVATAR_FLAG_SURFING | PLAYER_AVATAR_FLAG_ACRO_BIKE | PLAYER_AVATAR_FLAG_MACH_BIKE)) { + objectEvent->invisible = TRUE; + MoveObjectEventToMapCoords(objectEvent, gObjectEvents[gPlayerAvatar.objectEventId].currentCoords.x, gObjectEvents[gPlayerAvatar.objectEventId].currentCoords.y); + return FALSE; + } + sprite->data[1] = 1; + return TRUE; +} + +bool8 MovementType_FollowPlayer_Step1(struct ObjectEvent *objectEvent, struct Sprite *sprite) +{ + if (gObjectEvents[gPlayerAvatar.objectEventId].movementActionId == 0xFF || gPlayerAvatar.tileTransitionState == T_TILE_CENTER) + { + return FALSE; + } + return gFollowPlayerMovementFuncs[PlayerGetCopyableMovement()](objectEvent, sprite, GetPlayerMovementDirection(), NULL); +} + +bool8 MovementType_FollowPlayer_Step2(struct ObjectEvent *objectEvent, struct Sprite *sprite) +{ + if (ObjectEventExecSingleMovementAction(objectEvent, sprite)) + { + objectEvent->singleMovementActive = 0; + sprite->data[1] = 1; + } + return FALSE; +} + +bool8 FollowablePlayerMovement_Idle(struct ObjectEvent *objectEvent, struct Sprite *sprite, u8 playerDirection, bool8 tileCallback(u8)) +{ + if (!objectEvent->singleMovementActive) { + ObjectEventSetSingleMovement(objectEvent, sprite, GetWalkInPlaceNormalMovementAction(objectEvent->facingDirection)); + objectEvent->singleMovementActive = 1; + return TRUE; + } + if (ObjectEventExecSingleMovementAction(objectEvent, sprite)) { + objectEvent->singleMovementActive = 0; + } + return FALSE; +} + +bool8 FollowablePlayerMovement_GoSpeed0(struct ObjectEvent *objectEvent, struct Sprite *sprite, u8 playerDirection, bool8 tileCallback(u8)) +{ + u32 direction; + s16 x; + s16 y; + s16 targetX; + s16 targetY; + u32 *debugPtr; + debugPtr = (u32*) 0x0203d000; + targetX = gObjectEvents[gPlayerAvatar.objectEventId].previousCoords.x; + targetY = gObjectEvents[gPlayerAvatar.objectEventId].previousCoords.y; + x = gObjectEvents[gPlayerAvatar.objectEventId].currentCoords.x; + y = gObjectEvents[gPlayerAvatar.objectEventId].currentCoords.y; + *debugPtr = (u32) x + (y << 16); + *(debugPtr + 1) = (u32) targetX + (targetY << 16); + if (x == targetX && y == targetY) { // don't move if the player collided + return FALSE; + } + x = objectEvent->currentCoords.x; + y = objectEvent->currentCoords.y; + *(debugPtr + 2) = (u32) x + (y << 16); + if (x == targetX && y == targetY) { // don't move if already in the player's last position + return FALSE; + } + + ClearObjectEventMovement(objectEvent, sprite); + // Change state to invisible + if (TestPlayerAvatarFlags(PLAYER_AVATAR_FLAG_SURFING | PLAYER_AVATAR_FLAG_ACRO_BIKE | PLAYER_AVATAR_FLAG_MACH_BIKE)) { + objectEvent->invisible = TRUE; + sprite->data[1] = 0; + return FALSE; + } + objectEvent->invisible = FALSE; + direction = GetDirectionToFace(x, y, targetX, targetY); + ObjectEventMoveDestCoords(objectEvent, direction, &x, &y); + if (TestPlayerAvatarFlags(PLAYER_AVATAR_FLAG_DASH)) { // Set follow speed accordingly + ObjectEventSetSingleMovement(objectEvent, sprite, GetWalkFastMovementAction(direction)); + } else { + ObjectEventSetSingleMovement(objectEvent, sprite, GetWalkNormalMovementAction(direction)); + } + objectEvent->singleMovementActive = 1; + sprite->data[1] = 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 = state_to_direction(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->data[1] = 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 = state_to_direction(gInitialMovementTypeFacingDirections[objectEvent->movementType], objectEvent->directionSequenceIndex, direction); + ObjectEventMoveDestCoords(objectEvent, direction, &x, &y); + ObjectEventSetSingleMovement(objectEvent, sprite, GetWalkFastestMovementAction(direction)); + if (GetCollisionAtCoords(objectEvent, x, y, direction) || (tileCallback != NULL && !tileCallback(MapGridGetMetatileBehaviorAt(x, y)))) + { + ObjectEventSetSingleMovement(objectEvent, sprite, GetFaceDirectionMovementAction(direction)); + } + objectEvent->singleMovementActive = TRUE; + sprite->data[1] = 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 = state_to_direction(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->data[1] = 2; + return TRUE; +} + +bool8 fph_IM_DIFFERENT(struct ObjectEvent *objectEvent, struct Sprite *sprite, u8 playerDirection, bool8 tileCallback(u8)) +{ + u32 direction; + + direction = playerDirection; + direction = state_to_direction(gInitialMovementTypeFacingDirections[objectEvent->movementType], objectEvent->directionSequenceIndex, direction); + ObjectEventSetSingleMovement(objectEvent, sprite, GetJumpInPlaceMovementAction(direction)); + objectEvent->singleMovementActive = TRUE; + sprite->data[1] = 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 = state_to_direction(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->data[1] = 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->data[1] = 2; + return TRUE; +} + movement_type_def(MovementType_CopyPlayerInGrass, gMovementTypeFuncs_CopyPlayerInGrass) bool8 MovementType_CopyPlayerInGrass_Step1(struct ObjectEvent *objectEvent, struct Sprite *sprite) @@ -4828,7 +5090,7 @@ static bool8 DoesObjectCollideWithObjectAt(struct ObjectEvent *objectEvent, s16 for (i = 0; i < OBJECT_EVENTS_COUNT; i++) { curObject = &gObjectEvents[i]; - if (curObject->active && curObject != objectEvent) + if (curObject->active && (curObject->trainerType != 0xFE || objectEvent != &gObjectEvents[gPlayerAvatar.objectEventId]) && curObject != objectEvent) { if ((curObject->currentCoords.x == x && curObject->currentCoords.y == y) || (curObject->previousCoords.x == x && curObject->previousCoords.y == y)) { @@ -7536,7 +7798,7 @@ static void ObjectEventUpdateMetatileBehaviors(struct ObjectEvent *objEvent) static void GetGroundEffectFlags_Reflection(struct ObjectEvent *objEvent, u32 *flags) { - u32 reflectionFlags[NUM_REFLECTION_TYPES - 1] = { + u32 reflectionFlags[NUM_REFLECTION_TYPES - 1] = { [REFL_TYPE_ICE - 1] = GROUND_EFFECT_FLAG_ICE_REFLECTION, [REFL_TYPE_WATER - 1] = GROUND_EFFECT_FLAG_WATER_REFLECTION }; @@ -7754,7 +8016,7 @@ static u8 ObjectEventGetNearbyReflectionType(struct ObjectEvent *objEvent) RETURN_REFLECTION_TYPE_AT(objEvent->previousCoords.x - j, objEvent->previousCoords.y + one + i) } } - + return REFL_TYPE_NONE; } diff --git a/src/overworld.c b/src/overworld.c index 5aa5bb73d..917a5882b 100644 --- a/src/overworld.c +++ b/src/overworld.c @@ -2154,6 +2154,7 @@ static void InitObjectEventsLocal(void) SetPlayerAvatarTransitionFlags(player->transitionFlags); ResetInitialPlayerAvatarState(); TrySpawnObjectEvents(0, 0); + SpawnFollowingPokemon(); TryRunOnWarpIntoMapScript(); } @@ -2225,10 +2226,10 @@ static void CB1_UpdateLinkState(void) // Note: Because guestId is between 0 and 4, while the smallest key code is // LINK_KEY_CODE_EMPTY, this is functionally equivalent to `sPlayerKeyInterceptCallback(0)`. - // It is expecting the callback to be KeyInterCB_SelfIdle, and that will + // It is expecting the callback to be KeyInterCB_SelfIdle, and that will // completely ignore any input parameters. // - // UpdateHeldKeyCode performs a sanity check on its input; if + // UpdateHeldKeyCode performs a sanity check on its input; if // sPlayerKeyInterceptCallback echoes back the argument, which is selfId, then // it'll use LINK_KEY_CODE_EMPTY instead. // @@ -3040,7 +3041,7 @@ static void SetPlayerFacingDirection(u8 linkPlayerId, u8 facing) #define TEMP gLinkPlayerMovementModes[linkPlayerObjEvent->movementMode](linkPlayerObjEvent, objEvent, facing) gMovementStatusHandler[TEMP](linkPlayerObjEvent, objEvent); - + // Clean up the hack. #undef TEMP } From eb55f6bd0af5b181a9b111f1feb88e17b6e79ab7 Mon Sep 17 00:00:00 2001 From: Ariel Antonitis Date: Fri, 12 Jun 2020 02:58:11 -0400 Subject: [PATCH 002/241] Added dynamic overworld palettes (github.com/pret/pokeemerald/wiki/Dynamic-overworld-palette-system) --- src/event_object_movement.c | 59 +++++++++---------------------------- src/overworld.c | 5 +--- 2 files changed, 15 insertions(+), 49 deletions(-) diff --git a/src/event_object_movement.c b/src/event_object_movement.c index cf3a030b6..c57b39e73 100644 --- a/src/event_object_movement.c +++ b/src/event_object_movement.c @@ -450,7 +450,6 @@ const u8 gInitialMovementTypeFacingDirections[] = { #include "data/object_events/object_event_subsprites.h" #include "data/object_events/object_event_graphics_info.h" -<<<<<<< HEAD static const struct SpritePalette sObjectEventSpritePalettes[] = { {gObjectEventPal_Npc1, OBJ_EVENT_PAL_TAG_NPC_1}, {gObjectEventPal_Npc2, OBJ_EVENT_PAL_TAG_NPC_2}, @@ -487,47 +486,8 @@ 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}, - {NULL, 0x0000}, -======= -const struct SpritePalette sObjectEventSpritePalettes[] = { - {gObjectEventPalette0, OBJ_EVENT_PAL_TAG_0}, - {gObjectEventPalette1, OBJ_EVENT_PAL_TAG_1}, - {gObjectEventPalette2, OBJ_EVENT_PAL_TAG_2}, - {gObjectEventPalette3, OBJ_EVENT_PAL_TAG_3}, - {gObjectEventPalette4, OBJ_EVENT_PAL_TAG_4}, - {gObjectEventPalette5, OBJ_EVENT_PAL_TAG_5}, - {gObjectEventPalette6, OBJ_EVENT_PAL_TAG_6}, - {gObjectEventPalette7, OBJ_EVENT_PAL_TAG_7}, - {gObjectEventPalette8, OBJ_EVENT_PAL_TAG_8}, - {gObjectEventPalette9, OBJ_EVENT_PAL_TAG_9}, - {gObjectEventPalette10, OBJ_EVENT_PAL_TAG_10}, - {gObjectEventPalette11, OBJ_EVENT_PAL_TAG_11}, - {gObjectEventPalette12, OBJ_EVENT_PAL_TAG_12}, - {gObjectEventPalette13, OBJ_EVENT_PAL_TAG_13}, - {gObjectEventPalette14, OBJ_EVENT_PAL_TAG_14}, - {gObjectEventPalette15, OBJ_EVENT_PAL_TAG_15}, - {gObjectEventPalette16, OBJ_EVENT_PAL_TAG_16}, - {gObjectEventPalette17, OBJ_EVENT_PAL_TAG_17}, - {gObjectEventPalette18, OBJ_EVENT_PAL_TAG_18}, - {gObjectEventPalette19, OBJ_EVENT_PAL_TAG_19}, - {gObjectEventPalette20, OBJ_EVENT_PAL_TAG_20}, - {gObjectEventPalette21, OBJ_EVENT_PAL_TAG_21}, - {gObjectEventPalette22, OBJ_EVENT_PAL_TAG_22}, - {gObjectEventPalette23, OBJ_EVENT_PAL_TAG_23}, - {gObjectEventPalette24, OBJ_EVENT_PAL_TAG_24}, - {gObjectEventPalette25, OBJ_EVENT_PAL_TAG_25}, - {gObjectEventPalette26, OBJ_EVENT_PAL_TAG_26}, - {gObjectEventPalette27, OBJ_EVENT_PAL_TAG_27}, - {gObjectEventPalette28, OBJ_EVENT_PAL_TAG_28}, - {gObjectEventPalette29, OBJ_EVENT_PAL_TAG_29}, - {gObjectEventPalette30, OBJ_EVENT_PAL_TAG_30}, - {gObjectEventPalette31, OBJ_EVENT_PAL_TAG_31}, - {gObjectEventPalette32, OBJ_EVENT_PAL_TAG_32}, - {gObjectEventPalette33, OBJ_EVENT_PAL_TAG_33}, - {gObjectEventPalette34, OBJ_EVENT_PAL_TAG_34}, {gObjectEventPaletteMarshtomp, OBJ_EVENT_PAL_TAG_MARSHTOMP}, {NULL, 0x0000}, ->>>>>>> 43d2595b3 (Testing follower pokemon.) }; static const u16 sReflectionPaletteTags_Brendan[] = { @@ -1374,10 +1334,13 @@ 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 = ℑ + paletteNum = gSprites[objectEvent->spriteId].oam.paletteNum; DestroySprite(&gSprites[objectEvent->spriteId]); + FieldEffectFreePaletteIfUnused(paletteNum); } void RemoveAllObjectEventsExceptPlayer(void) @@ -1394,7 +1357,6 @@ void RemoveAllObjectEventsExceptPlayer(void) static u8 TrySetupObjectEventSprite(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; @@ -1406,6 +1368,7 @@ static u8 TrySetupObjectEventSprite(struct ObjectEventTemplate *objectEventTempl objectEvent = &gObjectEvents[objectEventId]; graphicsInfo = GetObjectEventGraphicsInfo(objectEvent->graphicsId); +<<<<<<< HEAD paletteSlot = graphicsInfo->paletteSlot; if (paletteSlot == 0) { @@ -1419,12 +1382,15 @@ static u8 TrySetupObjectEventSprite(struct ObjectEventTemplate *objectEventTempl { paletteSlot -= 16; sub_808EAB0(graphicsInfo->paletteTag, paletteSlot); +======= + if (spriteTemplate->paletteTag != 0xffff) { + LoadObjectEventPalette(spriteTemplate->paletteTag); +>>>>>>> ecbde8db7 (Added dynamic overworld palettes (github.com/pret/pokeemerald/wiki/Dynamic-overworld-palette-system)) } if (objectEvent->movementType == MOVEMENT_TYPE_INVISIBLE) objectEvent->invisible = TRUE; - *(u16 *)&spriteTemplate->paletteTag = 0xFFFF; spriteId = CreateSprite(spriteTemplate, 0, 0, 0); if (spriteId == MAX_SPRITES) { @@ -1438,7 +1404,6 @@ static u8 TrySetupObjectEventSprite(struct ObjectEventTemplate *objectEventTempl sprite->centerToCornerVecY = -(graphicsInfo->height >> 1); sprite->pos1.x += 8; sprite->pos1.y += 16 + sprite->centerToCornerVecY; - sprite->oam.paletteNum = paletteSlot; sprite->coordOffsetEnabled = TRUE; sprite->data[0] = objectEventId; objectEvent->spriteId = spriteId; @@ -1732,7 +1697,6 @@ void sub_808E16C(s16 x, s16 y) static void sub_808E1B8(u8 objectEventId, s16 x, s16 y) { u8 spriteId; - u8 paletteSlot; struct Sprite *sprite; struct ObjectEvent *objectEvent; struct SpriteTemplate spriteTemplate; @@ -1756,6 +1720,7 @@ static void sub_808E1B8(u8 objectEventId, s16 x, s16 y) spriteFrameImage.size = graphicsInfo->size; MakeObjectTemplateFromObjectEventGraphicsInfoWithCallbackIndex(objectEvent->graphicsId, objectEvent->movementType, &spriteTemplate, &subspriteTables); spriteTemplate.images = &spriteFrameImage; +<<<<<<< HEAD *(u16 *)&spriteTemplate.paletteTag = 0xFFFF; paletteSlot = graphicsInfo->paletteSlot; if (paletteSlot == 0) @@ -1772,6 +1737,11 @@ static void sub_808E1B8(u8 objectEventId, s16 x, s16 y) sub_808EAB0(graphicsInfo->paletteTag, paletteSlot); } *(u16 *)&spriteTemplate.paletteTag = 0xFFFF; +======= + if (spriteTemplate.paletteTag != 0xffff) { + LoadObjectEventPalette(spriteTemplate.paletteTag); + } +>>>>>>> ecbde8db7 (Added dynamic overworld palettes (github.com/pret/pokeemerald/wiki/Dynamic-overworld-palette-system)) spriteId = CreateSprite(&spriteTemplate, 0, 0, 0); if (spriteId != MAX_SPRITES) { @@ -1791,7 +1761,6 @@ static void sub_808E1B8(u8 objectEventId, s16 x, s16 y) { SetSubspriteTables(sprite, subspriteTables); } - sprite->oam.paletteNum = paletteSlot; sprite->coordOffsetEnabled = TRUE; sprite->data[0] = objectEventId; objectEvent->spriteId = spriteId; diff --git a/src/overworld.c b/src/overworld.c index 917a5882b..60512a850 100644 --- a/src/overworld.c +++ b/src/overworld.c @@ -2117,10 +2117,7 @@ static void ResumeMap(bool32 a1) ResetAllPicSprites(); ResetCameraUpdateInfo(); InstallCameraPanAheadCallback(); - if (!a1) - InitObjectEventPalettes(0); - else - InitObjectEventPalettes(1); + FreeAllSpritePalettes(); FieldEffectActiveListClear(); StartWeather(); From a2c8ab6a0929ef8de4708f6cd3feaf583cd9e98d Mon Sep 17 00:00:00 2001 From: Ariel Antonitis Date: Fri, 12 Jun 2020 02:59:34 -0400 Subject: [PATCH 003/241] Unpadded ROM size. --- Makefile | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Makefile b/Makefile index d97634399..f3136df93 100644 --- a/Makefile +++ b/Makefile @@ -323,7 +323,7 @@ LD_SCRIPT := ld_script.txt LD_SCRIPT_DEPS := $(OBJ_DIR)/sym_bss.ld $(OBJ_DIR)/sym_common.ld $(OBJ_DIR)/sym_ewram.ld else LD_SCRIPT := ld_script_modern.txt -LD_SCRIPT_DEPS := +LD_SCRIPT_DEPS := endif $(OBJ_DIR)/ld_script.ld: $(LD_SCRIPT) $(LD_SCRIPT_DEPS) @@ -335,7 +335,7 @@ $(ELF): $(OBJ_DIR)/ld_script.ld $(OBJS) berry_fix libagbsyscall $(ROM): $(ELF) $(OBJCOPY) -O binary $< $@ - $(FIX) $@ -p --silent + $(FIX) $@ --silent modern: ; @$(MAKE) MODERN=1 From 8a3dfbf252039ce68e61715cadd172893cacc793 Mon Sep 17 00:00:00 2001 From: Ariel Antonitis Date: Fri, 12 Jun 2020 03:41:03 -0400 Subject: [PATCH 004/241] Added pokemon followers & script commands. --- asm/macros/event.inc | 5 + data/event_scripts.s | 1 + data/script_cmd_table.inc | 455 +++++++++--------- data/scripts/follower.inc | 23 + graphics/object_events/palettes/altaria.pal | 19 + graphics/object_events/palettes/togetic.pal | 19 + .../object_events/pics/misc/animated_ball.png | Bin 0 -> 4840 bytes .../object_events/pics/pokemon/marshtomp.png | Bin 5691 -> 7353 bytes .../object_events/pics/pokemon/togetic.png | Bin 0 -> 4519 bytes include/constants/event_object_movement.h | 2 + include/constants/event_objects.h | 9 +- include/event_object_movement.h | 6 +- include/event_scripts.h | 2 + include/field_effect.h | 1 + spritesheet_rules.mk | 6 + .../movement_action_func_tables.h | 20 + .../object_events/movement_type_func_tables.h | 2 +- src/data/object_events/object_event_anims.h | 194 ++++++-- .../object_events/object_event_graphics.h | 4 + .../object_event_graphics_info.h | 6 +- .../object_event_graphics_info_pointers.h | 4 + .../object_events/object_event_pic_tables.h | 21 +- src/event_object_movement.c | 323 ++++++++++--- src/field_effect.c | 100 ++-- src/overworld.c | 5 + src/scrcmd.c | 33 +- 26 files changed, 857 insertions(+), 403 deletions(-) create mode 100644 data/scripts/follower.inc create mode 100644 graphics/object_events/palettes/altaria.pal create mode 100644 graphics/object_events/palettes/togetic.pal create mode 100644 graphics/object_events/pics/misc/animated_ball.png create mode 100644 graphics/object_events/pics/pokemon/togetic.png diff --git a/asm/macros/event.inc b/asm/macros/event.inc index 4625f8df6..fa8d80531 100644 --- a/asm/macros/event.inc +++ b/asm/macros/event.inc @@ -1625,6 +1625,11 @@ .2byte \quantity .endm + @ Like callnative, but function expects a ctx + .macro callfunc func:req + .byte 0xe3 + .4byte \func + .endm @ Supplementary diff --git a/data/event_scripts.s b/data/event_scripts.s index 8039be687..878fea8ee 100644 --- a/data/event_scripts.s +++ b/data/event_scripts.s @@ -1057,6 +1057,7 @@ Common_EventScript_LegendaryFlewAway:: @ 8273776 .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/script_cmd_table.inc b/data/script_cmd_table.inc index a26ce6bf2..b6e7a6b4a 100644 --- a/data/script_cmd_table.inc +++ b/data/script_cmd_table.inc @@ -1,232 +1,233 @@ .align 2 gScriptCmdTable:: @ 81DB67C - .4byte ScrCmd_nop @ 0x00 - .4byte ScrCmd_nop1 @ 0x01 - .4byte ScrCmd_end @ 0x02 - .4byte ScrCmd_return @ 0x03 - .4byte ScrCmd_call @ 0x04 - .4byte ScrCmd_goto @ 0x05 - .4byte ScrCmd_goto_if @ 0x06 - .4byte ScrCmd_call_if @ 0x07 - .4byte ScrCmd_gotostd @ 0x08 - .4byte ScrCmd_callstd @ 0x09 - .4byte ScrCmd_gotostd_if @ 0x0a - .4byte ScrCmd_callstd_if @ 0x0b - .4byte ScrCmd_returnram @ 0x0c - .4byte ScrCmd_killscript @ 0x0d - .4byte ScrCmd_setmysteryeventstatus @ 0x0e - .4byte ScrCmd_loadword @ 0x0f - .4byte ScrCmd_loadbyte @ 0x10 - .4byte ScrCmd_writebytetoaddr @ 0x11 - .4byte ScrCmd_loadbytefromaddr @ 0x12 - .4byte ScrCmd_setptrbyte @ 0x13 - .4byte ScrCmd_copylocal @ 0x14 - .4byte ScrCmd_copybyte @ 0x15 - .4byte ScrCmd_setvar @ 0x16 - .4byte ScrCmd_addvar @ 0x17 - .4byte ScrCmd_subvar @ 0x18 - .4byte ScrCmd_copyvar @ 0x19 - .4byte ScrCmd_setorcopyvar @ 0x1a - .4byte ScrCmd_compare_local_to_local @ 0x1b - .4byte ScrCmd_compare_local_to_value @ 0x1c - .4byte ScrCmd_compare_local_to_addr @ 0x1d - .4byte ScrCmd_compare_addr_to_local @ 0x1e - .4byte ScrCmd_compare_addr_to_value @ 0x1f - .4byte ScrCmd_compare_addr_to_addr @ 0x20 - .4byte ScrCmd_compare_var_to_value @ 0x21 - .4byte ScrCmd_compare_var_to_var @ 0x22 - .4byte ScrCmd_callnative @ 0x23 - .4byte ScrCmd_gotonative @ 0x24 - .4byte ScrCmd_special @ 0x25 - .4byte ScrCmd_specialvar @ 0x26 - .4byte ScrCmd_waitstate @ 0x27 - .4byte ScrCmd_delay @ 0x28 - .4byte ScrCmd_setflag @ 0x29 - .4byte ScrCmd_clearflag @ 0x2a - .4byte ScrCmd_checkflag @ 0x2b - .4byte ScrCmd_initclock @ 0x2c - .4byte ScrCmd_dotimebasedevents @ 0x2d - .4byte ScrCmd_gettime @ 0x2e - .4byte ScrCmd_playse @ 0x2f - .4byte ScrCmd_waitse @ 0x30 - .4byte ScrCmd_playfanfare @ 0x31 - .4byte ScrCmd_waitfanfare @ 0x32 - .4byte ScrCmd_playbgm @ 0x33 - .4byte ScrCmd_savebgm @ 0x34 - .4byte ScrCmd_fadedefaultbgm @ 0x35 - .4byte ScrCmd_fadenewbgm @ 0x36 - .4byte ScrCmd_fadeoutbgm @ 0x37 - .4byte ScrCmd_fadeinbgm @ 0x38 - .4byte ScrCmd_warp @ 0x39 - .4byte ScrCmd_warpsilent @ 0x3a - .4byte ScrCmd_warpdoor @ 0x3b - .4byte ScrCmd_warphole @ 0x3c - .4byte ScrCmd_warpteleport @ 0x3d - .4byte ScrCmd_setwarp @ 0x3e - .4byte ScrCmd_setdynamicwarp @ 0x3f - .4byte ScrCmd_setdivewarp @ 0x40 - .4byte ScrCmd_setholewarp @ 0x41 - .4byte ScrCmd_getplayerxy @ 0x42 - .4byte ScrCmd_getpartysize @ 0x43 - .4byte ScrCmd_additem @ 0x44 - .4byte ScrCmd_removeitem @ 0x45 - .4byte ScrCmd_checkitemspace @ 0x46 - .4byte ScrCmd_checkitem @ 0x47 - .4byte ScrCmd_checkitemtype @ 0x48 - .4byte ScrCmd_addpcitem @ 0x49 - .4byte ScrCmd_checkpcitem @ 0x4a - .4byte ScrCmd_adddecoration @ 0x4b - .4byte ScrCmd_removedecoration @ 0x4c - .4byte ScrCmd_checkdecor @ 0x4d - .4byte ScrCmd_checkdecorspace @ 0x4e - .4byte ScrCmd_applymovement @ 0x4f - .4byte ScrCmd_applymovement_at @ 0x50 - .4byte ScrCmd_waitmovement @ 0x51 - .4byte ScrCmd_waitmovement_at @ 0x52 - .4byte ScrCmd_removeobject @ 0x53 - .4byte ScrCmd_removeobject_at @ 0x54 - .4byte ScrCmd_addobject @ 0x55 - .4byte ScrCmd_addobject_at @ 0x56 - .4byte ScrCmd_setobjectxy @ 0x57 - .4byte ScrCmd_showobject_at @ 0x58 - .4byte ScrCmd_hideobject_at @ 0x59 - .4byte ScrCmd_faceplayer @ 0x5a - .4byte ScrCmd_turnobject @ 0x5b - .4byte ScrCmd_trainerbattle @ 0x5c - .4byte ScrCmd_dotrainerbattle @ 0x5d - .4byte ScrCmd_gotopostbattlescript @ 0x5e - .4byte ScrCmd_gotobeatenscript @ 0x5f - .4byte ScrCmd_checktrainerflag @ 0x60 - .4byte ScrCmd_settrainerflag @ 0x61 - .4byte ScrCmd_cleartrainerflag @ 0x62 - .4byte ScrCmd_setobjectxyperm @ 0x63 - .4byte ScrCmd_copyobjectxytoperm @ 0x64 - .4byte ScrCmd_setobjectmovementtype @ 0x65 - .4byte ScrCmd_waitmessage @ 0x66 - .4byte ScrCmd_message @ 0x67 - .4byte ScrCmd_closemessage @ 0x68 - .4byte ScrCmd_lockall @ 0x69 - .4byte ScrCmd_lock @ 0x6a - .4byte ScrCmd_releaseall @ 0x6b - .4byte ScrCmd_release @ 0x6c - .4byte ScrCmd_waitbuttonpress @ 0x6d - .4byte ScrCmd_yesnobox @ 0x6e - .4byte ScrCmd_multichoice @ 0x6f - .4byte ScrCmd_multichoicedefault @ 0x70 - .4byte ScrCmd_multichoicegrid @ 0x71 - .4byte ScrCmd_drawbox @ 0x72 - .4byte ScrCmd_erasebox @ 0x73 - .4byte ScrCmd_drawboxtext @ 0x74 - .4byte ScrCmd_showmonpic @ 0x75 - .4byte ScrCmd_hidemonpic @ 0x76 - .4byte ScrCmd_showcontestwinner @ 0x77 - .4byte ScrCmd_braillemessage @ 0x78 - .4byte ScrCmd_givemon @ 0x79 - .4byte ScrCmd_giveegg @ 0x7a - .4byte ScrCmd_setmonmove @ 0x7b - .4byte ScrCmd_checkpartymove @ 0x7c - .4byte ScrCmd_bufferspeciesname @ 0x7d - .4byte ScrCmd_bufferleadmonspeciesname @ 0x7e - .4byte ScrCmd_bufferpartymonnick @ 0x7f - .4byte ScrCmd_bufferitemname @ 0x80 - .4byte ScrCmd_bufferdecorationname @ 0x81 - .4byte ScrCmd_buffermovename @ 0x82 - .4byte ScrCmd_buffernumberstring @ 0x83 - .4byte ScrCmd_bufferstdstring @ 0x84 - .4byte ScrCmd_bufferstring @ 0x85 - .4byte ScrCmd_pokemart @ 0x86 - .4byte ScrCmd_pokemartdecoration @ 0x87 - .4byte ScrCmd_pokemartdecoration2 @ 0x88 - .4byte ScrCmd_playslotmachine @ 0x89 - .4byte ScrCmd_setberrytree @ 0x8a - .4byte ScrCmd_choosecontestmon @ 0x8b - .4byte ScrCmd_startcontest @ 0x8c - .4byte ScrCmd_showcontestresults @ 0x8d - .4byte ScrCmd_contestlinktransfer @ 0x8e - .4byte ScrCmd_random @ 0x8f - .4byte ScrCmd_addmoney @ 0x90 - .4byte ScrCmd_removemoney @ 0x91 - .4byte ScrCmd_checkmoney @ 0x92 - .4byte ScrCmd_showmoneybox @ 0x93 - .4byte ScrCmd_hidemoneybox @ 0x94 - .4byte ScrCmd_updatemoneybox @ 0x95 - .4byte ScrCmd_getpricereduction @ 0x96 - .4byte ScrCmd_fadescreen @ 0x97 - .4byte ScrCmd_fadescreenspeed @ 0x98 - .4byte ScrCmd_setflashradius @ 0x99 - .4byte ScrCmd_animateflash @ 0x9a - .4byte ScrCmd_messageautoscroll @ 0x9b - .4byte ScrCmd_dofieldeffect @ 0x9c - .4byte ScrCmd_setfieldeffectarg @ 0x9d - .4byte ScrCmd_waitfieldeffect @ 0x9e - .4byte ScrCmd_setrespawn @ 0x9f - .4byte ScrCmd_checkplayergender @ 0xa0 - .4byte ScrCmd_playmoncry @ 0xa1 - .4byte ScrCmd_setmetatile @ 0xa2 - .4byte ScrCmd_resetweather @ 0xa3 - .4byte ScrCmd_setweather @ 0xa4 - .4byte ScrCmd_doweather @ 0xa5 - .4byte ScrCmd_setstepcallback @ 0xa6 - .4byte ScrCmd_setmaplayoutindex @ 0xa7 - .4byte ScrCmd_setobjectpriority @ 0xa8 - .4byte ScrCmd_resetobjectpriority @ 0xa9 - .4byte ScrCmd_createvobject @ 0xaa - .4byte ScrCmd_turnvobject @ 0xab - .4byte ScrCmd_opendoor @ 0xac - .4byte ScrCmd_closedoor @ 0xad - .4byte ScrCmd_waitdooranim @ 0xae - .4byte ScrCmd_setdooropen @ 0xaf - .4byte ScrCmd_setdoorclosed @ 0xb0 - .4byte ScrCmd_addelevmenuitem @ 0xb1 - .4byte ScrCmd_showelevmenu @ 0xb2 - .4byte ScrCmd_checkcoins @ 0xb3 - .4byte ScrCmd_addcoins @ 0xb4 - .4byte ScrCmd_removecoins @ 0xb5 - .4byte ScrCmd_setwildbattle @ 0xb6 - .4byte ScrCmd_dowildbattle @ 0xb7 - .4byte ScrCmd_setvaddress @ 0xb8 - .4byte ScrCmd_vgoto @ 0xb9 - .4byte ScrCmd_vcall @ 0xba - .4byte ScrCmd_vgoto_if @ 0xbb - .4byte ScrCmd_vcall_if @ 0xbc - .4byte ScrCmd_vmessage @ 0xbd - .4byte ScrCmd_vloadword @ 0xbe - .4byte ScrCmd_vbufferstring @ 0xbf - .4byte ScrCmd_showcoinsbox @ 0xc0 - .4byte ScrCmd_hidecoinsbox @ 0xc1 - .4byte ScrCmd_updatecoinsbox @ 0xc2 - .4byte ScrCmd_incrementgamestat @ 0xc3 - .4byte ScrCmd_setescapewarp @ 0xc4 - .4byte ScrCmd_waitmoncry @ 0xc5 - .4byte ScrCmd_bufferboxname @ 0xc6 - .4byte ScrCmd_nop1 @ 0xc7 - .4byte ScrCmd_nop1 @ 0xc8 - .4byte ScrCmd_nop1 @ 0xc9 - .4byte ScrCmd_nop1 @ 0xca - .4byte ScrCmd_nop1 @ 0xcb - .4byte ScrCmd_nop1 @ 0xcc - .4byte ScrCmd_setmoneventlegal @ 0xcd - .4byte ScrCmd_checkmoneventlegal @ 0xce - .4byte ScrCmd_gotoram @ 0xcf - .4byte ScrCmd_nop1 @ 0xd0 - .4byte ScrCmd_warpspinenter @ 0xd1 - .4byte ScrCmd_setmonmetlocation @ 0xd2 - .4byte ScrCmd_moverotatingtileobjects @ 0xd3 - .4byte ScrCmd_turnrotatingtileobjects @ 0xd4 - .4byte ScrCmd_initrotatingtilepuzzle @ 0xd5 - .4byte ScrCmd_freerotatingtilepuzzle @ 0xd6 - .4byte ScrCmd_warpmossdeepgym @ 0xd7 - .4byte ScrCmd_selectapproachingtrainer @ 0xd8 - .4byte ScrCmd_lockfortrainer @ 0xd9 - .4byte ScrCmd_closebraillemessage @ 0xda - .4byte ScrCmd_messageinstant @ 0xdb - .4byte ScrCmd_fadescreenswapbuffers @ 0xdc - .4byte ScrCmd_buffertrainerclassname @ 0xdd - .4byte ScrCmd_buffertrainername @ 0xde - .4byte ScrCmd_pokenavcall @ 0xdf - .4byte ScrCmd_warpsootopolislegend @ 0xe0 - .4byte ScrCmd_buffercontesttype @ 0xe1 - .4byte ScrCmd_bufferitemnameplural @ 0xe2 + .4byte ScrCmd_nop + .4byte ScrCmd_nop1 + .4byte ScrCmd_end + .4byte ScrCmd_return + .4byte ScrCmd_call + .4byte ScrCmd_goto + .4byte ScrCmd_goto_if + .4byte ScrCmd_call_if + .4byte ScrCmd_gotostd + .4byte ScrCmd_callstd + .4byte ScrCmd_gotostd_if + .4byte ScrCmd_callstd_if + .4byte ScrCmd_returnram + .4byte ScrCmd_killscript + .4byte ScrCmd_setmysteryeventstatus + .4byte ScrCmd_loadword + .4byte ScrCmd_loadbyte + .4byte ScrCmd_writebytetoaddr + .4byte ScrCmd_loadbytefromaddr + .4byte ScrCmd_setptrbyte + .4byte ScrCmd_copylocal + .4byte ScrCmd_copybyte + .4byte ScrCmd_setvar + .4byte ScrCmd_addvar + .4byte ScrCmd_subvar + .4byte ScrCmd_copyvar + .4byte ScrCmd_setorcopyvar + .4byte ScrCmd_compare_local_to_local + .4byte ScrCmd_compare_local_to_value + .4byte ScrCmd_compare_local_to_addr + .4byte ScrCmd_compare_addr_to_local + .4byte ScrCmd_compare_addr_to_value + .4byte ScrCmd_compare_addr_to_addr + .4byte ScrCmd_compare_var_to_value + .4byte ScrCmd_compare_var_to_var + .4byte ScrCmd_callnative + .4byte ScrCmd_gotonative + .4byte ScrCmd_special + .4byte ScrCmd_specialvar + .4byte ScrCmd_waitstate + .4byte ScrCmd_delay + .4byte ScrCmd_setflag + .4byte ScrCmd_clearflag + .4byte ScrCmd_checkflag + .4byte ScrCmd_initclock + .4byte ScrCmd_dotimebasedevents + .4byte ScrCmd_gettime + .4byte ScrCmd_playse + .4byte ScrCmd_waitse + .4byte ScrCmd_playfanfare + .4byte ScrCmd_waitfanfare + .4byte ScrCmd_playbgm + .4byte ScrCmd_savebgm + .4byte ScrCmd_fadedefaultbgm + .4byte ScrCmd_fadenewbgm + .4byte ScrCmd_fadeoutbgm + .4byte ScrCmd_fadeinbgm + .4byte ScrCmd_warp + .4byte ScrCmd_warpsilent + .4byte ScrCmd_warpdoor + .4byte ScrCmd_warphole + .4byte ScrCmd_warpteleport + .4byte ScrCmd_setwarp + .4byte ScrCmd_setdynamicwarp + .4byte ScrCmd_setdivewarp + .4byte ScrCmd_setholewarp + .4byte ScrCmd_getplayerxy + .4byte ScrCmd_getpartysize + .4byte ScrCmd_additem + .4byte ScrCmd_removeitem + .4byte ScrCmd_checkitemspace + .4byte ScrCmd_checkitem + .4byte ScrCmd_checkitemtype + .4byte ScrCmd_addpcitem + .4byte ScrCmd_checkpcitem + .4byte ScrCmd_adddecoration + .4byte ScrCmd_removedecoration + .4byte ScrCmd_checkdecor + .4byte ScrCmd_checkdecorspace + .4byte ScrCmd_applymovement + .4byte ScrCmd_applymovement_at + .4byte ScrCmd_waitmovement + .4byte ScrCmd_waitmovement_at + .4byte ScrCmd_removeobject + .4byte ScrCmd_removeobject_at + .4byte ScrCmd_addobject + .4byte ScrCmd_addobject_at + .4byte ScrCmd_setobjectxy + .4byte ScrCmd_showobject_at + .4byte ScrCmd_hideobject_at + .4byte ScrCmd_faceplayer + .4byte ScrCmd_turnobject + .4byte ScrCmd_trainerbattle + .4byte ScrCmd_dotrainerbattle + .4byte ScrCmd_gotopostbattlescript + .4byte ScrCmd_gotobeatenscript + .4byte ScrCmd_checktrainerflag + .4byte ScrCmd_settrainerflag + .4byte ScrCmd_cleartrainerflag + .4byte ScrCmd_setobjectxyperm + .4byte ScrCmd_copyobjectxytoperm + .4byte ScrCmd_setobjectmovementtype + .4byte ScrCmd_waitmessage + .4byte ScrCmd_message + .4byte ScrCmd_closemessage + .4byte ScrCmd_lockall + .4byte ScrCmd_lock + .4byte ScrCmd_releaseall + .4byte ScrCmd_release + .4byte ScrCmd_waitbuttonpress + .4byte ScrCmd_yesnobox + .4byte ScrCmd_multichoice + .4byte ScrCmd_multichoicedefault + .4byte ScrCmd_multichoicegrid + .4byte ScrCmd_drawbox + .4byte ScrCmd_erasebox + .4byte ScrCmd_drawboxtext + .4byte ScrCmd_showmonpic + .4byte ScrCmd_hidemonpic + .4byte ScrCmd_showcontestwinner + .4byte ScrCmd_braillemessage + .4byte ScrCmd_givemon + .4byte ScrCmd_giveegg + .4byte ScrCmd_setmonmove + .4byte ScrCmd_checkpartymove + .4byte ScrCmd_bufferspeciesname + .4byte ScrCmd_bufferleadmonspeciesname + .4byte ScrCmd_bufferpartymonnick + .4byte ScrCmd_bufferitemname + .4byte ScrCmd_bufferdecorationname + .4byte ScrCmd_buffermovename + .4byte ScrCmd_buffernumberstring + .4byte ScrCmd_bufferstdstring + .4byte ScrCmd_bufferstring + .4byte ScrCmd_pokemart + .4byte ScrCmd_pokemartdecoration + .4byte ScrCmd_pokemartdecoration2 + .4byte ScrCmd_playslotmachine + .4byte ScrCmd_setberrytree + .4byte ScrCmd_choosecontestmon + .4byte ScrCmd_startcontest + .4byte ScrCmd_showcontestresults + .4byte ScrCmd_contestlinktransfer + .4byte ScrCmd_random + .4byte ScrCmd_addmoney + .4byte ScrCmd_removemoney + .4byte ScrCmd_checkmoney + .4byte ScrCmd_showmoneybox + .4byte ScrCmd_hidemoneybox + .4byte ScrCmd_updatemoneybox + .4byte ScrCmd_getpricereduction + .4byte ScrCmd_fadescreen + .4byte ScrCmd_fadescreenspeed + .4byte ScrCmd_setflashradius + .4byte ScrCmd_animateflash + .4byte ScrCmd_messageautoscroll + .4byte ScrCmd_dofieldeffect + .4byte ScrCmd_setfieldeffectarg + .4byte ScrCmd_waitfieldeffect + .4byte ScrCmd_setrespawn + .4byte ScrCmd_checkplayergender + .4byte ScrCmd_playmoncry + .4byte ScrCmd_setmetatile + .4byte ScrCmd_resetweather + .4byte ScrCmd_setweather + .4byte ScrCmd_doweather + .4byte ScrCmd_setstepcallback + .4byte ScrCmd_setmaplayoutindex + .4byte ScrCmd_setobjectpriority + .4byte ScrCmd_resetobjectpriority + .4byte ScrCmd_createvobject + .4byte ScrCmd_turnvobject + .4byte ScrCmd_opendoor + .4byte ScrCmd_closedoor + .4byte ScrCmd_waitdooranim + .4byte ScrCmd_setdooropen + .4byte ScrCmd_setdoorclosed + .4byte ScrCmd_addelevmenuitem + .4byte ScrCmd_showelevmenu + .4byte ScrCmd_checkcoins + .4byte ScrCmd_addcoins + .4byte ScrCmd_removecoins + .4byte ScrCmd_setwildbattle + .4byte ScrCmd_dowildbattle + .4byte ScrCmd_setvaddress + .4byte ScrCmd_vgoto + .4byte ScrCmd_vcall + .4byte ScrCmd_vgoto_if + .4byte ScrCmd_vcall_if + .4byte ScrCmd_vmessage + .4byte ScrCmd_vloadword + .4byte ScrCmd_vbufferstring + .4byte ScrCmd_showcoinsbox + .4byte ScrCmd_hidecoinsbox + .4byte ScrCmd_updatecoinsbox + .4byte ScrCmd_incrementgamestat + .4byte ScrCmd_setescapewarp + .4byte ScrCmd_waitmoncry + .4byte ScrCmd_bufferboxname + .4byte ScrCmd_nop1 + .4byte ScrCmd_nop1 + .4byte ScrCmd_nop1 + .4byte ScrCmd_nop1 + .4byte ScrCmd_nop1 + .4byte ScrCmd_nop1 + .4byte ScrCmd_setmonobedient + .4byte ScrCmd_checkmonobedience + .4byte ScrCmd_gotoram + .4byte ScrCmd_nop1 + .4byte ScrCmd_warpD1 + .4byte ScrCmd_setmonmetlocation + .4byte ScrCmd_moverotatingtileobjects + .4byte ScrCmd_turnrotatingtileobjects + .4byte ScrCmd_initrotatingtilepuzzle + .4byte ScrCmd_freerotatingtilepuzzle + .4byte ScrCmd_warpmossdeepgym + .4byte ScrCmd_cmdD8 + .4byte ScrCmd_cmdD9 + .4byte ScrCmd_closebraillemessage + .4byte ScrCmd_cmdDB + .4byte ScrCmd_fadescreenswapbuffers + .4byte ScrCmd_buffertrainerclassname + .4byte ScrCmd_buffertrainername + .4byte ScrCmd_pokenavcall + .4byte ScrCmd_warpsootopolislegend + .4byte ScrCmd_buffercontesttype + .4byte ScrCmd_bufferitemnameplural + .4byte ScrCmd_callfunc gScriptCmdTableEnd:: @ 81DBA08 .4byte ScrCmd_nop diff --git a/data/scripts/follower.inc b/data/scripts/follower.inc new file mode 100644 index 000000000..2b782d479 --- /dev/null +++ b/data/scripts/follower.inc @@ -0,0 +1,23 @@ +gText_Follower:: + .string "{STR_VAR_1} loves you!$" + +.macro playfirstmoncry +callfunc ScrFunc_playfirstmoncry +.endm + +.macro bufferlivemonspeciesname out:req +callfunc ScrFunc_bufferlivemonspeciesname +.byte \out +.endm + + +EventScript_Follower:: + lock + faceplayer + playfirstmoncry + applymovement 0xFE ContestHall_Movement_Heart + waitmoncry + bufferlivemonspeciesname 0 + msgbox gText_Follower, MSGBOX_DEFAULT + release + end diff --git a/graphics/object_events/palettes/altaria.pal b/graphics/object_events/palettes/altaria.pal new file mode 100644 index 000000000..b364496ff --- /dev/null +++ b/graphics/object_events/palettes/altaria.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +208 144 200 +0 0 0 +0 2 6 +72 80 104 +40 104 152 +0 132 6 +40 128 168 +112 128 144 +64 168 216 +96 192 232 +168 176 192 +208 224 232 +248 248 248 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/togetic.pal b/graphics/object_events/palettes/togetic.pal new file mode 100644 index 000000000..596c66d28 --- /dev/null +++ b/graphics/object_events/palettes/togetic.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +56 144 88 +0 0 0 +40 40 40 +40 48 88 +216 80 88 +128 144 144 +96 168 224 +160 176 216 +232 232 248 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +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 100644 index 0000000000000000000000000000000000000000..da7a678e10512cc45708b7bfec5d3ad0b1b4bfa9 GIT binary patch literal 4840 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 O0000we-a)tk66p!pi5B`*1vdhI#GuRr~L4?e%| z?@#?a#qU2o?&7y6A`c~grmtUZd|p3zy!`QoZ}$lE=f_?9JQLgJLZ2tTT`=j+y4(J7 zkvty19uN6*p?*F~?#+H&>ijHqeO~yM^7)tSUHbb)^t=1Tm?zckY&O7kZ7`RyAEx-M8fA{1+`EvIzg(xVP zrMy_NuBggo8Oof#^C}V&?k8{M1^C<7C;k41!cwVbUZyZNHaPtJy2LEukJ?Hv&xzL+ zetva-MR2x17a&C3yRev$$bhdQl~9AX7%c?i*htV|1mLxoD211xlu!-q>@W1wODBmbQ?9*TuZIhsz7d7vTVhw znKkP+T57qKR-3ifdK*3V1O}E~yY<$4A0xVd!Hovj8oYk+$c!`1Jj<-pW}AJEMft3} z%Bss&TYZfkciO7$=bEW-Td5ixlb55!IzsQ^;b$`vAQn$ zU~f$KfD_Z7U2n40Z<>kNTj9LmmHZeQ+R@Pnn2(Zq)mWDqamWiy7XIbc8 z{Qopij@v|kEZyV=#Zst3EpO#p%dm1*uQRa-zhgG)k2Z)2LBmzgEvwXa6F)kC`-;1? zGXiR)SG&?M3*LcwRxa)4v)ecax*{BeChtm%>^`|dwi)JXw|D|}4uD!qw&ji|!hvvy zyW?2J!i0{iX|6KehIC=SWK7&VfGM#3vsMi*@fisq8ZIi3;UvrGLhq0`FEay%(S_?C`lRyI^ z?Ln0M(i!U}B7FlHxe5bwMIVvRKqA=vxT)UI0Y#u^C%a189pJzQO;)m5+G0T`v&A_l z3)tkLq9(Q@YGFo2Er?Z4UWytC@+@U@@kxH#2KUy=A(v2E9|ENqTD>uUZ}1aDtL_4v z1dPRkzzNMe*}SpCG>KKxR=Hrvynsx1zn8U9V;E=e+5>ai@m5u5sxLSiu<6F4S8o{d@@gp@3o@ ztmCXSE9mo&8`gDYUYAys0G)9B2HLX&^ z8yTmX+jJ)6x_qF%`5VffTApV?Mlh)ri+lIez@uUv(n_P;X5+N7Pg5c*_nOn&-0&v& zQ_J+XcSP^yj)|0!~3N+;LgC)w+3i&1ih;zeeCd2_}rmQ>xUdOF%rboPq@(L31vU z^SKptpKVbK6B(qfvd7s83mJx+=2ihxokkC<2Hh*dcA#~Cgc1lJzhG?aHo+^Js80Nd z5FLj>t%A}69kv!-0}RoCA~W^cGO$YArfsK8_Ls3Ms02v^yMRO`P*AzGJ?lo=SWmas zHUkW((xK~ib|+s7JQW(87nBP1ti8(3AO-OZt&9tR8gj0IiZy{l6iExQ(`jBBO1|ef zis;bN=pjmfglMG&<7UjtVxS+cMp|0C$9sp zX1#gubPBtbcJpv-h0|816+Ej!ReGbE<|OGAE`Z9A;S`Re)d(c-p+ni<92mWIh)TF8 zoXM^_SZEEHpL^y2e`3GF=H28FAVF~vyzMe@U}TVgY}U6ouyVDE0!`4P8L^}@xEk`o z5}aIM=J-|}5fY8CWqPPM@($rKXayvo*QK>02f*W8LAR^osco`KVb#Moz0G!Jc-7j8%3uY;ywlCD z;4@gzBnt?Ph3=wm4~n0%5z5Gbp@Lhg%FC zMyHh&kqbf;>Z=HSeZ}~xD@Vz?B|6l4pm-p73EUyJ;O@vW=}Bl7niw5oybDl?qO4AV zLn)4pp-Z~rwxBGwvV*Z*^4w6sR61aP+4^iSJJ?y^=?+yOB)~R27FsXB0NGJ7sxcO) z8_*i_qLk<|$}~Vq2uooUP}o6C$dpae@^fEkG9?5uD(dv@Y(s@uU$h0r6+NCbTcT6t z#6%O=Hqb1*Fx$ z8;}hG0D%yQC=E-uhCpu%)TtwECR~LzSVQBk=|RZ+1u+iw#`b7^EHafT z{X&B9o|qel>gQ%gl>=FWCX=g1_)Vk@0Kj!9+Y>4U+%l2fcx)2Gb4uJqE=80_HCItg zg2ICw_B6^X=BmjJK+;4CwD#YBb#@qwHUf`!ThKq6l}_Cnss#*jeY)XBqzsLRZlgQX zA=%}iVNn(rtZK1ix`eFv6jzX}bQW2}8UF^V4cy+E9(9~c4Oh+~6l#Bb;lU$A%hBFs5#LDRHENDo4PZs5(RGO*QR zafFPm>@2n0J;E0#-Pc9}Gj}Y_OG^iED4}-%URwQ8aQ50Q#m#Q%zpY*aJW?=?QN&!m903uCbAFYQIKs10m1JR(V z2w5bQNU0ekwTj?za0;}RGAWgf^(sWZJg;Yu6v~8JE-1AwUR&4;Xf-YYTzLu>tyoFG z`p6nwS-=S zD;5~tA^DPJCjkX`YtZz|Pl;wbeoxglV7L>)oMofWo1;CIJsg$ER|YyxwIofiYNwiE zoEWt%ThhpAIV=UxO++jy zP=-PBHq+=RM8r3L@>RqcfqGgTTZAh@G$N5Pv@}cV9V*hum3U0eA(yxaLS@H9hK_+_ zY5I{3ZbQCeiZl+n>`jeZu2((LY!NW&5;f?#ZLW|n7P)DOqY^*?!`T^>2zZJhv1Swp zpv~fHs>mrsAD~7+510)B;1l+6qz7FVSwECScc%yp1SG8Nf+mi9-i0NG(n8Rf7~y)cY5&KorhfSy6}3W{sGQK-W)thFIXiAaj^Y+Ba>$ zUwA1?mI;j(Mx!PO1O?Q-COB|n(MT}Ku9X)V_mfz0NHH_1)_0tbOaJK&jry`N|BmHK!r#pV^J^A zieO2E<8n(4P=k2~D#kIXAStV7H8I)THp2u|82pHTNW^p7$=)(xu6Fv4LK+qLMa%&%IqWWvrZs6PSc;o{n!9irR*2-m9D_HOwWW@! zt}Gio=naQUc_6g71}a194*d`}E4aw`=Zx_fppr(k^t+QuCnXpQC0h?tI>6|HfdiJA zL`IP;l-v7MygO117PWRQ&d0$LWhsZg4L05$R>@_v6qXrlHgk zzJ*^%6V?xPiA|u_HdGv6?IJrTeMQ6@kd9*Clqa%pN+~pu2~&_XVx^tXE!mLZvZZU& zc*s(WG&l`DKqTvOA^=$rCJVmjpD5uY3)&7bBq5rH$P6ptOp5k|UZOifP8(ivcglE_^r zz)J^8A%}yDQ1yY3al>nPI-^Pb8ygvX28%TA1#I9b(%@Q{4g?iKjPT@DMF#QWZ9Tew z4T7gQhC_IxjA#Lc4-)C@RaSU|kW<5d9E03t1RyJ1Nhzup@YA4E0#qn3>Loio4+WZa zx&SUA|K8HLI3zJK4uN_{W`GKpE}akIYmryP0m0RoM$wVBLlOr$kEmI)2Q{b0PH=GH z0(6gug=t+f0OeNFN}e(9Q~HX!#zudJksDWOu8DAzavY5kwlvI33>`@Z~6=hGd)r?#I(K!H56^-!+iA zI0B-@vw}9D68x5^$jX?eQ5BQrAEa8?4Zj44xt{2{bRxQ5bKn&{si>3~b*6;2#!ing zek(Zzcpj8q*Qpo&QKQZ!?e8RibrQEVje$vyr>Mw}refm>Yrr;X8mCA=oX{K2HxeoB zogfV)KTCGl6tofhEofI*Dq|%!jfNQUkKg>!M*z?UHYl?PV!#^(EO(0g3-Bna*NLl9 zY9Qh@(K;0e0;tY3q5zP9Sga;(Fxuod5#nAeFKA0+cm5JB3X%}Z)C7osP>Y4;Q1&xx z5_9NN>Y0i`uMC;{7`r+z*A5gCBGl5L6KJaK2nnUc?+boO?|_9^ji`%pSxIfwkk0-t z-bQl~{vw`7Sa>Xi1Q-g5A9-5JVDk;K>LZJDhg|JemE%P+q>AeI12H;%#BoYZo2If8 zsoM~|o3eDMS?sz-tM7P!1+hgHAt30uIM7N6aPr-Ch6DC?5=X^B)p(IpHGGXY(#_Vu zIoc{G;y}ftf)2X=^_S)y+=QbfyB z4WvqI1m^qrn%d@lbY5dvNh(1Q86i!8x*EM%x%iC^aSB|*un1d!Uh> zpFP`+GscinaVXWMna9-;jHav$dLP@(Bq4-2pgbs8>IHP4;W=VVQzQi76|kp?x`x+V z(}3Phb3vqT9msf)onAw#Nw#2qv8n@&2oUI)H>yB!m+w<4ig{oiWNaJqbs#CR89EcE zR0tR?LN6h8It)yIU(n5mo59DBiPu>gN@c2>z_~N-&_?XgvsbgFfjGmaqI(>L1;0@) zv_;hj9ZfzFwOKQ(fvecxS4Jttw@rF@L&@=(G02BF)E8ddVNS}JnaF;Q-#gZjFCL?BoKl+ z>WG0=&|YLVYl_n}g;p^Dd^*vf3?d|(b<2kAfk8uF(M`%ANAWn~N~8c4;bGdFsUge) z?lYo|+12%|72QouK$-#Es*qC!f9^H+!ZKC(|MbXzMg#Cvxfm~3i@<=g>GUg};kjdE zED}JU%R(g(hIiP2;#Ms6840W;P=iX(1bZuo=olSluFaYWk7nO*7}+%42dH#Dau7uo z-+`7wQc-?7;>%pl`aAB?X$q19Qv?5X9ncbAJhJJSPk0OrF3Os|*%;t0utV=?J`XhN z6D^^C;(cXJqHGN;0(>9MJTc{OEYrF^+|nv|LtCT5s_Y51sE?hYS|GdfIBy|836wWT zv~0Lv=bP+$&M6nEf$k!3(Xhjy8{PpexW!+w>*FjN0MJDCrt!{|kEX)#+5);|(-UMc zh#-X7SfXDG@7I;ZVjp z%H~Nh2hE59?rc_w`wrEY4_mKPvG-d+IpHtDt90tG+c)bPR-4H23w{sqRD2Nb{9yPXh2xaCK~fR6$}?9p!}ZHK8f0(X_Tc?m|WYLM{`SOdHq!lmlS5ggQXM@Q{0Xuyx*e&%okVi5V?YRg35rWglAl$iHz|`OrEFLdp7C>jDg^VyFREMia({PAFB6^c+H)C#RSm|Xe=O&XFE7e~Rh;NZt%)xpJCR|i)?5c~jfa&%I3krMxx z6k5c1aNLh~_a1le0DryARI_6oP&La)CE`LRyD9`<(S;Dg=*O_cOnpuilkgm0_we!c zF2=LG&;2=im7K`{pFljze{{nl-XNadv~EJ1_- z8C8@}hJ_fd8Yw1Hv>*5I4?2F4Tr#;zVB}ap1u7)R5B>+gyEXHZe-my}C=PVK*!IT= z5ZnbCHQW9^w(Z6V5O@Zzw3fe82WCD=ueG%35zw~{TwJ#_c@MbU0S2CQ$&ef=K+~Vk z1Mg?_O<5p(3-qkHy*2l7`T(SZBJMhu457rOm_e+Ay2#;F=pfysEw&sT1ULI1_|N!W%(Y4Xe*%Zz^0;q4FXVoN zknPxxe=u^JK`k@Wv`uK%vXBll&>X3blYF)zH^?+7NTX3c)4&N{HGKpine}--xSPFuZ7_Z>YE7oVSg8L}CRRviRub>bMxtNPb1$RXNuqza# z7)#hL1$V?$PUp`=L9+i61c9h3NWXvP0vi-0#nbTS7=i>6+AIZHa}6t(7f(%(tRXKf zzi>AaNLb~wvrIv{JQsyK2q;2al;1iF@f;AsQ98y$iBL{Q4GJ0x0000DNk~Le0001x0000W1Oos701u+<{r~_H2zpdl zbW&k=AaHVTW@&6?Aar?fWgumEX=VTbc-pO*X>ubs5=Q^y6mtY5fW&efB$f!@V2(d8 zitoY#vwdiya{dtYe1Pkcgo|CZ0NUQhma_;R3;rLEj3r*yL9`21g95#-nJMy7=KLAmn46@3O{E*_did5n(s66Pr0n`9P#2$-w^%j zc>cV9`f}sXh|&ai^Zvbe_j}K4b+c45THhV@BwIc%!-+=9^YgLFqw!1E^6Zbn zqsJK+CEsyHEb`oUJoj7Dx$_oIO~S>5kNo8$eD~%*d4zkHr${`Rxj(rguH=197+yL5 zpR*{4+;`pdN$|(xUH7Q0QJv23IQPrwVd(fe?=31)OT3dCHn=QA}wAI#HZ==ngd+FM1Z@u@? z=SU-ifja7FqmMD>Okr}P$+afuPmWl!Y{k@nsx|92Y%bbom8Gk$w)z@t?zHm;CU)Iz z_dWJJ5)Mdl%F$C#JN=9^FTHm2Emv>7?e;tF{H)r$s(*O=gR059YU!zzpVvOC#?jE) z$0fw!M7?HIEES>R%_~4dC$CxTQcCj5dClTT4233wRIg3g;uWKWX!bla=}aY|EOG`bbqYdpHyu-&#k9ouPOAL#?15`!laM-ym0|~Gx1md_s`+q zUtq|9x~gsxcr`GQy2de^r;K`x6z6)0{gVD(Qq^*=tj>Xc$wIuMBnU2>bI%gVqL3#E z%A~i<#Zt0T?;w?&3|DT-Cd_v&o7Px=3sR>P&8XPkGG=KDSZ^_pL~3)ON~flE2@Bk) zNQ1OGH9V^U!lNsvd247n`F2=itX-`f&S}z;A_&3v}#Vf zXX`PqR@ZGyd26O)HCP*&j;d|MymwkGgiFp5Q!QfTZ?zlmS~Q)FtUGIqMliw+x0I8f zC#|8?dFgk~W7S@s>|NE7Q1vXKAXe z#}OjSRqaeZ4@86Bk$FYI0o-SQZibLCNGs~sP6}6_PNGa?BV|r)CndPKP>UnA-{h5E zG{C$pQ5@WgBFdASv7k8li z8*oqvK3FM*yE!Z+n^DG`Ngzh{n3S2S=K0aPA z0F>GQZ=chk)?81y)+SNuqzEA6rrA+H-K!7O=99X$PKyliY*=SxQt9X9x*1C&ec7MV1o#B%?nYb1{VSsw{$du9-)O>W8wl^h;!lTvc(_w1w7E~&x5_vr z-d0TR=%G`t631X!5n8(|Uq-}>1n%uh`;gFdpdIFO0#eQo^D1*vmJjJrBZ3)bZ%LR_ zfn#|4q^U-xxb4Mzt?R>*Tr_u3X|`njl~LHJKAZ4XH{Jm> zHn?`SF^#*N4Lz%Wm!_g|$pOU{iVEbMO+pyj?5R-h$Lx_%P0(FJI%L5TqRXc{LmN(o zb*nI00|^X>fQ{L78;w&+n7Y?}=EA4-d3~9zbI&eT?_uVx!I6H{8i(6ah9ip~(+;-- zQuJmh%s2@F85(roNDXJlQ5Z&tHK9`u3WD67PKQSTpmn2vOtf98`Rvxk!86eB%Pzg0 z;h_vsY)~}2s#jnLWJzin@Bj$oMb%J7K%aiS%_v#h6qB0Iz#0qM0WeMlb|mEkU4*Wh z<1AW>aQ3BnNqWhTsxXAXXz=6e!z_})Lvsd-Nu$-ph|P2XzTLr%J#6z)Nb@qwWNuWM zV1|2I!Fg_f>m;cTtrr=g%~q(85#)9E?Rb%HT`yRS8IoR^e|)Z^CbXMa6HMSLa2>`X zX@z}AjB*b}L`*NK9()aBX*U9di;7LhUIoC{Zjak2x(6;N(NTb6qf>m;X!3JO0`7>s zZ9qP94+tMyC)>zsyqV&HAj{B8n;;MrXhis)k5Gkw97kR(7Q2Sa0wJ*wU^t!3%!mWo zRHzPKw*+7?#ULe3%-xpHplC^ern|1?qVsmTti=_WMC}eniy0-9x&UNEKuL)XPQzJG z5pU{1j5%~M0MNxgMA7`jL-y&D0C3WqL;-Nnb0kYU9SN3T6*Vt1UV;1?3p_S3k~7|O zc3nV!1EYvBysTxk069Y>hbw7ZGiTTbs9^StycoSm$Mcb%NF?wN36iyhJiREG7O}{S z3a=hkKK?;w8C!(%WfqskGcurkNjb$y6SB^zmINc;=?gtjX=Cu6qy%GC7v+a_XjsX( zg1+_Iq2WruvsNbX7G{anAzTY8C=q2JwH_3IJZ*FZO+g+3r9j9uPP)TYW`^M?>ePhM zWb8S+DbzoI4?M%7jEIaD}x%IFv~<#2Jq|!`vZfkfYAHWstgY9QJoH zpbIXWqqIRbjY|RFoSvy=AW)1s)`r1ikT!Ou7Kqv*szxq(P@jC{07UfIuy9(PFRj>=~!a8BgGttNsuI9qThL%gAiB{QA?VoI|cX@+nQt?E1z{+?(ap27NH7b`F^ma~bW@?b5WBIXFj56e?*%)q*S zP2h0?9B!O!8|hS>xRx@UNwN2k5Fq4cHr25A+$d_ z36g=H(JSJ;spudO26=?wLYN+mDLz4i;Wf_11ty67qNl)|JCF!xKrRI=gl}mVgI5-= z^fp)PtPiRp;^mbgLJN#zb&RZkOE};2P55=f`JQjWuM^Jqd=q{q9L;}4IN$S4_>ORt zvzS!y6K%MP;cWUs_48`EO2bQkkODj)sxvgp16#t#9X<-lnE2LSC;j-mGO&-nOL7

B1#aEkHAK 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 FV1i<1mjM6( literal 0 HcmV?d00001 diff --git a/include/constants/event_object_movement.h b/include/constants/event_object_movement.h index 25f133f0e..e10294a68 100755 --- a/include/constants/event_object_movement.h +++ b/include/constants/event_object_movement.h @@ -242,6 +242,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 diff --git a/include/constants/event_objects.h b/include/constants/event_objects.h index deb775271..ba53c13fe 100644 --- a/include/constants/event_objects.h +++ b/include/constants/event_objects.h @@ -240,10 +240,12 @@ #define OBJ_EVENT_GFX_LINK_RS_MAY 236 #define OBJ_EVENT_GFX_LUGIA 237 #define OBJ_EVENT_GFX_HOOH 238 -#define OBJ_EVENT_GFX_MARSHTOMP 239 -#define OBJ_EVENT_GFX_ALTARIA 240 +#define OBJ_EVENT_GFX_ANIMATED_BALL 239 +#define OBJ_EVENT_GFX_MARSHTOMP 240 +#define OBJ_EVENT_GFX_ALTARIA 241 +#define OBJ_EVENT_GFX_TOGETIC 242 -#define NUM_OBJ_EVENT_GFX 241 +#define NUM_OBJ_EVENT_GFX 243 // These are dynamic object gfx ids. @@ -283,5 +285,6 @@ #define OBJ_EVENT_ID_PLAYER 0xFF #define OBJ_EVENT_ID_CAMERA 0x7F +#define OBJ_EVENT_ID_FOLLOWER 0xFE #endif // GUARD_CONSTANTS_EVENT_OBJECTS_H diff --git a/include/event_object_movement.h b/include/event_object_movement.h index a6264419c..8f7b0ed82 100644 --- a/include/event_object_movement.h +++ b/include/event_object_movement.h @@ -94,7 +94,11 @@ u8 GetFaceDirectionAnimNum(u8); void SetSpritePosToOffsetMapCoords(s16 *, s16 *, s16, s16); void ObjectEventClearHeldMovement(struct ObjectEvent *); void ObjectEventClearHeldMovementIfActive(struct ObjectEvent *); +u8 SpeciesToGraphicsId(u16 species); +struct Pokemon * GetFirstLiveMon(void); u8 SpawnFollowingPokemon(void); +void UpdateFollowingPokemon(void); +void RemoveFollowingPokemon(void); void TrySpawnObjectEvents(s16, s16); u8 CreateObjectSprite(u8 graphicsId, u8 a1, s16 x, s16 y, u8 z, u8 direction); u8 AddPseudoObjectEvent(u16, void (*)(struct Sprite *), s16 x, s16 y, u8 subpriority); @@ -421,7 +425,7 @@ u8 MovementType_FollowPlayer_Step2(struct ObjectEvent *, struct Sprite *); bool8 FollowablePlayerMovement_Idle(struct ObjectEvent *, struct Sprite *, u8, bool8(u8)); bool8 FollowablePlayerMovement_FaceDirection(struct ObjectEvent *, struct Sprite *, u8, bool8(u8)); -bool8 FollowablePlayerMovement_GoSpeed0(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)); diff --git a/include/event_scripts.h b/include/event_scripts.h index 79ef0ea14..395bdb0bf 100644 --- a/include/event_scripts.h +++ b/include/event_scripts.h @@ -1,6 +1,8 @@ #ifndef GUARD_EVENT_SCRIPTS_H #define GUARD_EVENT_SCRIPTS_H +extern const u8 EventScript_Follower[]; + 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 731fb9c59..073fc3b4c 100644 --- 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); diff --git a/spritesheet_rules.mk b/spritesheet_rules.mk index e030a66c5..48ff32db2 100644 --- a/spritesheet_rules.mk +++ b/spritesheet_rules.mk @@ -468,12 +468,18 @@ $(OBJEVENTGFXDIR)/pokemon/wingull.4bpp: %.4bpp: %.png $(OBJEVENTGFXDIR)/pokemon/zigzagoon.4bpp: %.4bpp: %.png $(GFX) $< $@ -mwidth 2 -mheight 2 +$(OBJEVENTGFXDIR)/misc/animated_ball.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 2 -mheight 4 + $(OBJEVENTGFXDIR)/pokemon/marshtomp.4bpp: %.4bpp: %.png $(GFX) $< $@ -mwidth 2 -mheight 4 $(OBJEVENTGFXDIR)/pokemon/altaria.4bpp: %.4bpp: %.png $(GFX) $< $@ -mwidth 4 -mheight 4 +$(OBJEVENTGFXDIR)/pokemon/togetic.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + $(OBJEVENTGFXDIR)/berry_trees/aguav.4bpp: %.4bpp: %.png $(GFX) $< $@ -mwidth 2 -mheight 4 diff --git a/src/data/object_events/movement_action_func_tables.h b/src/data/object_events/movement_action_func_tables.h index 8cf7d1699..5b3dfcb73 100755 --- a/src/data/object_events/movement_action_func_tables.h +++ b/src/data/object_events/movement_action_func_tables.h @@ -66,6 +66,8 @@ 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_WalkInPlaceNormalUp_Step0(struct ObjectEvent *, struct Sprite *); u8 MovementAction_WalkInPlaceNormalLeft_Step0(struct ObjectEvent *, struct Sprite *); u8 MovementAction_WalkInPlaceNormalRight_Step0(struct ObjectEvent *, struct Sprite *); @@ -74,6 +76,8 @@ u8 MovementAction_WalkInPlaceFastUp_Step0(struct ObjectEvent *, struct Sprite *) u8 MovementAction_WalkInPlaceFastLeft_Step0(struct ObjectEvent *, struct Sprite *); u8 MovementAction_WalkInPlaceFastRight_Step0(struct ObjectEvent *, struct Sprite *); u8 MovementAction_WalkInPlaceFastestDown_Step0(struct ObjectEvent *, struct Sprite *); +u8 MovementAction_ExitPokeball_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite); +u8 MovementAction_EnterPokeball_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite); u8 MovementAction_WalkInPlaceFastestUp_Step0(struct ObjectEvent *, struct Sprite *); u8 MovementAction_WalkInPlaceFastestLeft_Step0(struct ObjectEvent *, struct Sprite *); u8 MovementAction_WalkInPlaceFastestRight_Step0(struct ObjectEvent *, struct Sprite *); @@ -300,6 +304,8 @@ u8 (*const gMovementActionFuncs_WalkInPlaceFastUp[])(struct ObjectEvent *, struc u8 (*const gMovementActionFuncs_WalkInPlaceFastLeft[])(struct ObjectEvent *, struct Sprite *); u8 (*const gMovementActionFuncs_WalkInPlaceFastRight[])(struct ObjectEvent *, struct Sprite *); u8 (*const gMovementActionFuncs_WalkInPlaceFastestDown[])(struct ObjectEvent *, struct Sprite *); +u8 (*const gMovementActionFuncs_ExitPokeball[])(struct ObjectEvent *, struct Sprite *); +u8 (*const gMovementActionFuncs_EnterPokeball[])(struct ObjectEvent *, struct Sprite *); u8 (*const gMovementActionFuncs_WalkInPlaceFastestUp[])(struct ObjectEvent *, struct Sprite *); u8 (*const gMovementActionFuncs_WalkInPlaceFastestLeft[])(struct ObjectEvent *, struct Sprite *); u8 (*const gMovementActionFuncs_WalkInPlaceFastestRight[])(struct ObjectEvent *, struct Sprite *); @@ -580,6 +586,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 *) = { @@ -865,6 +873,18 @@ u8 (*const gMovementActionFuncs_WalkInPlaceFastestDown[])(struct ObjectEvent *, 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_PauseSpriteAnim, +}; + u8 (*const gMovementActionFuncs_WalkInPlaceFastestUp[])(struct ObjectEvent *, struct Sprite *) = { MovementAction_WalkInPlaceFastestUp_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 083e69432..0fe364afe 100755 --- a/src/data/object_events/movement_type_func_tables.h +++ b/src/data/object_events/movement_type_func_tables.h @@ -410,7 +410,7 @@ u8 (*const gMovementTypeFuncs_FollowPlayer[])(struct ObjectEvent *, struct Sprit bool8 (*const gFollowPlayerMovementFuncs[])(struct ObjectEvent *, struct Sprite *, u8, bool8(u8)) = { FollowablePlayerMovement_Idle, FollowablePlayerMovement_Idle, - FollowablePlayerMovement_GoSpeed0, + FollowablePlayerMovement_Step, FollowablePlayerMovement_GoSpeed1, FollowablePlayerMovement_GoSpeed2, FollowablePlayerMovement_Slide, diff --git a/src/data/object_events/object_event_anims.h b/src/data/object_events/object_event_anims.h index f443ea572..5d7f52878 100755 --- a/src/data/object_events/object_event_anims.h +++ b/src/data/object_events/object_event_anims.h @@ -181,24 +181,43 @@ const union AnimCmd gObjectEventImageAnim_FaceSouth[] = ANIMCMD_JUMP(0), }; + const union AnimCmd gObjectEventImageAnim_FaceNorth[] = { ANIMCMD_FRAME(1, 16), ANIMCMD_JUMP(0), }; +const union AnimCmd gObjectEventImageAnim_FaceNorth2F[] = +{ + ANIMCMD_FRAME(2, 16), + ANIMCMD_JUMP(0), +}; + const union AnimCmd gObjectEventImageAnim_FaceWest[] = { ANIMCMD_FRAME(2, 16), ANIMCMD_JUMP(0), }; +const union AnimCmd gObjectEventImageAnim_FaceWest2F[] = +{ + ANIMCMD_FRAME(4, 16), + ANIMCMD_JUMP(0), +}; + const union AnimCmd gObjectEventImageAnim_FaceEast[] = { ANIMCMD_FRAME(2, 16, .hFlip = TRUE), ANIMCMD_JUMP(0), }; +const union AnimCmd gObjectEventImageAnim_FaceEast2F[] = +{ + ANIMCMD_FRAME(4, 16, .hFlip = TRUE), + ANIMCMD_JUMP(0), +}; + const union AnimCmd gObjectEventImageAnim_GoSouth[] = { ANIMCMD_FRAME(3, 8), @@ -210,9 +229,9 @@ const union AnimCmd gObjectEventImageAnim_GoSouth[] = const union AnimCmd gObjectEventImageAnim_GoSouth2F[] = { - ANIMCMD_FRAME(3, 6), - ANIMCMD_FRAME(4, 6), - ANIMCMD_FRAME(4, 6), + ANIMCMD_FRAME(0, 6), + ANIMCMD_FRAME(1, 6), + ANIMCMD_FRAME(1, 6), ANIMCMD_FRAME(0, 6), ANIMCMD_JUMP(0), }; @@ -228,11 +247,11 @@ const union AnimCmd gObjectEventImageAnim_GoNorth[] = const union AnimCmd gObjectEventImageAnim_GoNorth2F[] = { - ANIMCMD_FRAME(5, 6), - ANIMCMD_FRAME(6, 6), - ANIMCMD_FRAME(6, 6), - ANIMCMD_FRAME(1, 6), - ANIMCMD_JUMP(0), + ANIMCMD_FRAME(2, 6), + ANIMCMD_FRAME(3, 6), + ANIMCMD_FRAME(3, 6), + ANIMCMD_FRAME(2, 6), + ANIMCMD_JUMP(0), }; const union AnimCmd gObjectEventImageAnim_GoWest[] = @@ -246,10 +265,10 @@ const union AnimCmd gObjectEventImageAnim_GoWest[] = const union AnimCmd gObjectEventImageAnim_GoWest2F[] = { - ANIMCMD_FRAME(7, 6), - ANIMCMD_FRAME(8, 6), - ANIMCMD_FRAME(8, 6), - ANIMCMD_FRAME(2, 6), + ANIMCMD_FRAME(4, 6), + ANIMCMD_FRAME(5, 6), + ANIMCMD_FRAME(5, 6), + ANIMCMD_FRAME(4, 6), ANIMCMD_JUMP(0), }; @@ -264,10 +283,10 @@ const union AnimCmd gObjectEventImageAnim_GoEast[] = const union AnimCmd gObjectEventImageAnim_GoEast2F[] = { - ANIMCMD_FRAME(7, 6, .hFlip = TRUE), - ANIMCMD_FRAME(8, 6, .hFlip = TRUE), - ANIMCMD_FRAME(8, 6, .hFlip = TRUE), - ANIMCMD_FRAME(2, 6, .hFlip = TRUE), + 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), }; @@ -280,6 +299,15 @@ const union AnimCmd gObjectEventImageAnim_GoFastSouth[] = ANIMCMD_JUMP(0), }; +const union AnimCmd gObjectEventImageAnim_GoFastSouth2F[] = +{ + ANIMCMD_FRAME(0, 4), + ANIMCMD_FRAME(1, 4), + ANIMCMD_FRAME(1, 4), + ANIMCMD_FRAME(0, 4), + ANIMCMD_JUMP(0), +}; + const union AnimCmd gObjectEventImageAnim_GoFastNorth[] = { ANIMCMD_FRAME(5, 4), @@ -289,6 +317,15 @@ const union AnimCmd gObjectEventImageAnim_GoFastNorth[] = ANIMCMD_JUMP(0), }; +const union AnimCmd gObjectEventImageAnim_GoFastNorth2F[] = +{ + ANIMCMD_FRAME(2, 4), + ANIMCMD_FRAME(3, 4), + ANIMCMD_FRAME(3, 4), + ANIMCMD_FRAME(2, 4), + ANIMCMD_JUMP(0), +}; + const union AnimCmd gObjectEventImageAnim_GoFastWest[] = { ANIMCMD_FRAME(7, 4), @@ -298,6 +335,15 @@ const union AnimCmd gObjectEventImageAnim_GoFastWest[] = ANIMCMD_JUMP(0), }; +const union AnimCmd gObjectEventImageAnim_GoFastWest2F[] = +{ + ANIMCMD_FRAME(4, 4), + ANIMCMD_FRAME(5, 4), + ANIMCMD_FRAME(5, 4), + ANIMCMD_FRAME(4, 4), + ANIMCMD_JUMP(0), +}; + const union AnimCmd gObjectEventImageAnim_GoFastEast[] = { ANIMCMD_FRAME(7, 4, .hFlip = TRUE), @@ -307,6 +353,15 @@ const union AnimCmd gObjectEventImageAnim_GoFastEast[] = ANIMCMD_JUMP(0), }; +const union AnimCmd gObjectEventImageAnim_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), +}; + const union AnimCmd gObjectEventImageAnim_GoFasterSouth[] = { ANIMCMD_FRAME(3, 2), @@ -316,6 +371,31 @@ const union AnimCmd gObjectEventImageAnim_GoFasterSouth[] = ANIMCMD_JUMP(0), }; +const union AnimCmd gObjectEventImageAnim_ExitPokeball[] = +{ + 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, 6), + ANIMCMD_JUMP(0), +}; + +const union AnimCmd gObjectEventImageAnim_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), +}; + const union AnimCmd gObjectEventImageAnim_GoFasterNorth[] = { ANIMCMD_FRAME(5, 2), @@ -325,6 +405,18 @@ const union AnimCmd gObjectEventImageAnim_GoFasterNorth[] = ANIMCMD_JUMP(0), }; +const union AnimCmd gObjectEventImageAnim_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), +}; + const union AnimCmd gObjectEventImageAnim_GoFasterWest[] = { ANIMCMD_FRAME(7, 2), @@ -334,6 +426,18 @@ const union AnimCmd gObjectEventImageAnim_GoFasterWest[] = ANIMCMD_JUMP(0), }; +const union AnimCmd gObjectEventImageAnim_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), +}; + const union AnimCmd gObjectEventImageAnim_GoFasterEast[] = { ANIMCMD_FRAME(7, 2, .hFlip = TRUE), @@ -343,6 +447,18 @@ const union AnimCmd gObjectEventImageAnim_GoFasterEast[] = ANIMCMD_JUMP(0), }; +const union AnimCmd gObjectEventImageAnim_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), +}; + const union AnimCmd gObjectEventImageAnim_GoFastestSouth[] = { ANIMCMD_FRAME(3, 1), @@ -352,6 +468,18 @@ const union AnimCmd gObjectEventImageAnim_GoFastestSouth[] = ANIMCMD_JUMP(0), }; +const union AnimCmd gObjectEventImageAnim_ExitPokeballFast[] = +{ + ANIMCMD_FRAME(0, 1), + ANIMCMD_FRAME(1, 1), + ANIMCMD_FRAME(2, 1), + ANIMCMD_FRAME(3, 1), + ANIMCMD_FRAME(4, 1), + ANIMCMD_FRAME(0, 1), + ANIMCMD_FRAME(0, 1), + ANIMCMD_JUMP(0), +}; + const union AnimCmd gObjectEventImageAnim_GoFastestNorth[] = { ANIMCMD_FRAME(5, 1), @@ -883,25 +1011,25 @@ const union AnimCmd *const gObjectEventImageAnimTable_Standard[] = { const union AnimCmd *const gObjectEventImageAnimTable_Following[] = { gObjectEventImageAnim_FaceSouth, - gObjectEventImageAnim_FaceNorth, - gObjectEventImageAnim_FaceWest, - gObjectEventImageAnim_FaceEast, + gObjectEventImageAnim_FaceNorth2F, + gObjectEventImageAnim_FaceWest2F, + gObjectEventImageAnim_FaceEast2F, gObjectEventImageAnim_GoSouth2F, gObjectEventImageAnim_GoNorth2F, gObjectEventImageAnim_GoWest2F, gObjectEventImageAnim_GoEast2F, - gObjectEventImageAnim_GoFastSouth, - gObjectEventImageAnim_GoFastNorth, - gObjectEventImageAnim_GoFastWest, - gObjectEventImageAnim_GoFastEast, - gObjectEventImageAnim_GoFasterSouth, - gObjectEventImageAnim_GoFasterNorth, - gObjectEventImageAnim_GoFasterWest, - gObjectEventImageAnim_GoFasterEast, - gObjectEventImageAnim_GoFastestSouth, - gObjectEventImageAnim_GoFastestNorth, - gObjectEventImageAnim_GoFastestWest, - gObjectEventImageAnim_GoFastestEast, + gObjectEventImageAnim_GoFastSouth2F, + gObjectEventImageAnim_GoFastNorth2F, + gObjectEventImageAnim_GoFastWest2F, + gObjectEventImageAnim_GoFastEast2F, + gObjectEventImageAnim_EnterSouth, + gObjectEventImageAnim_EnterNorth, + gObjectEventImageAnim_EnterWest, + gObjectEventImageAnim_EnterEast, + gObjectEventImageAnim_ExitPokeball, + gObjectEventImageAnim_ExitPokeballFast, + gObjectEventImageAnim_ExitPokeball, + gObjectEventImageAnim_ExitPokeball, }; const union AnimCmd *const gObjectEventImageAnimTable_HoOh[] = { @@ -1203,6 +1331,10 @@ const struct UnkStruct_085094AC gUnknown_085094AC[] = { .anims = gObjectEventImageAnimTable_Standard, .animPos = {1, 3, 0, 2}, }, + { + .anims = gObjectEventImageAnimTable_Following, + .animPos = {1, 3, 0, 2}, + }, { .anims = gObjectEventImageAnimTable_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 47d15eac0..3c04b78de 100755 --- a/src/data/object_events/object_event_graphics.h +++ b/src/data/object_events/object_event_graphics.h @@ -69,6 +69,8 @@ const u16 gObjectEventPal_Npc2Reflection[] = INCBIN_U16("graphics/object_events/ const u16 gObjectEventPal_Npc3Reflection[] = INCBIN_U16("graphics/object_events/palettes/npc_3_reflection.gbapal"); const u16 gObjectEventPal_Npc4Reflection[] = INCBIN_U16("graphics/object_events/palettes/npc_4_reflection.gbapal"); const u16 gObjectEventPaletteMarshtomp[] = INCBIN_U16("graphics/object_events/palettes/marshtomp.gbapal"); +const u16 gObjectEventPaletteAltaria[] = INCBIN_U16("graphics/object_events/palettes/altaria.gbapal"); +const u16 gObjectEventPaletteTogetic[] = INCBIN_U16("graphics/object_events/palettes/togetic.gbapal"); const u32 gObjectEventPic_NinjaBoy[] = INCBIN_U32("graphics/object_events/pics/people/ninja_boy.4bpp"); const u32 gObjectEventPic_Twin[] = INCBIN_U32("graphics/object_events/pics/people/twin.4bpp"); const u32 gObjectEventPic_Boy1[] = INCBIN_U32("graphics/object_events/pics/people/boy_1.4bpp"); @@ -361,6 +363,8 @@ const u32 gObjectEventPic_Lugia[] = INCBIN_U32("graphics/object_events/pics/poke 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"); +const u32 gObjectEventPic_AnimatedBall[] = INCBIN_U32("graphics/object_events/pics/misc/animated_ball.4bpp"); const u32 gObjectEventPic_Marshtomp[] = INCBIN_U32("graphics/object_events/pics/pokemon/marshtomp.4bpp"); const u32 gObjectEventPic_Altaria[] = INCBIN_U32("graphics/object_events/pics/pokemon/altaria.4bpp"); +const u32 gObjectEventPic_Togetic[] = INCBIN_U32("graphics/object_events/pics/pokemon/togetic.4bpp"); const u16 gObjectEventPalette31[] = INCBIN_U16("graphics/object_events/palettes/31.gbapal"); diff --git a/src/data/object_events/object_event_graphics_info.h b/src/data/object_events/object_event_graphics_info.h index 661db38c4..a97f14357 100755 --- a/src/data/object_events/object_event_graphics_info.h +++ b/src/data/object_events/object_event_graphics_info.h @@ -243,5 +243,7 @@ const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_RubySapphireBrenda const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_RubySapphireMay = {0xFFFF, OBJ_EVENT_PAL_TAG_RS_MAY, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_RubySapphireMay, gDummySpriteAffineAnimTable}; const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Lugia = {0xFFFF, OBJ_EVENT_PAL_TAG_LUGIA, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_Lugia, gDummySpriteAffineAnimTable}; const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_HoOh = {0xFFFF, OBJ_EVENT_PAL_TAG_HO_OH, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_HoOh, gObjectEventPicTable_HoOh, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Marshtomp = {0xFFFF, OBJ_EVENT_PAL_TAG_MARSHTOMP, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_Marshtomp, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Altaria = {0xFFFF, OBJ_EVENT_PAL_TAG_MARSHTOMP, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_Altaria, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_AnimatedBall = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_2, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_AnimatedBall, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Marshtomp = {0xFFFF, OBJ_EVENT_PAL_TAG_MARSHTOMP, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_Marshtomp, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Altaria = {0xFFFF, OBJ_EVENT_PAL_TAG_ALTARIA, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_Altaria, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Togetic = {0xFFFF, OBJ_EVENT_PAL_TAG_TOGETIC, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_Togetic, 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 cb94026ee..61d8c0e7d 100755 --- a/src/data/object_events/object_event_graphics_info_pointers.h +++ b/src/data/object_events/object_event_graphics_info_pointers.h @@ -237,8 +237,10 @@ const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_RubySapphireBrenda const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_RubySapphireMay; const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Lugia; const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_HoOh; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_AnimatedBall; const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Marshtomp; const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Altaria; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Togetic; const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Bard; const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Hipster; @@ -489,8 +491,10 @@ 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_MARSHTOMP] = &gObjectEventGraphicsInfo_Marshtomp, [OBJ_EVENT_GFX_ALTARIA] = &gObjectEventGraphicsInfo_Altaria, + [OBJ_EVENT_GFX_TOGETIC] = &gObjectEventGraphicsInfo_Togetic, }; 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 f63f26527..8ddd85178 100755 --- a/src/data/object_events/object_event_pic_tables.h +++ b/src/data/object_events/object_event_pic_tables.h @@ -2149,6 +2149,15 @@ const struct SpriteFrameImage gObjectEventPicTable_HoOh[] = { overworld_frame(gObjectEventPic_HoOh, 4, 4, 1), }; +const struct SpriteFrameImage gObjectEventPicTable_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), +}; + const struct SpriteFrameImage gObjectEventPicTable_Marshtomp[] = { overworld_frame(gObjectEventPic_Marshtomp, 2, 4, 0), overworld_frame(gObjectEventPic_Marshtomp, 2, 4, 1), @@ -2156,9 +2165,6 @@ const struct SpriteFrameImage gObjectEventPicTable_Marshtomp[] = { overworld_frame(gObjectEventPic_Marshtomp, 2, 4, 3), overworld_frame(gObjectEventPic_Marshtomp, 2, 4, 4), overworld_frame(gObjectEventPic_Marshtomp, 2, 4, 5), - overworld_frame(gObjectEventPic_Marshtomp, 2, 4, 6), - overworld_frame(gObjectEventPic_Marshtomp, 2, 4, 7), - overworld_frame(gObjectEventPic_Marshtomp, 2, 4, 8), }; const struct SpriteFrameImage gObjectEventPicTable_Altaria[] = { @@ -2173,6 +2179,15 @@ const struct SpriteFrameImage gObjectEventPicTable_Altaria[] = { overworld_frame(gObjectEventPic_Altaria, 4, 4, 8), }; +const struct SpriteFrameImage gObjectEventPicTable_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), +}; + const struct SpriteFrameImage gObjectEventPicTable_RubySapphireBrendan[] = { overworld_frame(gObjectEventPic_RubySapphireBrendanNormal, 2, 4, 0), overworld_frame(gObjectEventPic_RubySapphireBrendanNormal, 2, 4, 1), diff --git a/src/event_object_movement.c b/src/event_object_movement.c index c57b39e73..69b600815 100644 --- a/src/event_object_movement.c +++ b/src/event_object_movement.c @@ -16,6 +16,7 @@ #include "metatile_behavior.h" #include "overworld.h" #include "palette.h" +#include "pokemon.h" #include "random.h" #include "sprite.h" #include "task.h" @@ -27,6 +28,7 @@ #include "constants/field_effects.h" #include "constants/items.h" #include "constants/mauville_old_man.h" +#include "constants/species.h" #include "constants/trainer_types.h" #include "constants/union_room.h" @@ -440,6 +442,8 @@ const u8 gInitialMovementTypeFacingDirections[] = { #define OBJ_EVENT_PAL_TAG_RS_BRENDAN 0x1122 #define OBJ_EVENT_PAL_TAG_RS_MAY 0x1123 #define OBJ_EVENT_PAL_TAG_MARSHTOMP 0x1124 +#define OBJ_EVENT_PAL_TAG_ALTARIA 0x1125 +#define OBJ_EVENT_PAL_TAG_TOGETIC 0x1126 #define OBJ_EVENT_PAL_TAG_NONE 0x11FF #include "data/object_events/object_event_graphics_info_pointers.h" @@ -487,6 +491,8 @@ static const struct SpritePalette sObjectEventSpritePalettes[] = { {gObjectEventPal_RubySapphireBrendan, OBJ_EVENT_PAL_TAG_RS_BRENDAN}, {gObjectEventPal_RubySapphireMay, OBJ_EVENT_PAL_TAG_RS_MAY}, {gObjectEventPaletteMarshtomp, OBJ_EVENT_PAL_TAG_MARSHTOMP}, + {gObjectEventPaletteAltaria, OBJ_EVENT_PAL_TAG_ALTARIA}, + {gObjectEventPaletteTogetic, OBJ_EVENT_PAL_TAG_TOGETIC}, {NULL, 0x0000}, }; @@ -1368,24 +1374,8 @@ static u8 TrySetupObjectEventSprite(struct ObjectEventTemplate *objectEventTempl objectEvent = &gObjectEvents[objectEventId]; graphicsInfo = GetObjectEventGraphicsInfo(objectEvent->graphicsId); -<<<<<<< HEAD - paletteSlot = graphicsInfo->paletteSlot; - if (paletteSlot == 0) - { - LoadPlayerObjectReflectionPalette(graphicsInfo->paletteTag, 0); - } - else if (paletteSlot == 10) - { - LoadSpecialObjectReflectionPalette(graphicsInfo->paletteTag, 10); - } - else if (paletteSlot >= 16) - { - paletteSlot -= 16; - sub_808EAB0(graphicsInfo->paletteTag, paletteSlot); -======= if (spriteTemplate->paletteTag != 0xffff) { LoadObjectEventPalette(spriteTemplate->paletteTag); ->>>>>>> ecbde8db7 (Added dynamic overworld palettes (github.com/pret/pokeemerald/wiki/Dynamic-overworld-palette-system)) } if (objectEvent->movementType == MOVEMENT_TYPE_INVISIBLE) @@ -1585,24 +1575,107 @@ u8 CreateObjectSprite(u8 graphicsId, u8 a1, s16 x, s16 y, u8 z, u8 direction) return spriteId; } -u8 SpawnFollowingPokemon(void) { +u8 SpeciesToGraphicsId(u16 species) { // TODO: Eventually graphicsIds will have to be u16's + switch (species) { + case SPECIES_MARSHTOMP: + return OBJ_EVENT_GFX_MARSHTOMP; + break; + case SPECIES_ALTARIA: + return OBJ_EVENT_GFX_ALTARIA; + break; + case SPECIES_TOGETIC: + return OBJ_EVENT_GFX_TOGETIC; + break; + default: + return OBJ_EVENT_GFX_DUSCLOPS; // TODO: Change this + } +} + +struct Pokemon * GetFirstLiveMon(void) { // Return address of first conscious party mon or NULL + struct Pokemon *mon; + u8 i; + for (i=0; i 0 && !(gPlayerParty[i].box.isEgg || gPlayerParty[i].box.isBadEgg)) { + return &gPlayerParty[i]; + } + } + return NULL; +} + +u8 SpawnFollowingPokemon(void) { // Spawn a following pokemon TODO: Avoid this on certain maps + struct Pokemon *mon; + u8 graphicsId; u8 objectEventId; struct ObjectEventTemplate template = {0}; - template.localId = 0xFE; - template.graphicsId = OBJ_EVENT_GFX_MARSHTOMP; + template.localId = OBJ_EVENT_ID_FOLLOWER; + mon = GetFirstLiveMon(); + if (mon == NULL) { // fainted party, don't spawn an object TODO + return 0; + } + template.graphicsId = SpeciesToGraphicsId(GetMonData(mon, MON_DATA_SPECIES)); template.x = gSaveBlock1Ptr->pos.x; template.y = gSaveBlock1Ptr->pos.y; template.elevation = 5; template.movementType = MOVEMENT_TYPE_FOLLOW_PLAYER; - template.trainerType = 0xFE; - template.script = NULL; + // template.script = EventScript_Follower; // This does nothing because scripts are templated objectEventId = SpawnSpecialObjectEvent(&template); gObjectEvents[objectEventId].invisible = TRUE; gObjectEvents[objectEventId].hasShadow = TRUE; return objectEventId; } +void UpdateFollowingPokemon(void) { + u8 i; + u8 graphicsId; + struct ObjectEvent *objectEvent = NULL; + struct Pokemon *mon; + + // TODO: Improve finding player following pokemon + for (i=0; i < OBJECT_EVENTS_COUNT; i++) { + if (gObjectEvents[i].localId == 0xFE) { + objectEvent = &gObjectEvents[i]; + break; + } + } + if (objectEvent == NULL) { + return; + } + mon = GetFirstLiveMon(); + if (mon == NULL) { // TODO: Fainted party + return; + } + graphicsId = SpeciesToGraphicsId(GetMonData(mon, MON_DATA_SPECIES)); + if (graphicsId != objectEvent->graphicsId) { // Mark as invisible + MoveObjectEventToMapCoords(objectEvent, gObjectEvents[gPlayerAvatar.objectEventId].currentCoords.x, gObjectEvents[gPlayerAvatar.objectEventId].currentCoords.y); + objectEvent->invisible = TRUE; + gSprites[objectEvent->spriteId].data[1] = 0; // set state + gSprites[objectEvent->spriteId].data[6] = 0; // set graphicsId + gSprites[objectEvent->spriteId].data[7] = 0; // set animation data + } + objectEvent->graphicsId = graphicsId; + return; +} + +void RemoveFollowingPokemon(void) { + struct ObjectEvent *objectEvent = NULL; + u8 i; + for (i=0; i < OBJECT_EVENTS_COUNT; i++) { + if (gObjectEvents[i].localId == 0xFE) { + objectEvent = &gObjectEvents[i]; + break; + } + } + 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); +} + void TrySpawnObjectEvents(s16 cameraX, s16 cameraY) { u8 i; @@ -1720,28 +1793,9 @@ static void sub_808E1B8(u8 objectEventId, s16 x, s16 y) spriteFrameImage.size = graphicsInfo->size; MakeObjectTemplateFromObjectEventGraphicsInfoWithCallbackIndex(objectEvent->graphicsId, objectEvent->movementType, &spriteTemplate, &subspriteTables); spriteTemplate.images = &spriteFrameImage; -<<<<<<< HEAD - *(u16 *)&spriteTemplate.paletteTag = 0xFFFF; - paletteSlot = graphicsInfo->paletteSlot; - if (paletteSlot == 0) - { - LoadPlayerObjectReflectionPalette(graphicsInfo->paletteTag, graphicsInfo->paletteSlot); - } - else if (paletteSlot == 10) - { - LoadSpecialObjectReflectionPalette(graphicsInfo->paletteTag, graphicsInfo->paletteSlot); - } - else if (paletteSlot >= 16) - { - paletteSlot -= 16; - sub_808EAB0(graphicsInfo->paletteTag, paletteSlot); - } - *(u16 *)&spriteTemplate.paletteTag = 0xFFFF; -======= if (spriteTemplate.paletteTag != 0xffff) { LoadObjectEventPalette(spriteTemplate.paletteTag); } ->>>>>>> ecbde8db7 (Added dynamic overworld palettes (github.com/pret/pokeemerald/wiki/Dynamic-overworld-palette-system)) spriteId = CreateSprite(&spriteTemplate, 0, 0, 0); if (spriteId != MAX_SPRITES) { @@ -1798,30 +1852,40 @@ void ObjectEventSetGraphicsId(struct ObjectEvent *objectEvent, u8 graphicsId) { const struct ObjectEventGraphicsInfo *graphicsInfo; struct Sprite *sprite; - u8 paletteSlot; + u16 i; + u8 paletteNum; + u16 *debugPtr = (u16*) 0x0203d008; graphicsInfo = GetObjectEventGraphicsInfo(graphicsId); sprite = &gSprites[objectEvent->spriteId]; - paletteSlot = graphicsInfo->paletteSlot; - if (paletteSlot == 0) - { - PatchObjectPalette(graphicsInfo->paletteTag, graphicsInfo->paletteSlot); - } - else if (paletteSlot == 10) - { - LoadSpecialObjectReflectionPalette(graphicsInfo->paletteTag, graphicsInfo->paletteSlot); - } - else if (paletteSlot >= 16) - { - paletteSlot -= 16; - sub_808EAB0(graphicsInfo->paletteTag, paletteSlot); + *debugPtr = graphicsId; + *(debugPtr + 1) = graphicsInfo->paletteSlot; + if (graphicsInfo->paletteSlot == 0) { // Hack until I can fix this + PatchObjectPalette(graphicsInfo->paletteTag1, graphicsInfo->paletteSlot); + paletteNum = 0; + } else { + paletteNum = sprite->oam.paletteNum; + // Free old palette if otherwise unused + sprite->inUse = FALSE; + FieldEffectFreePaletteIfUnused(paletteNum); + sprite->inUse = TRUE; + + i = FindObjectEventPaletteIndexByTag(graphicsInfo->paletteTag1); + *(debugPtr + 2) = i; + paletteNum = IndexOfSpritePaletteTag(sObjectEventSpritePalettes[i].tag); + *(debugPtr + 3) = paletteNum; + if (paletteNum == 0xFF) { // Load palette + paletteNum = LoadSpritePalette(&sObjectEventSpritePalettes[i]); + } } + *(debugPtr + 4) = paletteNum; + sprite->oam.paletteNum = paletteNum; + *((u32*) (debugPtr + 6)) = (u32) &sprite->oam; 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->pos1.x, &sprite->pos1.y); @@ -2374,6 +2438,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; } @@ -4461,7 +4528,11 @@ movement_type_def(MovementType_FollowPlayer, gMovementTypeFuncs_FollowPlayer) bool8 MovementType_FollowPlayer_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite) { ClearObjectEventMovement(objectEvent, sprite); - if (TestPlayerAvatarFlags(PLAYER_AVATAR_FLAG_SURFING | PLAYER_AVATAR_FLAG_ACRO_BIKE | PLAYER_AVATAR_FLAG_MACH_BIKE)) { + if (sprite->data[6]) { // Restore graphicsId TODO: Change this hack + ObjectEventSetGraphicsId(objectEvent, sprite->data[6]); + sprite->data[6] = 0; + } + if (!IsFollowerVisible()) { // Shadow player's position objectEvent->invisible = TRUE; MoveObjectEventToMapCoords(objectEvent, gObjectEvents[gPlayerAvatar.objectEventId].currentCoords.x, gObjectEvents[gPlayerAvatar.objectEventId].currentCoords.y); return FALSE; @@ -4472,10 +4543,10 @@ bool8 MovementType_FollowPlayer_Step0(struct ObjectEvent *objectEvent, struct Sp bool8 MovementType_FollowPlayer_Step1(struct ObjectEvent *objectEvent, struct Sprite *sprite) { - if (gObjectEvents[gPlayerAvatar.objectEventId].movementActionId == 0xFF || gPlayerAvatar.tileTransitionState == T_TILE_CENTER) - { + if (gObjectEvents[gPlayerAvatar.objectEventId].movementActionId == 0xFF || gPlayerAvatar.tileTransitionState == T_TILE_CENTER) { // do nothing if player is stationary return FALSE; } + // TODO: Remove dependence on PlayerGetCopyableMovement return gFollowPlayerMovementFuncs[PlayerGetCopyableMovement()](objectEvent, sprite, GetPlayerMovementDirection(), NULL); } @@ -4486,55 +4557,67 @@ bool8 MovementType_FollowPlayer_Step2(struct ObjectEvent *objectEvent, struct Sp objectEvent->singleMovementActive = 0; sprite->data[1] = 1; } + objectEvent->invisible = FALSE; return FALSE; } bool8 FollowablePlayerMovement_Idle(struct ObjectEvent *objectEvent, struct Sprite *sprite, u8 playerDirection, bool8 tileCallback(u8)) { - if (!objectEvent->singleMovementActive) { + u8 direction; + if (!IsFollowerVisible()) { // Animate entering pokeball + if (objectEvent->invisible) { + return FALSE; + } + ClearObjectEventMovement(objectEvent, sprite); + ObjectEventSetSingleMovement(objectEvent, sprite, MOVEMENT_ACTION_ENTER_POKEBALL); + objectEvent->singleMovementActive = 1; + sprite->animCmdIndex = 0; // Needed because of weird animCmdIndex stuff + sprite->data[1] = 2; // movement action sets state to 0 later + return TRUE; + } else if (!objectEvent->singleMovementActive) { // walk in place ObjectEventSetSingleMovement(objectEvent, sprite, GetWalkInPlaceNormalMovementAction(objectEvent->facingDirection)); objectEvent->singleMovementActive = 1; return TRUE; - } - if (ObjectEventExecSingleMovementAction(objectEvent, sprite)) { + } else if (ObjectEventExecSingleMovementAction(objectEvent, sprite)) { // finish movement action objectEvent->singleMovementActive = 0; } return FALSE; } -bool8 FollowablePlayerMovement_GoSpeed0(struct ObjectEvent *objectEvent, struct Sprite *sprite, u8 playerDirection, bool8 tileCallback(u8)) +bool8 FollowablePlayerMovement_Step(struct ObjectEvent *objectEvent, struct Sprite *sprite, u8 playerDirection, bool8 tileCallback(u8)) { u32 direction; s16 x; s16 y; s16 targetX; s16 targetY; - u32 *debugPtr; - debugPtr = (u32*) 0x0203d000; + u32 *debugPtr = (u32*) 0x0203d000; + *(debugPtr) = (u32) &sprite->data[0]; + targetX = gObjectEvents[gPlayerAvatar.objectEventId].previousCoords.x; targetY = gObjectEvents[gPlayerAvatar.objectEventId].previousCoords.y; x = gObjectEvents[gPlayerAvatar.objectEventId].currentCoords.x; y = gObjectEvents[gPlayerAvatar.objectEventId].currentCoords.y; - *debugPtr = (u32) x + (y << 16); - *(debugPtr + 1) = (u32) targetX + (targetY << 16); - if (x == targetX && y == targetY) { // don't move if the player collided + + 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; - *(debugPtr + 2) = (u32) x + (y << 16); - if (x == targetX && y == targetY) { // don't move if already in the player's last position + ClearObjectEventMovement(objectEvent, sprite); + + if (objectEvent->invisible) { // Animate exiting pokeball + MoveObjectEventToMapCoords(objectEvent, targetX, targetY); + ObjectEventSetSingleMovement(objectEvent, sprite, MOVEMENT_ACTION_EXIT_POKEBALL); + objectEvent->singleMovementActive = 1; + sprite->animCmdIndex = 0; // Needed because of weird animCmdIndex stuff + sprite->data[1] = 2; + return TRUE; + } else if (x == targetX && y == targetY) { // don't move if already in the player's last position return FALSE; } - ClearObjectEventMovement(objectEvent, sprite); - // Change state to invisible - if (TestPlayerAvatarFlags(PLAYER_AVATAR_FLAG_SURFING | PLAYER_AVATAR_FLAG_ACRO_BIKE | PLAYER_AVATAR_FLAG_MACH_BIKE)) { - objectEvent->invisible = TRUE; - sprite->data[1] = 0; - return FALSE; - } - objectEvent->invisible = FALSE; + // Follow player direction = GetDirectionToFace(x, y, targetX, targetY); ObjectEventMoveDestCoords(objectEvent, direction, &x, &y); if (TestPlayerAvatarFlags(PLAYER_AVATAR_FLAG_DASH)) { // Set follow speed accordingly @@ -5059,7 +5142,7 @@ static bool8 DoesObjectCollideWithObjectAt(struct ObjectEvent *objectEvent, s16 for (i = 0; i < OBJECT_EVENTS_COUNT; i++) { curObject = &gObjectEvents[i]; - if (curObject->active && (curObject->trainerType != 0xFE || objectEvent != &gObjectEvents[gPlayerAvatar.objectEventId]) && 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)) { @@ -6066,6 +6149,87 @@ 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) { + struct SpritePalette dynamicPalette; + u16 paletteData[16]; + u16 i = GetObjectEventGraphicsInfo(objectEvent->graphicsId)->paletteTag1; + u8 j; + i = FindObjectEventPaletteIndexByTag(i); + dynamicPalette.tag = OBJ_EVENT_PAL_TAG_NONE-1; // TODO: Use a proper palette tag here + dynamicPalette.data = paletteData; + paletteData[0] = sObjectEventSpritePalettes[i].data[0]; + for (j=1; j<16; j++) { + paletteData[j] = 0xFFFF; + } + sprite->oam.paletteNum = LoadSpritePalette(&dynamicPalette); + return sprite->oam.paletteNum; +} + +bool8 MovementAction_ExitPokeball_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite) { + + + if (TestPlayerAvatarFlags(PLAYER_AVATAR_FLAG_DASH)) { + sub_8094554(objectEvent, sprite, DIR_SOUTH, GetMoveDirectionFastestAnimNum(DIR_NORTH), 8); + sprite->data[7] = 0; // fast speed + } else { + sub_8094554(objectEvent, sprite, DIR_SOUTH, GetMoveDirectionFastestAnimNum(DIR_SOUTH), 16); + sprite->data[7] = 1; // slow speed + } + sprite->data[6] = objectEvent->graphicsId; + ObjectEventSetGraphicsId(objectEvent, OBJ_EVENT_GFX_ANIMATED_BALL); + return MovementAction_ExitPokeball_Step1(objectEvent, sprite); +} + +bool8 MovementAction_ExitPokeball_Step1(struct ObjectEvent *objectEvent, struct Sprite *sprite) +{ + u8 duration = sprite->data[7] & 0xF; + sprite->data[3]--; + if (sprite->data[3] == 0) + { + sprite->data[2] = 2; + sprite->animPaused = TRUE; + return TRUE; + // Restore graphicsId and set palette to white + } else if ((duration == 0 && sprite->data[3] == 3) || (duration == 1 && sprite->data[3] == 7)) { + ObjectEventSetGraphicsId(objectEvent, sprite->data[6]); + sprite->data[7] = (sprite->oam.paletteNum << 4) | (sprite->data[7] & 0xFF0F); // Save old paletteNum + LoadWhiteFlashPalette(objectEvent, sprite); + // Restore original palette + } else if ((duration == 0 && sprite->data[3] == 1) || (duration == 1 && sprite->data[3] == 3)) { + FreeSpritePaletteByTag(OBJ_EVENT_PAL_TAG_NONE-1); + sprite->oam.paletteNum = (sprite->data[7] >> 4) & 0xF; + } + return FALSE; +} + +bool8 MovementAction_EnterPokeball_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite) { + u8 direction = objectEvent->facingDirection; + sub_8094554(objectEvent, sprite, direction, GetMoveDirectionFasterAnimNum(direction), 16); + sprite->data[7] = 1; // slow speed + sprite->data[6] = objectEvent->graphicsId; + return MovementAction_EnterPokeball_Step1(objectEvent, sprite); +} + +bool8 MovementAction_EnterPokeball_Step1(struct ObjectEvent *objectEvent, struct Sprite *sprite) +{ + sprite->data[3]--; + if (sprite->data[3] == 0) + { + sprite->data[2] = 2; + sprite->animPaused = TRUE; + return TRUE; + } else if (sprite->data[3] == 1) { // Change state + sprite->data[1] = 0; + } else if (sprite->data[3] == 11) { // Set palette to white + LoadWhiteFlashPalette(objectEvent, sprite); + } else if (sprite->data[3] == 7) { // Free white palette and change to pokeball + FreeSpritePaletteByTag(OBJ_EVENT_PAL_TAG_NONE-1); + ObjectEventSetGraphicsId(objectEvent, OBJ_EVENT_GFX_ANIMATED_BALL); + } + return FALSE; +} + bool8 MovementAction_WalkInPlaceSlowUp_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite) { sub_8094554(objectEvent, sprite, DIR_NORTH, GetMoveDirectionAnimNum(DIR_NORTH), 32); @@ -7849,7 +8013,8 @@ static void GetGroundEffectFlags_ShallowFlowingWater(struct ObjectEvent *objEven || (MetatileBehavior_IsPacifidlogLog(objEvent->currentMetatileBehavior) && MetatileBehavior_IsPacifidlogLog(objEvent->previousMetatileBehavior))) { - if (!objEvent->inShallowFlowingWater) + // Only set flags if objEvent leaves tracks + if (!objEvent->inShallowFlowingWater && GetObjectEventGraphicsInfo(objEvent->graphicsId)->tracks) { objEvent->inShallowFlowingWater = 0; objEvent->inShallowFlowingWater = 1; diff --git a/src/field_effect.c b/src/field_effect.c index 162a530ca..8e2a3b067 100644 --- a/src/field_effect.c +++ b/src/field_effect.c @@ -66,7 +66,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); @@ -407,35 +406,35 @@ static const struct SpriteFrameImage sPicTable_HofMonitorSmall[] = static const struct Subsprite sSubsprites_PokecenterMonitor[] = { { - .x = -12, - .y = -8, - .shape = SPRITE_SHAPE(16x8), + .x = -12, + .y = -8, + .shape = SPRITE_SHAPE(16x8), .size = SPRITE_SIZE(16x8), - .tileOffset = 0, + .tileOffset = 0, .priority = 2 }, { - .x = 4, + .x = 4, .y = -8, - .shape = SPRITE_SHAPE(8x8), - .size = SPRITE_SIZE(8x8), - .tileOffset = 2, - .priority = 2 - }, - { - .x = -12, - .y = 0, - .shape = SPRITE_SHAPE(16x8), - .size = SPRITE_SIZE(16x8), - .tileOffset = 3, + .shape = SPRITE_SHAPE(8x8), + .size = SPRITE_SIZE(8x8), + .tileOffset = 2, .priority = 2 }, { - .x = 4, - .y = 0, - .shape = SPRITE_SHAPE(8x8), - .size = SPRITE_SIZE(8x8), - .tileOffset = 5, + .x = -12, + .y = 0, + .shape = SPRITE_SHAPE(16x8), + .size = SPRITE_SIZE(16x8), + .tileOffset = 3, + .priority = 2 + }, + { + .x = 4, + .y = 0, + .shape = SPRITE_SHAPE(8x8), + .size = SPRITE_SIZE(8x8), + .tileOffset = 5, .priority = 2 } }; @@ -445,35 +444,35 @@ static const struct SubspriteTable sSubspriteTable_PokecenterMonitor = subsprite static const struct Subsprite sSubsprites_HofMonitorBig[] = { { - .x = -32, - .y = -8, - .shape = SPRITE_SHAPE(32x8), + .x = -32, + .y = -8, + .shape = SPRITE_SHAPE(32x8), .size = SPRITE_SIZE(32x8), - .tileOffset = 0, + .tileOffset = 0, .priority = 2 }, { - .x = 0, - .y = -8, - .shape = SPRITE_SHAPE(32x8), + .x = 0, + .y = -8, + .shape = SPRITE_SHAPE(32x8), .size = SPRITE_SIZE(32x8), - .tileOffset = 4, + .tileOffset = 4, .priority = 2 }, { - .x = -32, - .y = 0, - .shape = SPRITE_SHAPE(32x8), + .x = -32, + .y = 0, + .shape = SPRITE_SHAPE(32x8), .size = SPRITE_SIZE(32x8), - .tileOffset = 8, + .tileOffset = 8, .priority = 2 }, { - .x = 0, - .y = 0, - .shape = SPRITE_SHAPE(32x8), + .x = 0, + .y = 0, + .shape = SPRITE_SHAPE(32x8), .size = SPRITE_SIZE(32x8), - .tileOffset = 12, + .tileOffset = 12, .priority = 2 } }; @@ -936,19 +935,19 @@ void MultiplyInvertedPaletteRGBComponents(u16 i, u8 r, u8 g, u8 b) { int curRed, curGreen, curBlue; u16 color = gPlttBufferUnfaded[i]; - + curRed = (color & RGB_RED); curGreen = (color & RGB_GREEN) >> 5; curBlue = (color & RGB_BLUE) >> 10; - + curRed += (((0x1F - curRed) * r) >> 4); curGreen += (((0x1F - curGreen) * g) >> 4); curBlue += (((0x1F - curBlue) * b) >> 4); - + color = curRed; color |= (curGreen << 5); color |= (curBlue << 10); - + gPlttBufferFaded[i] = color; } @@ -957,19 +956,19 @@ void MultiplyPaletteRGBComponents(u16 i, u8 r, u8 g, u8 b) { int curRed, curGreen, curBlue; u16 color = gPlttBufferUnfaded[i]; - + curRed = (color & RGB_RED); curGreen = (color & RGB_GREEN) >> 5; curBlue = (color & RGB_BLUE) >> 10; - + curRed -= ((curRed * r) >> 4); curGreen -= ((curGreen * g) >> 4); curBlue -= ((curBlue * b) >> 4); - + color = curRed; color |= (curGreen << 5); color |= (curBlue << 10); - + gPlttBufferFaded[i] = color; } @@ -1328,10 +1327,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); @@ -1714,7 +1713,7 @@ static bool8 EscalatorWarpIn_Init(struct Task *task) // If dest is down escalator tile, player is riding up behavior = TRUE; task->tState = 3; // jump to EscalatorWarpIn_Up_Init - } + } else // MB_UP_ESCALATOR { // If dest is up escalator tile, player is riding down @@ -2264,7 +2263,7 @@ static void EscapeRopeWarpOutEffect_Spin(struct Task *task) gFieldCallback = FieldCallback_EscapeRopeWarpIn; SetMainCallback2(CB2_LoadMap); DestroyTask(FindTaskIdByFunc(Task_EscapeRopeWarpOut)); - } + } else if (task->tSpinDelay == 0 || (--task->tSpinDelay) == 0) { ObjectEventSetHeldMovement(objectEvent, GetFaceDirectionMovementAction(spinDirections[objectEvent->facingDirection])); @@ -3886,4 +3885,3 @@ static void Task_MoveDeoxysRock(u8 taskId) break; } } - diff --git a/src/overworld.c b/src/overworld.c index 60512a850..50527c50d 100644 --- a/src/overworld.c +++ b/src/overworld.c @@ -1604,6 +1604,11 @@ static void CB2_LoadMapOnReturnToFieldCableClub(void) void CB2_ReturnToField(void) { + if (gFieldCallback == FieldCallback_Fly) { + RemoveFollowingPokemon(); + } else { + UpdateFollowingPokemon(); + } if (IsUpdateLinkStateCBActive() == TRUE) { SetMainCallback2(CB2_ReturnToFieldLink); diff --git a/src/scrcmd.c b/src/scrcmd.c index 7caaa194b..825c3d0f8 100644 --- a/src/scrcmd.c +++ b/src/scrcmd.c @@ -52,6 +52,7 @@ typedef u16 (*SpecialFunc)(void); typedef void (*NativeFunc)(void); +typedef bool8 (*ScrFunc)(struct ScriptContext*); EWRAM_DATA const u8 *gRamScriptRetAddr = NULL; static EWRAM_DATA u32 sAddressOffset = 0; // For relative addressing in vgoto etc., used by saved scripts (e.g. Mystery Event) @@ -133,12 +134,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 ((ScrFunc) func)(ctx); +} + bool8 ScrCmd_waitstate(struct ScriptContext *ctx) { ScriptContext1_Stop(); @@ -459,7 +465,7 @@ bool8 ScrCmd_compare_var_to_var(struct ScriptContext *ctx) return FALSE; } -// Note: addvar doesn't support adding from a variable in vanilla. If you were to +// Note: addvar doesn't support adding from a variable in vanilla. If you were to // add a VarGet() to the above, make sure you change the `addvar VAR_*, -1` // in the contest scripts to `subvar VAR_*, 1`, else contests will break. bool8 ScrCmd_addvar(struct ScriptContext *ctx) @@ -649,7 +655,7 @@ bool8 ScrCmd_fadescreenswapbuffers(struct ScriptContext *ctx) switch (mode) { case FADE_TO_BLACK: - case FADE_TO_WHITE: + case FADE_TO_WHITE: default: CpuCopy32(gPlttBufferUnfaded, gPaletteDecompressionBuffer, PLTT_DECOMP_BUFFER_SIZE); FadeScreen(mode, 0); @@ -1567,6 +1573,16 @@ bool8 ScrCmd_bufferleadmonspeciesname(struct ScriptContext *ctx) return FALSE; } +bool8 ScrFunc_bufferlivemonspeciesname(struct ScriptContext *ctx) +{ + u8 stringVarIndex = ScriptReadByte(ctx); + + u8 *dest = sScriptStringVars[stringVarIndex]; + u32 species = GetMonData(GetFirstLiveMon(), MON_DATA_SPECIES); + StringCopy(dest, gSpeciesNames[species]); + return FALSE; +} + bool8 ScrCmd_bufferpartymonnick(struct ScriptContext *ctx) { u8 stringVarIndex = ScriptReadByte(ctx); @@ -2026,6 +2042,13 @@ bool8 ScrCmd_playmoncry(struct ScriptContext *ctx) return FALSE; } +bool8 ScrFunc_playfirstmoncry(struct ScriptContext *ctx) +{ + u16 species = GetMonData(GetFirstLiveMon(), MON_DATA_SPECIES); + PlayCry5(species, 0); + return FALSE; +} + bool8 ScrCmd_waitmoncry(struct ScriptContext *ctx) { SetupNativeScript(ctx, IsCryFinished); From 4e3c2d84911614cfa917e2fa5d0fe1511fa5e41b Mon Sep 17 00:00:00 2001 From: Ariel Antonitis Date: Mon, 15 Jun 2020 11:49:07 -0400 Subject: [PATCH 005/241] Allowed running inside buildings. --- src/bike.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/bike.c b/src/bike.c index bbcda989c..c66a6b5f0 100644 --- a/src/bike.c +++ b/src/bike.c @@ -1056,7 +1056,7 @@ void Bike_HandleBumpySlopeJump(void) bool32 IsRunningDisallowed(u8 metatile) { - if (!(gMapHeader.flags & MAP_ALLOW_RUNNING) || IsRunningDisallowedByMetatile(metatile) == TRUE) + if (IsRunningDisallowedByMetatile(metatile) == TRUE) return TRUE; else return FALSE; From e52b70e46fa46787387595e231dde9e88c5f0872 Mon Sep 17 00:00:00 2001 From: Ariel Antonitis Date: Mon, 15 Jun 2020 14:07:37 -0400 Subject: [PATCH 006/241] Updated follower scripting (applymovement). --- data/scripts/follower.inc | 58 +++++++- graphics/object_events/palettes/charizard.pal | 19 +++ .../object_events/pics/pokemon/charizard.png | Bin 0 -> 5896 bytes graphics/pokemon/togetic/anim_front.png | Bin 830 -> 6367 bytes include/constants/event_objects.h | 3 +- include/event_object_movement.h | 7 +- include/event_scripts.h | 4 + spritesheet_rules.mk | 3 + .../movement_action_func_tables.h | 7 +- .../object_events/movement_type_func_tables.h | 6 +- .../object_events/object_event_graphics.h | 2 + .../object_event_graphics_info.h | 1 + .../object_event_graphics_info_pointers.h | 3 + .../object_events/object_event_pic_tables.h | 9 ++ src/event_object_movement.c | 126 +++++++++++------- src/scrcmd.c | 19 +++ 16 files changed, 204 insertions(+), 63 deletions(-) create mode 100644 graphics/object_events/palettes/charizard.pal create mode 100644 graphics/object_events/pics/pokemon/charizard.png diff --git a/data/scripts/follower.inc b/data/scripts/follower.inc index 2b782d479..bc4d2f4d3 100644 --- a/data/scripts/follower.inc +++ b/data/scripts/follower.inc @@ -1,6 +1,18 @@ -gText_Follower:: +gText_FollowerLovesYou:: .string "{STR_VAR_1} loves you!$" +gText_FollowerLostInThought:: + .string "{STR_VAR_1} seems lost in thought.$" + +gText_FollowerDefault:: + .string "ERROR 404: Script not found.$" + +gText_FollowerHasWetFeet:: + .string "{STR_VAR_1} seems unhappy about getting\nits feet wet.$" + +gText_FollowerSplashesAround:: + .string "{STR_VAR_1} splashes around happily!$" + .macro playfirstmoncry callfunc ScrFunc_playfirstmoncry .endm @@ -14,10 +26,44 @@ callfunc ScrFunc_bufferlivemonspeciesname EventScript_Follower:: lock faceplayer - playfirstmoncry - applymovement 0xFE ContestHall_Movement_Heart - waitmoncry - bufferlivemonspeciesname 0 - msgbox gText_Follower, MSGBOX_DEFAULT + callfunc ScrFunc_getfolloweraction + msgbox gText_FollowerDefault, MSGBOX_DEFAULT + release + end + +EventScript_FollowerHasWetFeet:: + bufferlivemonspeciesname 0 + playfirstmoncry + msgbox gText_FollowerHasWetFeet, MSGBOX_DEFAULT + waitmoncry + release + end + +EventScript_FollowerSplashesAbout:: + bufferlivemonspeciesname 0 + playfirstmoncry + applymovement 0xFE FollowerSplashMovement + waitmovement 0xFE + msgbox gText_FollowerSplashesAround, MSGBOX_DEFAULT + release + end + +EnterPokeballMovement:: + .byte 0x9F @ EnterPokeball + step_end + +FollowerSplashMovement:: + jump_in_place_left_right + jump_in_place_left_right + face_player + step_end + +EventScript_FollowerLovesYou:: + playfirstmoncry + applymovement 0xFE ContestHall_Movement_Heart + waitmovement 0xFE + waitmoncry + bufferlivemonspeciesname 0 + msgbox gText_FollowerLovesYou, MSGBOX_DEFAULT release end diff --git a/graphics/object_events/palettes/charizard.pal b/graphics/object_events/palettes/charizard.pal new file mode 100644 index 000000000..274fd57f8 --- /dev/null +++ b/graphics/object_events/palettes/charizard.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +160 176 128 +0 0 0 +96 48 0 +192 16 32 +40 72 88 +96 64 0 +144 64 32 +200 88 40 +64 128 128 +248 120 56 +160 160 160 +216 168 48 +248 184 16 +240 208 112 +216 216 248 +0 0 0 diff --git a/graphics/object_events/pics/pokemon/charizard.png b/graphics/object_events/pics/pokemon/charizard.png new file mode 100644 index 0000000000000000000000000000000000000000..62a369dbc31b6ff3c65ae340953425f65ddbadb2 GIT binary patch literal 5896 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.x; @@ -1621,51 +1626,44 @@ u8 SpawnFollowingPokemon(void) { // Spawn a following pokemon TODO: Avoid this o // template.script = EventScript_Follower; // This does nothing because scripts are templated objectEventId = SpawnSpecialObjectEvent(&template); gObjectEvents[objectEventId].invisible = TRUE; - gObjectEvents[objectEventId].hasShadow = TRUE; return objectEventId; } +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) { + return &gObjectEvents[i]; + } + } + return NULL; +} + void UpdateFollowingPokemon(void) { u8 i; u8 graphicsId; - struct ObjectEvent *objectEvent = NULL; - struct Pokemon *mon; - - // TODO: Improve finding player following pokemon - for (i=0; i < OBJECT_EVENTS_COUNT; i++) { - if (gObjectEvents[i].localId == 0xFE) { - objectEvent = &gObjectEvents[i]; - break; - } - } + struct ObjectEvent *objectEvent = GetFollowerObject(); + struct Pokemon *mon = GetFirstLiveMon(); if (objectEvent == NULL) { return; } - mon = GetFirstLiveMon(); if (mon == NULL) { // TODO: Fainted party return; } graphicsId = SpeciesToGraphicsId(GetMonData(mon, MON_DATA_SPECIES)); if (graphicsId != objectEvent->graphicsId) { // Mark as invisible MoveObjectEventToMapCoords(objectEvent, gObjectEvents[gPlayerAvatar.objectEventId].currentCoords.x, gObjectEvents[gPlayerAvatar.objectEventId].currentCoords.y); + objectEvent->graphicsId = graphicsId; objectEvent->invisible = TRUE; gSprites[objectEvent->spriteId].data[1] = 0; // set state gSprites[objectEvent->spriteId].data[6] = 0; // set graphicsId gSprites[objectEvent->spriteId].data[7] = 0; // set animation data } - objectEvent->graphicsId = graphicsId; return; } void RemoveFollowingPokemon(void) { - struct ObjectEvent *objectEvent = NULL; - u8 i; - for (i=0; i < OBJECT_EVENTS_COUNT; i++) { - if (gObjectEvents[i].localId == 0xFE) { - objectEvent = &gObjectEvents[i]; - break; - } - } + struct ObjectEvent *objectEvent = GetFollowerObject(); if (objectEvent == NULL) { return; } @@ -1676,6 +1674,34 @@ static bool8 IsFollowerVisible(void) { // Determine whether follower should be v return !TestPlayerAvatarFlags(PLAYER_AVATAR_FLAG_SURFING | PLAYER_AVATAR_FLAG_ACRO_BIKE | PLAYER_AVATAR_FLAG_MACH_BIKE); } +bool8 ScrFunc_getfolloweraction(struct ScriptContext *ctx) +{ + u16 value; + u16 species; + u32 behavior; + struct ObjectEvent *objEvent = &gObjectEvents[GetObjectEventIdByLocalIdAndMap(OBJ_EVENT_ID_FOLLOWER, gSaveBlock1Ptr->location.mapNum, gSaveBlock1Ptr->location.mapGroup)]; + struct Pokemon *follower = GetFirstLiveMon(); + if (follower == NULL) { + return FALSE; + } + behavior = MapGridGetMetatileBehaviorAt(objEvent->currentCoords.x, objEvent->currentCoords.y); + species = GetMonData(follower, MON_DATA_SPECIES); + if (MetatileBehavior_IsPuddle(behavior) || MetatileBehavior_IsShallowFlowingWater(behavior)) { + if (gBaseStats[species].type1 == TYPE_FIRE || gBaseStats[species].type2 == TYPE_FIRE) { + ScriptJump(ctx, EventScript_FollowerHasWetFeet); + return FALSE; + } else if (GetObjectEventGraphicsInfo(objEvent->graphicsId)->tracks) { // if follower leaves tracks + ScriptJump(ctx, EventScript_FollowerSplashesAbout); + return FALSE; + } + } + if (GetCurrentWeather() == WEATHER_RAIN || GetCurrentWeather() == WEATHER_RAIN_THUNDERSTORM) { + ScriptJump(ctx, EventScript_FollowerLovesYou); + } + ScriptJump(ctx, EventScript_FollowerLovesYou); + return FALSE; +} + void TrySpawnObjectEvents(s16 cameraX, s16 cameraY) { u8 i; @@ -4525,23 +4551,19 @@ bool8 CopyablePlayerMovement_Jump(struct ObjectEvent *objectEvent, struct Sprite movement_type_def(MovementType_FollowPlayer, gMovementTypeFuncs_FollowPlayer) -bool8 MovementType_FollowPlayer_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite) +bool8 MovementType_FollowPlayer_Shadow(struct ObjectEvent *objectEvent, struct Sprite *sprite) { ClearObjectEventMovement(objectEvent, sprite); - if (sprite->data[6]) { // Restore graphicsId TODO: Change this hack - ObjectEventSetGraphicsId(objectEvent, sprite->data[6]); - sprite->data[6] = 0; - } if (!IsFollowerVisible()) { // Shadow player's position - objectEvent->invisible = TRUE; MoveObjectEventToMapCoords(objectEvent, gObjectEvents[gPlayerAvatar.objectEventId].currentCoords.x, gObjectEvents[gPlayerAvatar.objectEventId].currentCoords.y); return FALSE; } - sprite->data[1] = 1; + // __asm__(".2byte 0xBE00"); + sprite->data[1] = 1; // Enter idle state return TRUE; } -bool8 MovementType_FollowPlayer_Step1(struct ObjectEvent *objectEvent, struct Sprite *sprite) +bool8 MovementType_FollowPlayer_Active(struct ObjectEvent *objectEvent, struct Sprite *sprite) { if (gObjectEvents[gPlayerAvatar.objectEventId].movementActionId == 0xFF || gPlayerAvatar.tileTransitionState == T_TILE_CENTER) { // do nothing if player is stationary return FALSE; @@ -4550,32 +4572,36 @@ bool8 MovementType_FollowPlayer_Step1(struct ObjectEvent *objectEvent, struct Sp return gFollowPlayerMovementFuncs[PlayerGetCopyableMovement()](objectEvent, sprite, GetPlayerMovementDirection(), NULL); } -bool8 MovementType_FollowPlayer_Step2(struct ObjectEvent *objectEvent, struct Sprite *sprite) +bool8 MovementType_FollowPlayer_Moving(struct ObjectEvent *objectEvent, struct Sprite *sprite) { if (ObjectEventExecSingleMovementAction(objectEvent, sprite)) { objectEvent->singleMovementActive = 0; - sprite->data[1] = 1; + if (sprite->data[1]) { // restore nonzero state + sprite->data[1] = 1; + } } - objectEvent->invisible = FALSE; return FALSE; } bool8 FollowablePlayerMovement_Idle(struct ObjectEvent *objectEvent, struct Sprite *sprite, u8 playerDirection, bool8 tileCallback(u8)) { u8 direction; - if (!IsFollowerVisible()) { // Animate entering pokeball - if (objectEvent->invisible) { + if (!IsFollowerVisible()) { + if (objectEvent->invisible) { // Return to shadowing state + sprite->data[1] = 0; return FALSE; } + // Animate entering pokeball ClearObjectEventMovement(objectEvent, sprite); ObjectEventSetSingleMovement(objectEvent, sprite, MOVEMENT_ACTION_ENTER_POKEBALL); objectEvent->singleMovementActive = 1; sprite->animCmdIndex = 0; // Needed because of weird animCmdIndex stuff - sprite->data[1] = 2; // movement action sets state to 0 later + sprite->data[1] = 2; // movement action sets state to 0 return TRUE; } else if (!objectEvent->singleMovementActive) { // walk in place ObjectEventSetSingleMovement(objectEvent, sprite, GetWalkInPlaceNormalMovementAction(objectEvent->facingDirection)); + sprite->data[1] = 1; objectEvent->singleMovementActive = 1; return TRUE; } else if (ObjectEventExecSingleMovementAction(objectEvent, sprite)) { // finish movement action @@ -6168,7 +6194,7 @@ static u8 LoadWhiteFlashPalette(struct ObjectEvent *objectEvent, struct Sprite * bool8 MovementAction_ExitPokeball_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite) { - + objectEvent->invisible = FALSE; if (TestPlayerAvatarFlags(PLAYER_AVATAR_FLAG_DASH)) { sub_8094554(objectEvent, sprite, DIR_SOUTH, GetMoveDirectionFastestAnimNum(DIR_NORTH), 8); sprite->data[7] = 0; // fast speed @@ -6214,13 +6240,9 @@ bool8 MovementAction_EnterPokeball_Step0(struct ObjectEvent *objectEvent, struct bool8 MovementAction_EnterPokeball_Step1(struct ObjectEvent *objectEvent, struct Sprite *sprite) { sprite->data[3]--; - if (sprite->data[3] == 0) - { + if (sprite->data[3] == 0) { sprite->data[2] = 2; - sprite->animPaused = TRUE; - return TRUE; - } else if (sprite->data[3] == 1) { // Change state - sprite->data[1] = 0; + return FALSE; } else if (sprite->data[3] == 11) { // Set palette to white LoadWhiteFlashPalette(objectEvent, sprite); } else if (sprite->data[3] == 7) { // Free white palette and change to pokeball @@ -6230,6 +6252,16 @@ bool8 MovementAction_EnterPokeball_Step1(struct ObjectEvent *objectEvent, struct return FALSE; } +bool8 MovementAction_EnterPokeball_Step2(struct ObjectEvent *objectEvent, struct Sprite *sprite) +{ + ObjectEventSetGraphicsId(objectEvent, sprite->data[6]); + 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) { sub_8094554(objectEvent, sprite, DIR_NORTH, GetMoveDirectionAnimNum(DIR_NORTH), 32); @@ -8386,13 +8418,13 @@ static void (*const sGroundEffectTracksFuncs[])(struct ObjectEvent *objEvent, st void GroundEffect_SandTracks(struct ObjectEvent *objEvent, struct Sprite *sprite) { const struct ObjectEventGraphicsInfo *info = GetObjectEventGraphicsInfo(objEvent->graphicsId); - sGroundEffectTracksFuncs[info->tracks](objEvent, sprite, 0); + sGroundEffectTracksFuncs[objEvent->invisible ? TRACKS_NONE : info->tracks](objEvent, sprite, 0); } void GroundEffect_DeepSandTracks(struct ObjectEvent *objEvent, struct Sprite *sprite) { const struct ObjectEventGraphicsInfo *info = GetObjectEventGraphicsInfo(objEvent->graphicsId); - sGroundEffectTracksFuncs[info->tracks](objEvent, sprite, 1); + sGroundEffectTracksFuncs[objEvent->invisible ? TRACKS_NONE : info->tracks](objEvent, sprite, 1); } static void DoTracksGroundEffect_None(struct ObjectEvent *objEvent, struct Sprite *sprite, u8 a) diff --git a/src/scrcmd.c b/src/scrcmd.c index 825c3d0f8..537233abd 100644 --- 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" @@ -1003,9 +1004,27 @@ bool8 ScrCmd_applymovement(struct ScriptContext *ctx) { u16 localId = VarGet(ScriptReadHalfword(ctx)); const void *movementScript = (const void *)ScriptReadWord(ctx); + struct ObjectEvent *objEvent; + ScriptMovement_StartObjectMovementScript(localId, gSaveBlock1Ptr->location.mapNum, gSaveBlock1Ptr->location.mapGroup, movementScript); sMovingNpcId = localId; + if (localId != OBJ_EVENT_ID_FOLLOWER) { // 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; + } + // ClearEventObjectMovement( + objEvent->singleMovementActive = 0; + objEvent->heldMovementActive = FALSE; + objEvent->heldMovementFinished = FALSE; + objEvent->movementActionId = 0xFF; + gSprites[objEvent->spriteId].data[1] = 0; + // ) + gSprites[objEvent->spriteId].animCmdIndex = 0; // Needed because of weird animCmdIndex stuff + ScriptMovement_StartObjectMovementScript(OBJ_EVENT_ID_FOLLOWER, gSaveBlock1Ptr->location.mapNum, gSaveBlock1Ptr->location.mapGroup, EnterPokeballMovement); + } return FALSE; } From db46bf855d72303e6d0ddd66c2ae092b4835fd93 Mon Sep 17 00:00:00 2001 From: Ariel Antonitis Date: Mon, 15 Jun 2020 19:46:35 -0400 Subject: [PATCH 007/241] Fixed berry tree display. --- gflib/sprite.c | 2 ++ src/event_object_movement.c | 50 +++++++++++++++++++++++++++++++------ 2 files changed, 44 insertions(+), 8 deletions(-) diff --git a/gflib/sprite.c b/gflib/sprite.c index 764ead3d3..ae8629b34 100644 --- a/gflib/sprite.c +++ b/gflib/sprite.c @@ -1670,8 +1670,10 @@ u16 GetSpritePaletteTagByPaletteNum(u8 paletteNum) void FreeSpritePaletteByTag(u16 tag) { u8 index = IndexOfSpritePaletteTag(tag); + u16 emptyPalette[16] = {0}; if (index != 0xFF) sSpritePaletteTags[index] = 0xFFFF; + LoadPalette(emptyPalette, index * 16 + 0x100, 32); // TODO: For debugging only } void SetSubspriteTables(struct Sprite *sprite, const struct SubspriteTable *subspriteTables) diff --git a/src/event_object_movement.c b/src/event_object_movement.c index 84d4f4aa3..cf55ab351 100644 --- a/src/event_object_movement.c +++ b/src/event_object_movement.c @@ -1876,14 +1876,12 @@ static void SetPlayerAvatarObjectEventIdAndObjectId(u8 objectEventId, u8 spriteI void ObjectEventSetGraphicsId(struct ObjectEvent *objectEvent, u8 graphicsId) { - const struct ObjectEventGraphicsInfo *graphicsInfo; - struct Sprite *sprite; + const struct ObjectEventGraphicsInfo *graphicsInfo = GetObjectEventGraphicsInfo(graphicsId); + struct Sprite *sprite = &gSprites[objectEvent->spriteId]; u16 i; u8 paletteNum; u16 *debugPtr = (u16*) 0x0203d008; - graphicsInfo = GetObjectEventGraphicsInfo(graphicsId); - sprite = &gSprites[objectEvent->spriteId]; *debugPtr = graphicsId; *(debugPtr + 1) = graphicsInfo->paletteSlot; if (graphicsInfo->paletteSlot == 0) { // Hack until I can fix this @@ -1960,7 +1958,42 @@ 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 u8 graphicsId = gBerryTreeObjectEventGraphicsIdTablePointers[berryId][berryStage]; + const struct ObjectEventGraphicsInfo *graphicsInfo = GetObjectEventGraphicsInfo(graphicsId); + struct Sprite *sprite = &gSprites[objectEvent->spriteId]; + u8 paletteNum = sprite->oam.paletteNum; + u16 paletteTag = sObjectEventSpritePalettes[gBerryTreePaletteSlotTablePointers[berryId][berryStage]-2].tag; + u16 i; + // Free old palette if otherwise unused + sprite->inUse = FALSE; + FieldEffectFreePaletteIfUnused(paletteNum); + sprite->inUse = TRUE; + i = FindObjectEventPaletteIndexByTag(paletteTag); + paletteNum = IndexOfSpritePaletteTag(sObjectEventSpritePalettes[i].tag); + if (paletteNum == 0xFF) { // Load palette + paletteNum = LoadSpritePalette(&sObjectEventSpritePalettes[i]); + } + sprite->oam.paletteNum = paletteNum; + 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->pos1.x, &sprite->pos1.y); + sprite->centerToCornerVecX = -(graphicsInfo->width >> 1); + sprite->centerToCornerVecY = -(graphicsInfo->height >> 1); + sprite->pos1.x += 8; + sprite->pos1.y += 16 + sprite->centerToCornerVecY; + if (objectEvent->trackedByCamera) + { + CameraObjectReset1(); + } +} + +static void get_berry_tree_graphics(struct ObjectEvent *objectEvent, struct Sprite *sprite) { u8 berryStage; u8 berryId; @@ -1977,9 +2010,10 @@ 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]; + // ObjectEventSetGraphicsId(objectEvent, gBerryTreeObjectEventGraphicsIdTablePointers[berryId][berryStage]); + // sprite->images = gBerryTreePicTablePointers[berryId]; + // sprite->oam.paletteNum = gBerryTreePaletteSlotTablePointers[berryId][berryStage]; + SetBerryTreeGraphics(objectEvent, berryId, berryStage); StartSpriteAnim(sprite, berryStage); } } From 12a2ec9f26a89c622ce9a45e0382042abab32e79 Mon Sep 17 00:00:00 2001 From: Ariel Antonitis Date: Tue, 16 Jun 2020 12:25:51 -0400 Subject: [PATCH 008/241] Added dynamic reflections. --- gflib/sprite.c | 7 +++ include/event_object_movement.h | 2 +- src/event_object_movement.c | 39 ++++++-------- src/field_effect_helpers.c | 94 +++++++++++++++++++++++---------- 4 files changed, 90 insertions(+), 52 deletions(-) diff --git a/gflib/sprite.c b/gflib/sprite.c index ae8629b34..2355829ff 100644 --- a/gflib/sprite.c +++ b/gflib/sprite.c @@ -1599,14 +1599,18 @@ void AllocSpriteTileRange(u16 tag, u16 start, u16 count) void FreeAllSpritePalettes(void) { u8 i; + u16 emptyPalette[16] = {0}; gReservedSpritePaletteCount = 0; for (i = 0; i < 16; i++) sSpritePaletteTags[i] = 0xFFFF; + LoadPalette(emptyPalette, i * 16 + 0x100, 32); // TODO: For debugging only } u8 LoadSpritePalette(const struct SpritePalette *palette) { u8 index = IndexOfSpritePaletteTag(palette->tag); + u8 i; + u16 *debugPtr = (u16*) 0x0203d800; if (index != 0xFF) return index; @@ -1620,6 +1624,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; } diff --git a/include/event_object_movement.h b/include/event_object_movement.h index f7366de8e..586e98bff 100644 --- a/include/event_object_movement.h +++ b/include/event_object_movement.h @@ -83,7 +83,6 @@ u8 GetObjectEventIdByXY(s16, s16); void SetObjectEventDirection(struct ObjectEvent *, u8); u8 GetFirstInactiveObjectEventId(void); void RemoveObjectEventByLocalIdAndMap(u8, u8, u8); -void LoadPlayerObjectReflectionPalette(u16, u8); void LoadSpecialObjectReflectionPalette(u16, u8); void TryMoveObjectEventToMapCoords(u8, u8, u8, s16, s16); void PatchObjectPalette(u16, u8); @@ -108,6 +107,7 @@ u8 SpawnSpecialObjectEventParameterized(u8 graphicsId, u8 movementBehavior, u8 l u8 SpawnSpecialObjectEvent(struct ObjectEventTemplate *); void SetSpritePosToMapCoords(s16, s16, s16 *, s16 *); void CameraObjectReset1(void); +u8 UpdateSpritePalette(struct SpritePalette *, struct Sprite *); void ObjectEventSetGraphicsId(struct ObjectEvent *, u8 graphicsId); void ObjectEventTurn(struct ObjectEvent *, u8); void ObjectEventTurnByLocalIdAndMap(u8, u8, u8, u8); diff --git a/src/event_object_movement.c b/src/event_object_movement.c index cf55ab351..bc6d7aceb 100644 --- a/src/event_object_movement.c +++ b/src/event_object_movement.c @@ -1874,37 +1874,36 @@ static void SetPlayerAvatarObjectEventIdAndObjectId(u8 objectEventId, u8 spriteI SetPlayerAvatarExtraStateTransition(gObjectEvents[objectEventId].graphicsId, PLAYER_AVATAR_FLAG_5); } +// Update sprite's palette, freeing old palette if necessary +u8 UpdateSpritePalette(struct SpritePalette * spritePalette, struct Sprite * sprite) { + u8 paletteNum = sprite->oam.paletteNum; + // Free palette if otherwise unused + sprite->inUse = FALSE; + FieldEffectFreePaletteIfUnused(paletteNum); + sprite->inUse = TRUE; + paletteNum = IndexOfSpritePaletteTag(spritePalette->tag); + if (paletteNum == 0xFF) { + paletteNum = LoadSpritePalette(spritePalette); + } + sprite->oam.paletteNum = paletteNum; + return paletteNum; +} + void ObjectEventSetGraphicsId(struct ObjectEvent *objectEvent, u8 graphicsId) { const struct ObjectEventGraphicsInfo *graphicsInfo = GetObjectEventGraphicsInfo(graphicsId); struct Sprite *sprite = &gSprites[objectEvent->spriteId]; u16 i; u8 paletteNum; - u16 *debugPtr = (u16*) 0x0203d008; - *debugPtr = graphicsId; - *(debugPtr + 1) = graphicsInfo->paletteSlot; - if (graphicsInfo->paletteSlot == 0) { // Hack until I can fix this + if (graphicsInfo->paletteSlot == 0 && FALSE) { // Hack until I can fix this PatchObjectPalette(graphicsInfo->paletteTag1, graphicsInfo->paletteSlot); paletteNum = 0; } else { - paletteNum = sprite->oam.paletteNum; - // Free old palette if otherwise unused - sprite->inUse = FALSE; - FieldEffectFreePaletteIfUnused(paletteNum); - sprite->inUse = TRUE; - i = FindObjectEventPaletteIndexByTag(graphicsInfo->paletteTag1); - *(debugPtr + 2) = i; - paletteNum = IndexOfSpritePaletteTag(sObjectEventSpritePalettes[i].tag); - *(debugPtr + 3) = paletteNum; - if (paletteNum == 0xFF) { // Load palette - paletteNum = LoadSpritePalette(&sObjectEventSpritePalettes[i]); - } + paletteNum = UpdateSpritePalette((struct SpritePalette *)&sObjectEventSpritePalettes[i], sprite); } - *(debugPtr + 4) = paletteNum; sprite->oam.paletteNum = paletteNum; - *((u32*) (debugPtr + 6)) = (u32) &sprite->oam; sprite->oam.shape = graphicsInfo->oam->shape; sprite->oam.size = graphicsInfo->oam->size; sprite->images = graphicsInfo->images; @@ -2010,9 +2009,6 @@ static void get_berry_tree_graphics(struct ObjectEvent *objectEvent, struct Spri 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); } @@ -4592,7 +4588,6 @@ bool8 MovementType_FollowPlayer_Shadow(struct ObjectEvent *objectEvent, struct S MoveObjectEventToMapCoords(objectEvent, gObjectEvents[gPlayerAvatar.objectEventId].currentCoords.x, gObjectEvents[gPlayerAvatar.objectEventId].currentCoords.y); return FALSE; } - // __asm__(".2byte 0xBE00"); sprite->data[1] = 1; // Enter idle state return TRUE; } diff --git a/src/field_effect_helpers.c b/src/field_effect_helpers.c index 67102a83b..0eb58bf31 100755 --- a/src/field_effect_helpers.c +++ b/src/field_effect_helpers.c @@ -7,18 +7,20 @@ #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/field_effects.h" #include "constants/songs.h" +#define OBJ_EVENT_PAL_START 0x1103 // duplicate of define in event_object_movement.c #define OBJ_EVENT_PAL_TAG_NONE 0x11FF // duplicate of define in event_object_movement.c 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 LoadObjectRegularReflectionPalette(struct ObjectEvent *, struct Sprite *); static void sub_81561FC(struct Sprite *, u8, u8); static void FadeFootprintsTireTracks_Step0(struct Sprite *); static void FadeFootprintsTireTracks_Step1(struct Sprite *); @@ -34,7 +36,7 @@ static u32 ShowDisguiseFieldEffect(u8, u8, u8); #define sReflectionObjEventId data[0] #define sReflectionObjEventLocalId data[1] -#define sReflectionVerticalOffset data[2] +#define sReflectionVerticalOffset data[2] #define sIsStillReflection data[7] void SetUpReflection(struct ObjectEvent *objectEvent, struct Sprite *sprite, bool8 stillReflection) @@ -44,7 +46,6 @@ void SetUpReflection(struct ObjectEvent *objectEvent, struct Sprite *sprite, boo reflectionSprite = &gSprites[CreateCopySpriteAt(sprite, sprite->pos1.x, sprite->pos1.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); @@ -77,31 +78,50 @@ static void LoadObjectReflectionPalette(struct ObjectEvent *objectEvent, struct } else { - LoadObjectRegularReflectionPalette(objectEvent, reflectionSprite->oam.paletteNum); + LoadObjectRegularReflectionPalette(objectEvent, sprite); } } -static void LoadObjectRegularReflectionPalette(struct ObjectEvent *objectEvent, u8 paletteIndex) -{ - const struct ObjectEventGraphicsInfo *graphicsInfo; +// Apply a blue tint effect to a palette +static void ApplyReflectionFilter(u8 paletteNum, u16 *dest) { + u32 *debugPtr = (u32*) 0x0203d600; + u8 i, val, r, g, b; + // CpuCopy16(gPlttBufferUnfaded + 0x100 + paletteNum * 16, dest, 32); + u16 *src = gPlttBufferUnfaded + 0x100 + paletteNum * 16; + *(debugPtr + 2) = (u32) (gPlttBufferUnfaded + 0x100 + paletteNum * 16); + for (i = 0; i < 16; i++) { + r = src[i] & 0x1F; + g = (src[i] >> 5) & 0x1F; + b = (src[i] >> 10) & 0x1F; + b += 10; + if (b > 31) + b = 31; + *dest++ = (b << 10) | (g << 5) | r; + } +} - graphicsInfo = GetObjectEventGraphicsInfo(objectEvent->graphicsId); - if (graphicsInfo->reflectionPaletteTag != OBJ_EVENT_PAL_TAG_NONE) - { - if (graphicsInfo->paletteSlot == 0) - { - LoadPlayerObjectReflectionPalette(graphicsInfo->paletteTag, paletteIndex); - } - else if (graphicsInfo->paletteSlot == 10) - { - LoadSpecialObjectReflectionPalette(graphicsInfo->paletteTag, paletteIndex); - } - else - { - PatchObjectPalette(GetObjectPaletteTag(paletteIndex), paletteIndex); - } - UpdateSpritePaletteWithWeather(paletteIndex); +static void LoadObjectRegularReflectionPalette(struct ObjectEvent *objectEvent, struct Sprite *sprite) +{ + const struct ObjectEventGraphicsInfo *graphicsInfo = GetObjectEventGraphicsInfo(objectEvent->graphicsId); + u16 baseTag = gSprites[objectEvent->spriteId].oam.paletteNum; + u16 paletteTag = baseTag + OBJ_EVENT_PAL_TAG_NONE + 0x1000; + struct SpritePalette filteredPalette; + u16 filteredData[16] = {0}; + u8 paletteIndex = IndexOfSpritePaletteTag(paletteTag); + u32 *debugPtr = (u32*) 0x0203d600; + if (paletteIndex == 0xFF) { // Build filtered palette + *(debugPtr) = baseTag; + *(debugPtr + 1) = (u32) filteredData; + __asm__(".2byte 0xBE00"); + ApplyReflectionFilter(baseTag, filteredData); + *(debugPtr + 1) = (u32) filteredData; + __asm__(".2byte 0xBE00"); + filteredPalette.tag = paletteTag; + filteredPalette.data = filteredData; + paletteIndex = LoadSpritePalette(&filteredPalette); + // UpdateSpritePaletteWithWeather(paletteIndex); } + sprite->oam.paletteNum = paletteIndex; } // When walking on a bridge high above water (Route 120), the reflection is a solid dark blue color. @@ -120,18 +140,34 @@ static void LoadObjectHighBridgeReflectionPalette(struct ObjectEvent *objectEven 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]; + u16 baseTag = mainSprite->oam.paletteNum; + u16 paletteTag = baseTag + OBJ_EVENT_PAL_TAG_NONE + 0x1000; + struct SpritePalette filteredPalette; + u16 filteredData[16] = {0}; + u8 paletteNum; - 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); } else { - reflectionSprite->oam.paletteNum = gReflectionEffectPaletteMap[mainSprite->oam.paletteNum]; + // Free palette if unused + reflectionSprite->inUse = FALSE; + FieldEffectFreePaletteIfUnused(reflectionSprite->oam.paletteNum); + reflectionSprite->inUse = TRUE; + paletteNum = IndexOfSpritePaletteTag(paletteTag); + if (paletteNum == 0xFF) { // Build filtered palette + ApplyReflectionFilter(baseTag, filteredData); + filteredPalette.tag = paletteTag; + filteredPalette.data = filteredData; + paletteNum = LoadSpritePalette(&filteredPalette); + } + 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; From 69ae5b18c0181bbe33410f270d6417f791e7f090 Mon Sep 17 00:00:00 2001 From: Ariel Antonitis Date: Tue, 16 Jun 2020 20:21:05 -0400 Subject: [PATCH 009/241] Made pokemon event objects dynamic. --- include/constants/event_objects.h | 7 +- include/event_object_movement.h | 1 - include/global.fieldmap.h | 1 + .../object_event_graphics_info.h | 1 + .../object_event_graphics_info_pointers.h | 6 +- src/event_object_movement.c | 123 +++++++++++------- src/overworld.c | 7 +- 7 files changed, 82 insertions(+), 64 deletions(-) diff --git a/include/constants/event_objects.h b/include/constants/event_objects.h index f664d41a8..e6a553499 100644 --- a/include/constants/event_objects.h +++ b/include/constants/event_objects.h @@ -241,12 +241,9 @@ #define OBJ_EVENT_GFX_LUGIA 237 #define OBJ_EVENT_GFX_HOOH 238 #define OBJ_EVENT_GFX_ANIMATED_BALL 239 -#define OBJ_EVENT_GFX_MARSHTOMP 240 -#define OBJ_EVENT_GFX_ALTARIA 241 -#define OBJ_EVENT_GFX_TOGETIC 242 -#define OBJ_EVENT_GFX_CHARIZARD 243 +#define OBJ_EVENT_GFX_FOLLOWER 240 -#define NUM_OBJ_EVENT_GFX 244 +#define NUM_OBJ_EVENT_GFX 241 // These are dynamic object gfx ids. diff --git a/include/event_object_movement.h b/include/event_object_movement.h index 586e98bff..4aaa066c6 100644 --- a/include/event_object_movement.h +++ b/include/event_object_movement.h @@ -93,7 +93,6 @@ u8 GetFaceDirectionAnimNum(u8); void SetSpritePosToOffsetMapCoords(s16 *, s16 *, s16, s16); void ObjectEventClearHeldMovement(struct ObjectEvent *); void ObjectEventClearHeldMovementIfActive(struct ObjectEvent *); -u8 SpeciesToGraphicsId(u16 species); struct Pokemon * GetFirstLiveMon(void); u8 SpawnFollowingPokemon(void); void UpdateFollowingPokemon(void); diff --git a/include/global.fieldmap.h b/include/global.fieldmap.h index c4d7be35d..16684758a 100644 --- a/include/global.fieldmap.h +++ b/include/global.fieldmap.h @@ -208,6 +208,7 @@ struct ObjectEvent /*0x20*/ u8 previousMovementDirection; /*0x21*/ u8 directionSequenceIndex; /*0x22*/ u8 playerCopyableMovement; + u8 unused; /*size = 0x24*/ }; diff --git a/src/data/object_events/object_event_graphics_info.h b/src/data/object_events/object_event_graphics_info.h index 930455238..2f22e7dbe 100755 --- a/src/data/object_events/object_event_graphics_info.h +++ b/src/data/object_events/object_event_graphics_info.h @@ -248,3 +248,4 @@ const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Marshtomp = {0xFFF const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Altaria = {0xFFFF, OBJ_EVENT_PAL_TAG_ALTARIA, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_Altaria, gDummySpriteAffineAnimTable}; const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Togetic = {0xFFFF, OBJ_EVENT_PAL_TAG_TOGETIC, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_Togetic, gDummySpriteAffineAnimTable}; const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Charizard = {0xFFFF, OBJ_EVENT_PAL_TAG_CHARIZARD, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_Charizard, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Follower = {0xFFFF, OBJ_EVENT_PAL_TAG_CHARIZARD, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_Togetic, 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 d48615b19..289b899a6 100755 --- a/src/data/object_events/object_event_graphics_info_pointers.h +++ b/src/data/object_events/object_event_graphics_info_pointers.h @@ -243,6 +243,7 @@ const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Marshtomp; const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Altaria; const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Togetic; const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Charizard; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Follower; const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Bard; const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Hipster; @@ -494,10 +495,7 @@ const struct ObjectEventGraphicsInfo *const gObjectEventGraphicsInfoPointers[NUM [OBJ_EVENT_GFX_LUGIA] = &gObjectEventGraphicsInfo_Lugia, [OBJ_EVENT_GFX_HOOH] = &gObjectEventGraphicsInfo_HoOh, [OBJ_EVENT_GFX_ANIMATED_BALL] = &gObjectEventGraphicsInfo_AnimatedBall, - [OBJ_EVENT_GFX_MARSHTOMP] = &gObjectEventGraphicsInfo_Marshtomp, - [OBJ_EVENT_GFX_ALTARIA] = &gObjectEventGraphicsInfo_Altaria, - [OBJ_EVENT_GFX_TOGETIC] = &gObjectEventGraphicsInfo_Togetic, - [OBJ_EVENT_GFX_CHARIZARD] = &gObjectEventGraphicsInfo_Charizard, + [OBJ_EVENT_GFX_FOLLOWER] = &gObjectEventGraphicsInfo_Follower, }; const struct ObjectEventGraphicsInfo *const gMauvilleOldManGraphicsInfoPointers[] = { diff --git a/src/event_object_movement.c b/src/event_object_movement.c index bc6d7aceb..7d20a466c 100644 --- a/src/event_object_movement.c +++ b/src/event_object_movement.c @@ -1580,22 +1580,6 @@ u8 CreateObjectSprite(u8 graphicsId, u8 a1, s16 x, s16 y, u8 z, u8 direction) return spriteId; } -u8 SpeciesToGraphicsId(u16 species) { // TODO: Eventually graphicsIds will have to be u16's - switch (species) { - case SPECIES_MARSHTOMP: - return OBJ_EVENT_GFX_MARSHTOMP; - break; - case SPECIES_ALTARIA: - return OBJ_EVENT_GFX_ALTARIA; - break; - case SPECIES_TOGETIC: - return OBJ_EVENT_GFX_TOGETIC; - break; - default: - return OBJ_EVENT_GFX_DUSCLOPS; // TODO: Change this - } -} - struct Pokemon * GetFirstLiveMon(void) { // Return address of first conscious party mon or NULL struct Pokemon *mon; u8 i; @@ -1608,24 +1592,21 @@ struct Pokemon * GetFirstLiveMon(void) { // Return address of first conscious pa } u8 SpawnFollowingPokemon(void) { // Spawn a following pokemon TODO: Avoid this on certain maps - struct Pokemon *mon; - u8 graphicsId; u8 objectEventId; struct ObjectEventTemplate template = {0}; template.localId = OBJ_EVENT_ID_FOLLOWER; - mon = GetFirstLiveMon(); - if (mon == NULL) { // fainted party, don't spawn a follower + if (GetFirstLiveMon() == NULL) // fainted party, don't spawn a follower return 0xFF; - } - template.graphicsId = SpeciesToGraphicsId(GetMonData(mon, MON_DATA_SPECIES)); + template.graphicsId = OBJ_EVENT_GFX_FOLLOWER; template.x = gSaveBlock1Ptr->pos.x; template.y = gSaveBlock1Ptr->pos.y; - template.elevation = 5; + template.elevation = 3; template.movementType = MOVEMENT_TYPE_FOLLOW_PLAYER; // template.script = EventScript_Follower; // This does nothing because scripts are templated objectEventId = SpawnSpecialObjectEvent(&template); gObjectEvents[objectEventId].invisible = TRUE; + UpdateFollowingPokemon(); return objectEventId; } @@ -1639,38 +1620,82 @@ struct ObjectEvent * GetFollowerObject(void) { // Return follower ObjectEvent or return NULL; } -void UpdateFollowingPokemon(void) { - u8 i; - u8 graphicsId; +// Return graphicsInfo for a pokemon species TODO: Make this into a table lookup +static const struct ObjectEventGraphicsInfo * SpeciesToGraphicsInfo(u16 species) { + switch (species) { + case SPECIES_MARSHTOMP : + return &gObjectEventGraphicsInfo_Marshtomp; + break; + case SPECIES_TOGETIC : + return &gObjectEventGraphicsInfo_Togetic; + break; + case SPECIES_ALTARIA : + return &gObjectEventGraphicsInfo_Altaria; + break; + case SPECIES_CHARIZARD : + return &gObjectEventGraphicsInfo_Charizard; + break; + default: + return &gObjectEventGraphicsInfo_Dusclops; + } +} + +// Set graphics & sprite for a follower object event by species TODO: Refactoring +static void FollowerSetGraphics(struct ObjectEvent *objectEvent, u16 species) { + const struct ObjectEventGraphicsInfo *graphicsInfo = SpeciesToGraphicsInfo(species); + struct Sprite *sprite = &gSprites[objectEvent->spriteId]; + u16 i = FindObjectEventPaletteIndexByTag(graphicsInfo->paletteTag1); + u8 paletteNum = UpdateSpritePalette((struct SpritePalette *)&sObjectEventSpritePalettes[i], sprite); + sprite->oam.paletteNum = paletteNum; + 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; + objectEvent->graphicsId = OBJ_EVENT_GFX_FOLLOWER; + SetSpritePosToMapCoords(objectEvent->currentCoords.x, objectEvent->currentCoords.y, &sprite->pos1.x, &sprite->pos1.y); + sprite->centerToCornerVecX = -(graphicsInfo->width >> 1); + sprite->centerToCornerVecY = -(graphicsInfo->height >> 1); + sprite->pos1.x += 8; + sprite->pos1.y += 16 + sprite->centerToCornerVecY; + if (objectEvent->trackedByCamera) + { + CameraObjectReset1(); + } +} + +void UpdateFollowingPokemon(void) { // Update following pokemon if any struct ObjectEvent *objectEvent = GetFollowerObject(); + struct Sprite *sprite; struct Pokemon *mon = GetFirstLiveMon(); - if (objectEvent == NULL) { + u16 species; + u16 *oldSpecies; + if (objectEvent == NULL || mon == NULL) { return; } - if (mon == NULL) { // TODO: Fainted party - return; - } - graphicsId = SpeciesToGraphicsId(GetMonData(mon, MON_DATA_SPECIES)); - if (graphicsId != objectEvent->graphicsId) { // Mark as invisible + sprite = &gSprites[objectEvent->spriteId]; + species = GetMonData(mon, MON_DATA_SPECIES); + oldSpecies = (u16*) &objectEvent->playerCopyableMovement; + if (species != *oldSpecies) { // Move to player and set invisible MoveObjectEventToMapCoords(objectEvent, gObjectEvents[gPlayerAvatar.objectEventId].currentCoords.x, gObjectEvents[gPlayerAvatar.objectEventId].currentCoords.y); - objectEvent->graphicsId = graphicsId; objectEvent->invisible = TRUE; - gSprites[objectEvent->spriteId].data[1] = 0; // set state - gSprites[objectEvent->spriteId].data[6] = 0; // set graphicsId - gSprites[objectEvent->spriteId].data[7] = 0; // set animation data } + FollowerSetGraphics(objectEvent, species); // TODO: This should be done to all pokemon graphics + *oldSpecies = species; // set species + sprite->data[6] = 0; // set animation data + sprite->data[7] = species; // set species return; } -void RemoveFollowingPokemon(void) { +void RemoveFollowingPokemon(void) { // Remove follower object. Idempotent. struct ObjectEvent *objectEvent = GetFollowerObject(); - if (objectEvent == NULL) { + if (objectEvent == NULL) return; - } RemoveObjectEvent(objectEvent); } -static bool8 IsFollowerVisible(void) { // Determine whether follower should be visible +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); } @@ -6226,19 +6251,18 @@ bool8 MovementAction_ExitPokeball_Step0(struct ObjectEvent *objectEvent, struct objectEvent->invisible = FALSE; if (TestPlayerAvatarFlags(PLAYER_AVATAR_FLAG_DASH)) { sub_8094554(objectEvent, sprite, DIR_SOUTH, GetMoveDirectionFastestAnimNum(DIR_NORTH), 8); - sprite->data[7] = 0; // fast speed + sprite->data[6] = 0; // fast speed } else { sub_8094554(objectEvent, sprite, DIR_SOUTH, GetMoveDirectionFastestAnimNum(DIR_SOUTH), 16); - sprite->data[7] = 1; // slow speed + sprite->data[6] = 1; // slow speed } - sprite->data[6] = objectEvent->graphicsId; ObjectEventSetGraphicsId(objectEvent, OBJ_EVENT_GFX_ANIMATED_BALL); return MovementAction_ExitPokeball_Step1(objectEvent, sprite); } bool8 MovementAction_ExitPokeball_Step1(struct ObjectEvent *objectEvent, struct Sprite *sprite) { - u8 duration = sprite->data[7] & 0xF; + u8 duration = sprite->data[6] & 0xF; sprite->data[3]--; if (sprite->data[3] == 0) { @@ -6247,13 +6271,13 @@ bool8 MovementAction_ExitPokeball_Step1(struct ObjectEvent *objectEvent, struct return TRUE; // Restore graphicsId and set palette to white } else if ((duration == 0 && sprite->data[3] == 3) || (duration == 1 && sprite->data[3] == 7)) { - ObjectEventSetGraphicsId(objectEvent, sprite->data[6]); - sprite->data[7] = (sprite->oam.paletteNum << 4) | (sprite->data[7] & 0xFF0F); // Save old paletteNum + FollowerSetGraphics(objectEvent, sprite->data[7]); + sprite->data[6] = (sprite->oam.paletteNum << 4) | (sprite->data[6] & 0xFF0F); // Save old paletteNum LoadWhiteFlashPalette(objectEvent, sprite); // Restore original palette } else if ((duration == 0 && sprite->data[3] == 1) || (duration == 1 && sprite->data[3] == 3)) { FreeSpritePaletteByTag(OBJ_EVENT_PAL_TAG_NONE-1); - sprite->oam.paletteNum = (sprite->data[7] >> 4) & 0xF; + sprite->oam.paletteNum = (sprite->data[6] >> 4) & 0xF; } return FALSE; } @@ -6261,8 +6285,7 @@ bool8 MovementAction_ExitPokeball_Step1(struct ObjectEvent *objectEvent, struct bool8 MovementAction_EnterPokeball_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite) { u8 direction = objectEvent->facingDirection; sub_8094554(objectEvent, sprite, direction, GetMoveDirectionFasterAnimNum(direction), 16); - sprite->data[7] = 1; // slow speed - sprite->data[6] = objectEvent->graphicsId; + sprite->data[6] = 1; // slow speed return MovementAction_EnterPokeball_Step1(objectEvent, sprite); } @@ -6283,7 +6306,7 @@ bool8 MovementAction_EnterPokeball_Step1(struct ObjectEvent *objectEvent, struct bool8 MovementAction_EnterPokeball_Step2(struct ObjectEvent *objectEvent, struct Sprite *sprite) { - ObjectEventSetGraphicsId(objectEvent, sprite->data[6]); + FollowerSetGraphics(objectEvent, sprite->data[7]); objectEvent->invisible = TRUE; sprite->data[1] = 0; sprite->data[6] = 0; diff --git a/src/overworld.c b/src/overworld.c index 50527c50d..d8b0284c1 100644 --- a/src/overworld.c +++ b/src/overworld.c @@ -813,7 +813,7 @@ void LoadMapFromCameraTransition(u8 mapGroup, u8 mapNum) ResetFieldTasksArgs(); RunOnResumeMapScript(); - if (gMapHeader.regionMapSectionId != MAPSEC_BATTLE_FRONTIER + if (gMapHeader.regionMapSectionId != MAPSEC_BATTLE_FRONTIER || gMapHeader.regionMapSectionId != sLastMapSectionId) ShowMapNamePopup(); } @@ -1604,10 +1604,8 @@ static void CB2_LoadMapOnReturnToFieldCableClub(void) void CB2_ReturnToField(void) { - if (gFieldCallback == FieldCallback_Fly) { + if (gFieldCallback == FieldCallback_Fly) { // Destroy follower if flying away RemoveFollowingPokemon(); - } else { - UpdateFollowingPokemon(); } if (IsUpdateLinkStateCBActive() == TRUE) { @@ -1952,6 +1950,7 @@ static bool32 ReturnToFieldLocal(u8 *state) sub_80867D8(); ResumeMap(FALSE); sub_8086A68(); + UpdateFollowingPokemon(); // TODO: Update all dynamic graphicsIds SetCameraToTrackPlayer(); (*state)++; break; From acdeb438a8296d92105b5b9c7ff1d5aa074c15b2 Mon Sep 17 00:00:00 2001 From: Ariel Antonitis Date: Tue, 16 Jun 2020 22:05:52 -0400 Subject: [PATCH 010/241] Fixed fly callback logic. --- src/overworld.c | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/src/overworld.c b/src/overworld.c index d8b0284c1..140aefd96 100644 --- a/src/overworld.c +++ b/src/overworld.c @@ -1604,9 +1604,6 @@ static void CB2_LoadMapOnReturnToFieldCableClub(void) void CB2_ReturnToField(void) { - if (gFieldCallback == FieldCallback_Fly) { // Destroy follower if flying away - RemoveFollowingPokemon(); - } if (IsUpdateLinkStateCBActive() == TRUE) { SetMainCallback2(CB2_ReturnToFieldLink); @@ -1950,7 +1947,11 @@ static bool32 ReturnToFieldLocal(u8 *state) sub_80867D8(); ResumeMap(FALSE); sub_8086A68(); - UpdateFollowingPokemon(); // TODO: Update all dynamic graphicsIds + if (gFieldCallback == FieldCallback_Fly) { + RemoveFollowingPokemon(); + } else { + UpdateFollowingPokemon(); // TODO: Update all dynamic graphicsIds + } SetCameraToTrackPlayer(); (*state)++; break; From 4ba4fa21728d1cc97e8c1235527a3298172f6269 Mon Sep 17 00:00:00 2001 From: Ariel Antonitis Date: Tue, 16 Jun 2020 22:54:56 -0400 Subject: [PATCH 011/241] Added follower object to ScrCmd_release. --- gflib/sprite.c | 2 +- src/scrcmd.c | 18 ++++++++++++++++++ 2 files changed, 19 insertions(+), 1 deletion(-) diff --git a/gflib/sprite.c b/gflib/sprite.c index 2355829ff..a840a702f 100644 --- a/gflib/sprite.c +++ b/gflib/sprite.c @@ -1603,7 +1603,7 @@ void FreeAllSpritePalettes(void) gReservedSpritePaletteCount = 0; for (i = 0; i < 16; i++) sSpritePaletteTags[i] = 0xFFFF; - LoadPalette(emptyPalette, i * 16 + 0x100, 32); // TODO: For debugging only + LoadPalette(emptyPalette, i * 16 + 0x100, 32); // TODO: DEBUG: Remove this or battle palettes break } u8 LoadSpritePalette(const struct SpritePalette *palette) diff --git a/src/scrcmd.c b/src/scrcmd.c index 537233abd..745c3dbf8 100644 --- a/src/scrcmd.c +++ b/src/scrcmd.c @@ -1267,6 +1267,15 @@ bool8 ScrCmd_lock(struct ScriptContext *ctx) bool8 ScrCmd_releaseall(struct ScriptContext *ctx) { u8 playerObjectId; + struct ObjectEvent *followerObject = GetFollowerObject(); + if (followerObject) { // Release follower from movement + // ObjectEventClearHeldMovement( TODO: Change the way data[1] determines state + followerObject->movementActionId = 0xFF; + followerObject->heldMovementActive = FALSE; + followerObject->heldMovementFinished = FALSE; + gSprites[followerObject->spriteId].data[2] = 0; + // ) + } HideFieldMessageBox(); playerObjectId = GetObjectEventIdByLocalIdAndMap(OBJ_EVENT_ID_PLAYER, 0, 0); @@ -1279,6 +1288,15 @@ bool8 ScrCmd_releaseall(struct ScriptContext *ctx) bool8 ScrCmd_release(struct ScriptContext *ctx) { u8 playerObjectId; + struct ObjectEvent *followerObject = GetFollowerObject(); + if (followerObject) { // Release follower from movement + // ObjectEventClearHeldMovement( + followerObject->movementActionId = 0xFF; + followerObject->heldMovementActive = FALSE; + followerObject->heldMovementFinished = FALSE; + gSprites[followerObject->spriteId].data[2] = 0; + // ) + } HideFieldMessageBox(); if (gObjectEvents[gSelectedObjectEvent].active) From 66dd1aecf931dbdf127b83314bb0a4512158548a Mon Sep 17 00:00:00 2001 From: Ariel Antonitis Date: Wed, 17 Jun 2020 16:06:24 -0400 Subject: [PATCH 012/241] Made (most) field effects use dynamic palettes. --- gflib/sprite.c | 2 +- include/event_object_movement.h | 2 +- src/data/field_effects/field_effect_objects.h | 98 ++++--------------- src/event_object_movement.c | 94 ++++++------------ src/field_effect.c | 4 +- src/field_effect_helpers.c | 5 +- src/fldeff_misc.c | 2 +- 7 files changed, 58 insertions(+), 149 deletions(-) diff --git a/gflib/sprite.c b/gflib/sprite.c index a840a702f..db1c7add2 100644 --- a/gflib/sprite.c +++ b/gflib/sprite.c @@ -607,7 +607,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 != 0xFFFF) + if (template->paletteTag != 0xFFFF) // TODO: Load sprite palette if tag not present sprite->oam.paletteNum = IndexOfSpritePaletteTag(template->paletteTag); return index; diff --git a/include/event_object_movement.h b/include/event_object_movement.h index 4aaa066c6..f4667773d 100644 --- a/include/event_object_movement.h +++ b/include/event_object_movement.h @@ -106,7 +106,7 @@ u8 SpawnSpecialObjectEventParameterized(u8 graphicsId, u8 movementBehavior, u8 l u8 SpawnSpecialObjectEvent(struct ObjectEventTemplate *); void SetSpritePosToMapCoords(s16, s16, s16 *, s16 *); void CameraObjectReset1(void); -u8 UpdateSpritePalette(struct SpritePalette *, struct Sprite *); +u8 UpdateSpritePalette(const struct SpritePalette *, struct Sprite *); void ObjectEventSetGraphicsId(struct ObjectEvent *, u8 graphicsId); void ObjectEventTurn(struct ObjectEvent *, u8); void ObjectEventTurnByLocalIdAndMap(u8, u8, u8, u8); diff --git a/src/data/field_effects/field_effect_objects.h b/src/data/field_effects/field_effect_objects.h index 4fc3ecff6..1f2c354a7 100755 --- a/src/data/field_effects/field_effect_objects.h +++ b/src/data/field_effects/field_effect_objects.h @@ -28,45 +28,13 @@ static const struct SpriteFrameImage sPicTable_ShadowExtraLarge[] = { obj_frame_tiles(gFieldEffectObjectPic_ShadowExtraLarge), }; -const struct SpriteTemplate gFieldEffectObjectTemplate_ShadowSmall = { - .tileTag = 0xFFFF, - .paletteTag = 0xFFFF, - .oam = &gObjectEventBaseOam_8x8, - .anims = sAnimTable_Shadow, - .images = sPicTable_ShadowSmall, - .affineAnims = gDummySpriteAffineAnimTable, - .callback = UpdateShadowFieldEffect, -}; +const struct SpriteTemplate gFieldEffectObjectTemplate_ShadowSmall = {0xFFFF, OBJ_EVENT_PAL_TAG_MAY, &gObjectEventBaseOam_8x8, gFieldEffectObjectImageAnimTable_Shadow, gFieldEffectObjectPicTable_ShadowSmall, gDummySpriteAffineAnimTable, UpdateShadowFieldEffect}; -const struct SpriteTemplate gFieldEffectObjectTemplate_ShadowMedium = { - .tileTag = 0xFFFF, - .paletteTag = 0xFFFF, - .oam = &gObjectEventBaseOam_16x8, - .anims = sAnimTable_Shadow, - .images = sPicTable_ShadowMedium, - .affineAnims = gDummySpriteAffineAnimTable, - .callback = UpdateShadowFieldEffect, -}; +const struct SpriteTemplate gFieldEffectObjectTemplate_ShadowMedium = {0xFFFF, OBJ_EVENT_PAL_TAG_MAY, &gObjectEventBaseOam_16x8, gFieldEffectObjectImageAnimTable_Shadow, gFieldEffectObjectPicTable_ShadowMedium, gDummySpriteAffineAnimTable, UpdateShadowFieldEffect}; -const struct SpriteTemplate gFieldEffectObjectTemplate_ShadowLarge = { - .tileTag = 0xFFFF, - .paletteTag = 0xFFFF, - .oam = &gObjectEventBaseOam_32x8, - .anims = sAnimTable_Shadow, - .images = sPicTable_ShadowLarge, - .affineAnims = gDummySpriteAffineAnimTable, - .callback = UpdateShadowFieldEffect, -}; +const struct SpriteTemplate gFieldEffectObjectTemplate_ShadowLarge = {0xFFFF, OBJ_EVENT_PAL_TAG_MAY, &gObjectEventBaseOam_32x8, gFieldEffectObjectImageAnimTable_Shadow, gFieldEffectObjectPicTable_ShadowLarge, gDummySpriteAffineAnimTable, UpdateShadowFieldEffect}; -const struct SpriteTemplate gFieldEffectObjectTemplate_ShadowExtraLarge = { - .tileTag = 0xFFFF, - .paletteTag = 0xFFFF, - .oam = &gObjectEventBaseOam_64x32, - .anims = sAnimTable_Shadow, - .images = sPicTable_ShadowExtraLarge, - .affineAnims = gDummySpriteAffineAnimTable, - .callback = UpdateShadowFieldEffect, -}; +const struct SpriteTemplate gFieldEffectObjectTemplate_ShadowExtraLarge = {0xFFFF, OBJ_EVENT_PAL_TAG_MAY, &gObjectEventBaseOam_64x32, gFieldEffectObjectImageAnimTable_Shadow, gFieldEffectObjectPicTable_ShadowExtraLarge, gDummySpriteAffineAnimTable, UpdateShadowFieldEffect}; static const struct SpriteFrameImage sPicTable_TallGrass[] = { overworld_frame(gFieldEffectObjectPic_TallGrass, 2, 2, 0), @@ -208,15 +176,7 @@ static const union AnimCmd *const sAnimTable_SurfBlob[] = sSurfBlobAnim_FaceEast, }; -const struct SpriteTemplate gFieldEffectObjectTemplate_SurfBlob = { - .tileTag = 0xFFFF, - .paletteTag = 0xFFFF, - .oam = &gObjectEventBaseOam_32x32, - .anims = sAnimTable_SurfBlob, - .images = sPicTable_SurfBlob, - .affineAnims = gDummySpriteAffineAnimTable, - .callback = UpdateSurfBlobFieldEffect, -}; +const struct SpriteTemplate gFieldEffectObjectTemplate_SurfBlob = {0xFFFF, OBJ_EVENT_PAL_TAG_MAY, &gObjectEventBaseOam_32x32, gFieldEffectObjectImageAnimTable_SurfBlob, gFieldEffectObjectPicTable_SurfBlob, gDummySpriteAffineAnimTable, UpdateSurfBlobFieldEffect}; static const struct SpriteFrameImage sPicTable_Arrow[] = { overworld_frame(gFieldEffectObjectPic_Arrow, 2, 2, 0), @@ -265,15 +225,7 @@ static const union AnimCmd *const sAnimTable_Arrow[] = sArrowAnim_East, }; -const struct SpriteTemplate gFieldEffectObjectTemplate_Arrow = { - .tileTag = 0xFFFF, - .paletteTag = 0xFFFF, - .oam = &gObjectEventBaseOam_16x16, - .anims = sAnimTable_Arrow, - .images = sPicTable_Arrow, - .affineAnims = gDummySpriteAffineAnimTable, - .callback = SpriteCallbackDummy, -}; +const struct SpriteTemplate gFieldEffectObjectTemplate_Arrow = {0xFFFF, OBJ_EVENT_PAL_TAG_MAY, &gObjectEventBaseOam_16x16, gFieldEffectObjectImageAnimTable_Arrow, gFieldEffectObjectPicTable_Arrow, gDummySpriteAffineAnimTable, SpriteCallbackDummy}; static const struct SpriteFrameImage sPicTable_GroundImpactDust[] = { overworld_frame(gFieldEffectObjectPic_GroundImpactDust, 2, 1, 0), @@ -1062,15 +1014,7 @@ static const union AnimCmd *const sAnimTable_Bird[] = sAnim_Bird, }; -const struct SpriteTemplate gFieldEffectObjectTemplate_Bird = { - .tileTag = 0xFFFF, - .paletteTag = 0xFFFF, - .oam = &gObjectEventBaseOam_32x32, - .anims = sAnimTable_Bird, - .images = sPicTable_Bird, - .affineAnims = gDummySpriteAffineAnimTable, - .callback = SpriteCallbackDummy, -}; +const struct SpriteTemplate gFieldEffectObjectTemplate_Bird = {0xFFFF, OBJ_EVENT_PAL_TAG_MAY, &gObjectEventBaseOam_32x32, gFieldEffectObjectImageAnimTable_Bird, gFieldEffectObjectPicTable_Bird, gDummySpriteAffineAnimTable, SpriteCallbackDummy}; static const struct SpriteFrameImage sPicTable_ShortGrass[] = { overworld_frame(gFieldEffectObjectPic_ShortGrass, 2, 2, 0), @@ -1147,14 +1091,14 @@ static const union AnimCmd *const sAnimTable_AshPuff[] = sAnim_AshPuff, }; -const struct SpriteTemplate gFieldEffectObjectTemplate_AshPuff = +const struct SpriteTemplate gFieldEffectObjectTemplate_AshPuff = { - .tileTag = 0xFFFF, - .paletteTag = FLDEFF_PAL_TAG_ASH, - .oam = &gObjectEventBaseOam_16x16, - .anims = sAnimTable_AshPuff, - .images = sPicTable_AshPuff, - .affineAnims = gDummySpriteAffineAnimTable, + .tileTag = 0xFFFF, + .paletteTag = FLDEFF_PAL_TAG_ASH, + .oam = &gObjectEventBaseOam_16x16, + .anims = sAnimTable_AshPuff, + .images = sPicTable_AshPuff, + .affineAnims = gDummySpriteAffineAnimTable, .callback = SpriteCB_AshPuff }; @@ -1183,14 +1127,14 @@ static const union AnimCmd *const sAnimTable_AshLaunch[] = sAnim_AshLaunch, }; -const struct SpriteTemplate gFieldEffectObjectTemplate_AshLaunch = +const struct SpriteTemplate gFieldEffectObjectTemplate_AshLaunch = { - .tileTag = 0xFFFF, - .paletteTag = FLDEFF_PAL_TAG_ASH, - .oam = &gObjectEventBaseOam_16x16, - .anims = sAnimTable_AshLaunch, - .images = sPicTable_AshLaunch, - .affineAnims = gDummySpriteAffineAnimTable, + .tileTag = 0xFFFF, + .paletteTag = FLDEFF_PAL_TAG_ASH, + .oam = &gObjectEventBaseOam_16x16, + .anims = sAnimTable_AshLaunch, + .images = sPicTable_AshLaunch, + .affineAnims = gDummySpriteAffineAnimTable, .callback = SpriteCB_AshLaunch }; diff --git a/src/event_object_movement.c b/src/event_object_movement.c index 7d20a466c..c3024ee90 100644 --- a/src/event_object_movement.c +++ b/src/event_object_movement.c @@ -140,6 +140,7 @@ static bool8 AnimateSpriteInFigure8(struct Sprite *sprite); static void UpdateObjectEventSprite(struct Sprite *); static void UpdateObjectEventSpriteSubpriorityAndVisibility(struct Sprite *); u8 GetDirectionToFace(s16 x1, s16 y1, s16 x2, s16 y2); +static void ObjectEventSetGraphics(struct ObjectEvent *, const struct ObjectEventGraphicsInfo *); const u8 gReflectionEffectPaletteMap[] = {1, 1, 6, 7, 8, 9, 6, 7, 8, 9, 11, 11, 0, 0, 0, 0}; @@ -1642,27 +1643,9 @@ static const struct ObjectEventGraphicsInfo * SpeciesToGraphicsInfo(u16 species) // Set graphics & sprite for a follower object event by species TODO: Refactoring static void FollowerSetGraphics(struct ObjectEvent *objectEvent, u16 species) { - const struct ObjectEventGraphicsInfo *graphicsInfo = SpeciesToGraphicsInfo(species); - struct Sprite *sprite = &gSprites[objectEvent->spriteId]; - u16 i = FindObjectEventPaletteIndexByTag(graphicsInfo->paletteTag1); - u8 paletteNum = UpdateSpritePalette((struct SpritePalette *)&sObjectEventSpritePalettes[i], sprite); - sprite->oam.paletteNum = paletteNum; - 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; objectEvent->graphicsId = OBJ_EVENT_GFX_FOLLOWER; - SetSpritePosToMapCoords(objectEvent->currentCoords.x, objectEvent->currentCoords.y, &sprite->pos1.x, &sprite->pos1.y); - sprite->centerToCornerVecX = -(graphicsInfo->width >> 1); - sprite->centerToCornerVecY = -(graphicsInfo->height >> 1); - sprite->pos1.x += 8; - sprite->pos1.y += 16 + sprite->centerToCornerVecY; - if (objectEvent->trackedByCamera) - { - CameraObjectReset1(); - } + ObjectEventSetGraphics(objectEvent, SpeciesToGraphicsInfo(species)); + objectEvent->graphicsId = OBJ_EVENT_GFX_FOLLOWER; } void UpdateFollowingPokemon(void) { // Update following pokemon if any @@ -1699,7 +1682,7 @@ static bool8 IsFollowerVisible(void) { // Determine whether follower *should* be return !TestPlayerAvatarFlags(PLAYER_AVATAR_FLAG_SURFING | PLAYER_AVATAR_FLAG_ACRO_BIKE | PLAYER_AVATAR_FLAG_MACH_BIKE); } -bool8 ScrFunc_getfolloweraction(struct ScriptContext *ctx) +bool8 ScrFunc_getfolloweraction(struct ScriptContext *ctx) // Essentially a big switch for follower messages { u16 value; u16 species; @@ -1900,7 +1883,8 @@ static void SetPlayerAvatarObjectEventIdAndObjectId(u8 objectEventId, u8 spriteI } // Update sprite's palette, freeing old palette if necessary -u8 UpdateSpritePalette(struct SpritePalette * spritePalette, struct Sprite * sprite) { +// TODO: Should this be in sprite.c? +u8 UpdateSpritePalette(const struct SpritePalette * spritePalette, struct Sprite * sprite) { u8 paletteNum = sprite->oam.paletteNum; // Free palette if otherwise unused sprite->inUse = FALSE; @@ -1914,37 +1898,33 @@ u8 UpdateSpritePalette(struct SpritePalette * spritePalette, struct Sprite * spr return paletteNum; } +// Set graphics *by info* +static void ObjectEventSetGraphics(struct ObjectEvent *objectEvent, const struct ObjectEventGraphicsInfo *graphicsInfo) { + struct Sprite *sprite = &gSprites[objectEvent->spriteId]; + u16 i = FindObjectEventPaletteIndexByTag(graphicsInfo->paletteTag1); // TODO: What if this fails? + 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->pos1.x, &sprite->pos1.y); + sprite->centerToCornerVecX = -(graphicsInfo->width >> 1); + sprite->centerToCornerVecY = -(graphicsInfo->height >> 1); + sprite->pos1.x += 8; + sprite->pos1.y += 16 + sprite->centerToCornerVecY; + if (objectEvent->trackedByCamera) + { + CameraObjectReset1(); + } +} + void ObjectEventSetGraphicsId(struct ObjectEvent *objectEvent, u8 graphicsId) { - const struct ObjectEventGraphicsInfo *graphicsInfo = GetObjectEventGraphicsInfo(graphicsId); - struct Sprite *sprite = &gSprites[objectEvent->spriteId]; - u16 i; - u8 paletteNum; - - if (graphicsInfo->paletteSlot == 0 && FALSE) { // Hack until I can fix this - PatchObjectPalette(graphicsInfo->paletteTag1, graphicsInfo->paletteSlot); - paletteNum = 0; - } else { - i = FindObjectEventPaletteIndexByTag(graphicsInfo->paletteTag1); - paletteNum = UpdateSpritePalette((struct SpritePalette *)&sObjectEventSpritePalettes[i], sprite); - } - sprite->oam.paletteNum = paletteNum; - 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; objectEvent->graphicsId = graphicsId; - SetSpritePosToMapCoords(objectEvent->currentCoords.x, objectEvent->currentCoords.y, &sprite->pos1.x, &sprite->pos1.y); - sprite->centerToCornerVecX = -(graphicsInfo->width >> 1); - sprite->centerToCornerVecY = -(graphicsInfo->height >> 1); - sprite->pos1.x += 8; - sprite->pos1.y += 16 + sprite->centerToCornerVecY; - if (objectEvent->trackedByCamera) - { - CameraObjectReset1(); - } + ObjectEventSetGraphics(objectEvent, GetObjectEventGraphicsInfo(graphicsId)); + objectEvent->graphicsId = graphicsId; } void ObjectEventSetGraphicsIdByLocalIdAndMap(u8 localId, u8 mapNum, u8 mapGroup, u8 graphicsId) @@ -1986,19 +1966,7 @@ static void SetBerryTreeGraphics(struct ObjectEvent *objectEvent, u8 berryId, u8 const u8 graphicsId = gBerryTreeObjectEventGraphicsIdTablePointers[berryId][berryStage]; const struct ObjectEventGraphicsInfo *graphicsInfo = GetObjectEventGraphicsInfo(graphicsId); struct Sprite *sprite = &gSprites[objectEvent->spriteId]; - u8 paletteNum = sprite->oam.paletteNum; - u16 paletteTag = sObjectEventSpritePalettes[gBerryTreePaletteSlotTablePointers[berryId][berryStage]-2].tag; - u16 i; - // Free old palette if otherwise unused - sprite->inUse = FALSE; - FieldEffectFreePaletteIfUnused(paletteNum); - sprite->inUse = TRUE; - i = FindObjectEventPaletteIndexByTag(paletteTag); - paletteNum = IndexOfSpritePaletteTag(sObjectEventSpritePalettes[i].tag); - if (paletteNum == 0xFF) { // Load palette - paletteNum = LoadSpritePalette(&sObjectEventSpritePalettes[i]); - } - sprite->oam.paletteNum = paletteNum; + UpdateSpritePalette(&sObjectEventSpritePalettes[gBerryTreePaletteSlotTablePointers[berryId][berryStage]-2], sprite); sprite->oam.shape = graphicsInfo->oam->shape; sprite->oam.size = graphicsInfo->oam->size; sprite->images = gBerryTreePicTablePointers[berryId]; diff --git a/src/field_effect.c b/src/field_effect.c index 8e2a3b067..e734bd92c 100644 --- a/src/field_effect.c +++ b/src/field_effect.c @@ -3071,7 +3071,7 @@ u8 FldEff_RayquazaSpotlight(void) struct Sprite *sprite = &gSprites[spriteId]; sprite->oam.priority = 1; - sprite->oam.paletteNum = 4; + sprite->oam.paletteNum = 4; // TODO: What palette should this Raquaza use? sprite->data[0] = 0; sprite->data[1] = 0; sprite->data[2] = 0; @@ -3106,7 +3106,6 @@ 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]; @@ -3288,7 +3287,6 @@ 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; return spriteId; diff --git a/src/field_effect_helpers.c b/src/field_effect_helpers.c index 0eb58bf31..561254a3a 100755 --- a/src/field_effect_helpers.c +++ b/src/field_effect_helpers.c @@ -994,7 +994,6 @@ u32 FldEff_SurfBlob(void) { sprite = &gSprites[spriteId]; sprite->coordOffsetEnabled = TRUE; - sprite->oam.paletteNum = 0; sprite->data[2] = gFieldEffectArguments[2]; sprite->data[3] = -1; sprite->data[6] = -1; @@ -1262,7 +1261,7 @@ u32 FldEff_BerryTreeGrowthSparkle(void) sprite = &gSprites[spriteId]; sprite->coordOffsetEnabled = TRUE; sprite->oam.priority = gFieldEffectArguments[3]; - sprite->oam.paletteNum = 5; + sprite->oam.paletteNum = 5; // TODO: What paletteTag does this use? sprite->data[0] = FLDEFF_BERRY_TREE_GROWTH_SPARKLE; } return 0; @@ -1298,7 +1297,7 @@ static u32 ShowDisguiseFieldEffect(u8 fldEff, u8 fldEffObj, u8 paletteNum) { sprite = &gSprites[spriteId]; sprite->coordOffsetEnabled ++; - sprite->oam.paletteNum = paletteNum; + sprite->oam.paletteNum = paletteNum; // TODO: Fix paletteNum sprite->data[1] = fldEff; sprite->data[2] = gFieldEffectArguments[0]; sprite->data[3] = gFieldEffectArguments[1]; diff --git a/src/fldeff_misc.c b/src/fldeff_misc.c index b320f3eb0..ac01a9581 100644 --- a/src/fldeff_misc.c +++ b/src/fldeff_misc.c @@ -1025,7 +1025,7 @@ void DoSecretBaseGlitterMatSparkle(void) { gSprites[spriteId].coordOffsetEnabled = TRUE; gSprites[spriteId].oam.priority = 1; - gSprites[spriteId].oam.paletteNum = 5; + gSprites[spriteId].oam.paletteNum = 5; // TODO: What palette should this use? gSprites[spriteId].callback = SpriteCB_GlitterMatSparkle; gSprites[spriteId].data[0] = 0; } From e975698966b0ba42eb51d19d762e53dbe483e4ef Mon Sep 17 00:00:00 2001 From: Ariel Antonitis Date: Wed, 17 Jun 2020 16:21:05 -0400 Subject: [PATCH 013/241] Fixed bug in ScrCmd_release. --- src/scrcmd.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/scrcmd.c b/src/scrcmd.c index 745c3dbf8..015e6942f 100644 --- a/src/scrcmd.c +++ b/src/scrcmd.c @@ -1270,6 +1270,7 @@ bool8 ScrCmd_releaseall(struct ScriptContext *ctx) struct ObjectEvent *followerObject = GetFollowerObject(); if (followerObject) { // Release follower from movement // ObjectEventClearHeldMovement( TODO: Change the way data[1] determines state + followerObject->singleMovementActive = FALSE; followerObject->movementActionId = 0xFF; followerObject->heldMovementActive = FALSE; followerObject->heldMovementFinished = FALSE; @@ -1291,6 +1292,7 @@ bool8 ScrCmd_release(struct ScriptContext *ctx) struct ObjectEvent *followerObject = GetFollowerObject(); if (followerObject) { // Release follower from movement // ObjectEventClearHeldMovement( + followerObject->singleMovementActive = FALSE; followerObject->movementActionId = 0xFF; followerObject->heldMovementActive = FALSE; followerObject->heldMovementFinished = FALSE; From 8598c59fad8b7265f76fabe445c93ac2454b4458 Mon Sep 17 00:00:00 2001 From: Ariel Antonitis Date: Wed, 17 Jun 2020 17:06:53 -0400 Subject: [PATCH 014/241] Fixed tree disguise for dynamic palettes. --- include/event_object_movement.h | 2 +- src/data/field_effects/field_effect_objects.h | 20 ++----------------- src/event_object_movement.c | 18 +++++++++++++---- src/field_effect_helpers.c | 2 +- 4 files changed, 18 insertions(+), 24 deletions(-) diff --git a/include/event_object_movement.h b/include/event_object_movement.h index f4667773d..c9443dd87 100644 --- a/include/event_object_movement.h +++ b/include/event_object_movement.h @@ -106,7 +106,7 @@ u8 SpawnSpecialObjectEventParameterized(u8 graphicsId, u8 movementBehavior, u8 l u8 SpawnSpecialObjectEvent(struct ObjectEventTemplate *); void SetSpritePosToMapCoords(s16, s16, s16 *, s16 *); void CameraObjectReset1(void); -u8 UpdateSpritePalette(const struct SpritePalette *, struct Sprite *); +u8 UpdateSpritePaletteByTemplate(const struct SpriteTemplate *, struct Sprite *); void ObjectEventSetGraphicsId(struct ObjectEvent *, u8 graphicsId); void ObjectEventTurn(struct ObjectEvent *, u8); void ObjectEventTurnByLocalIdAndMap(u8, u8, u8, u8); diff --git a/src/data/field_effects/field_effect_objects.h b/src/data/field_effects/field_effect_objects.h index 1f2c354a7..cd1aa58fe 100755 --- a/src/data/field_effects/field_effect_objects.h +++ b/src/data/field_effects/field_effect_objects.h @@ -925,15 +925,7 @@ static const union AnimCmd *const sAnimTable_TreeDisguise[] = sAnim_TreeDisguiseReveal, }; -const struct SpriteTemplate gFieldEffectObjectTemplate_TreeDisguise = { - .tileTag = 0xFFFF, - .paletteTag = 0xFFFF, - .oam = &gObjectEventBaseOam_16x32, - .anims = sAnimTable_TreeDisguise, - .images = sPicTable_TreeDisguise, - .affineAnims = gDummySpriteAffineAnimTable, - .callback = UpdateDisguiseFieldEffect, -}; +const struct SpriteTemplate gFieldEffectObjectTemplate_TreeDisguise = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_3, &gObjectEventBaseOam_16x32, gFieldEffectObjectImageAnimTable_TreeDisguise, gFieldEffectObjectPicTable_TreeDisguise, gDummySpriteAffineAnimTable, UpdateDisguiseFieldEffect}; static const struct SpriteFrameImage sPicTable_MountainDisguise[] = { overworld_frame(gFieldEffectObjectPic_MountainDisguise, 2, 4, 0), @@ -969,15 +961,7 @@ static const union AnimCmd *const sAnimTable_MountainDisguise[] = sAnim_MountainDisguiseReveal, }; -const struct SpriteTemplate gFieldEffectObjectTemplate_MountainDisguise = { - .tileTag = 0xFFFF, - .paletteTag = 0xFFFF, - .oam = &gObjectEventBaseOam_16x32, - .anims = sAnimTable_MountainDisguise, - .images = sPicTable_MountainDisguise, - .affineAnims = gDummySpriteAffineAnimTable, - .callback = UpdateDisguiseFieldEffect, -}; +const struct SpriteTemplate gFieldEffectObjectTemplate_MountainDisguise = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_2, &gObjectEventBaseOam_16x32, gFieldEffectObjectImageAnimTable_MountainDisguise, gFieldEffectObjectPicTable_MountainDisguise, gDummySpriteAffineAnimTable, UpdateDisguiseFieldEffect}; static const struct SpriteFrameImage sPicTable_SandDisguisePlaceholder[] = { overworld_frame(gFieldEffectObjectPic_SandDisguisePlaceholder, 2, 4, 0), diff --git a/src/event_object_movement.c b/src/event_object_movement.c index c3024ee90..901490ecd 100644 --- a/src/event_object_movement.c +++ b/src/event_object_movement.c @@ -1883,8 +1883,7 @@ static void SetPlayerAvatarObjectEventIdAndObjectId(u8 objectEventId, u8 spriteI } // Update sprite's palette, freeing old palette if necessary -// TODO: Should this be in sprite.c? -u8 UpdateSpritePalette(const struct SpritePalette * spritePalette, struct Sprite * sprite) { +static u8 UpdateSpritePalette(const struct SpritePalette * spritePalette, struct Sprite * sprite) { u8 paletteNum = sprite->oam.paletteNum; // Free palette if otherwise unused sprite->inUse = FALSE; @@ -1898,11 +1897,21 @@ u8 UpdateSpritePalette(const struct SpritePalette * spritePalette, struct Sprite return paletteNum; } +// Find and update based on template's paletteTag +// TODO: Should this logic happen in CreateSpriteAt? +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]; - u16 i = FindObjectEventPaletteIndexByTag(graphicsInfo->paletteTag1); // TODO: What if this fails? - UpdateSpritePalette(&sObjectEventSpritePalettes[i], sprite); + u8 i = FindObjectEventPaletteIndexByTag(graphicsInfo->paletteTag1); + if (i != 0xFF) + UpdateSpritePalette(&sObjectEventSpritePalettes[i], sprite); sprite->oam.shape = graphicsInfo->oam->shape; sprite->oam.size = graphicsInfo->oam->size; sprite->images = graphicsInfo->images; @@ -4578,6 +4587,7 @@ bool8 MovementType_FollowPlayer_Shadow(struct ObjectEvent *objectEvent, struct S { ClearObjectEventMovement(objectEvent, sprite); if (!IsFollowerVisible()) { // Shadow player's position + objectEvent->invisible = TRUE; MoveObjectEventToMapCoords(objectEvent, gObjectEvents[gPlayerAvatar.objectEventId].currentCoords.x, gObjectEvents[gPlayerAvatar.objectEventId].currentCoords.y); return FALSE; } diff --git a/src/field_effect_helpers.c b/src/field_effect_helpers.c index 561254a3a..188afcf34 100755 --- a/src/field_effect_helpers.c +++ b/src/field_effect_helpers.c @@ -1296,8 +1296,8 @@ static u32 ShowDisguiseFieldEffect(u8 fldEff, u8 fldEffObj, u8 paletteNum) if (spriteId != MAX_SPRITES) { sprite = &gSprites[spriteId]; + UpdateSpritePaletteByTemplate(gFieldEffectObjectTemplatePointers[templateIdx], sprite); sprite->coordOffsetEnabled ++; - sprite->oam.paletteNum = paletteNum; // TODO: Fix paletteNum sprite->data[1] = fldEff; sprite->data[2] = gFieldEffectArguments[0]; sprite->data[3] = gFieldEffectArguments[1]; From e9711b7cd5a3f0cd10c4aed197924e747004e1be Mon Sep 17 00:00:00 2001 From: Ariel Antonitis Date: Wed, 17 Jun 2020 21:08:15 -0400 Subject: [PATCH 015/241] Fixed high bridge (Route 120) reflections. --- src/event_object_movement.c | 11 +-- src/field_effect_helpers.c | 147 ++++++++++++++++++------------------ 2 files changed, 75 insertions(+), 83 deletions(-) diff --git a/src/event_object_movement.c b/src/event_object_movement.c index 901490ecd..025cfdf66 100644 --- a/src/event_object_movement.c +++ b/src/event_object_movement.c @@ -1884,17 +1884,12 @@ static void SetPlayerAvatarObjectEventIdAndObjectId(u8 objectEventId, u8 spriteI // Update sprite's palette, freeing old palette if necessary static u8 UpdateSpritePalette(const struct SpritePalette * spritePalette, struct Sprite * sprite) { - u8 paletteNum = sprite->oam.paletteNum; // Free palette if otherwise unused sprite->inUse = FALSE; - FieldEffectFreePaletteIfUnused(paletteNum); + FieldEffectFreePaletteIfUnused(sprite->oam.paletteNum); sprite->inUse = TRUE; - paletteNum = IndexOfSpritePaletteTag(spritePalette->tag); - if (paletteNum == 0xFF) { - paletteNum = LoadSpritePalette(spritePalette); - } - sprite->oam.paletteNum = paletteNum; - return paletteNum; + sprite->oam.paletteNum = LoadSpritePalette(spritePalette); + return sprite->oam.paletteNum; } // Find and update based on template's paletteTag diff --git a/src/field_effect_helpers.c b/src/field_effect_helpers.c index 188afcf34..e6179c91c 100755 --- a/src/field_effect_helpers.c +++ b/src/field_effect_helpers.c @@ -19,7 +19,7 @@ static void UpdateObjectReflectionSprite(struct Sprite *); static void LoadObjectReflectionPalette(struct ObjectEvent *objectEvent, struct Sprite *sprite); -static void LoadObjectHighBridgeReflectionPalette(struct ObjectEvent *, u8); +static void LoadObjectHighBridgeReflectionPalette(struct ObjectEvent *, struct Sprite *sprite); static void LoadObjectRegularReflectionPalette(struct ObjectEvent *, struct Sprite *); static void sub_81561FC(struct Sprite *, u8, u8); static void FadeFootprintsTireTracks_Step0(struct Sprite *); @@ -73,12 +73,12 @@ static void LoadObjectReflectionPalette(struct ObjectEvent *objectEvent, struct reflectionSprite->sReflectionVerticalOffset = 0; if (!GetObjectEventGraphicsInfo(objectEvent->graphicsId)->disableReflectionPaletteLoad && ((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, sprite); + LoadObjectRegularReflectionPalette(objectEvent, reflectionSprite); } } @@ -103,98 +103,95 @@ static void ApplyReflectionFilter(u8 paletteNum, u16 *dest) { static void LoadObjectRegularReflectionPalette(struct ObjectEvent *objectEvent, struct Sprite *sprite) { const struct ObjectEventGraphicsInfo *graphicsInfo = GetObjectEventGraphicsInfo(objectEvent->graphicsId); - u16 baseTag = gSprites[objectEvent->spriteId].oam.paletteNum; - u16 paletteTag = baseTag + OBJ_EVENT_PAL_TAG_NONE + 0x1000; - struct SpritePalette filteredPalette; - u16 filteredData[16] = {0}; - u8 paletteIndex = IndexOfSpritePaletteTag(paletteTag); - u32 *debugPtr = (u32*) 0x0203d600; - if (paletteIndex == 0xFF) { // Build filtered palette - *(debugPtr) = baseTag; - *(debugPtr + 1) = (u32) filteredData; - __asm__(".2byte 0xBE00"); + const struct Sprite *mainSprite = &gSprites[objectEvent->spriteId]; + u16 baseTag = GetSpritePaletteTagByPaletteNum(mainSprite->oam.paletteNum); + u16 paletteTag = baseTag == 0xFFFF ? mainSprite->oam.paletteNum + 0x2000 : baseTag + 0x2000; + u8 paletteNum = IndexOfSpritePaletteTag(paletteTag); + if (paletteNum == 0xFF) { // Load filtered palette + u16 filteredData[16] = {0}; + struct SpritePalette filteredPalette = {.tag = paletteTag, .data = filteredData}; ApplyReflectionFilter(baseTag, filteredData); - *(debugPtr + 1) = (u32) filteredData; - __asm__(".2byte 0xBE00"); - filteredPalette.tag = paletteTag; - filteredPalette.data = filteredData; - paletteIndex = LoadSpritePalette(&filteredPalette); - // UpdateSpritePaletteWithWeather(paletteIndex); + paletteNum = LoadSpritePalette(&filteredPalette); + UpdateSpritePaletteWithWeather(paletteNum); } - sprite->oam.paletteNum = paletteIndex; + sprite->oam.paletteNum = paletteNum; } +#define HIGH_BRIDGE_PAL_TAG 0x4000 + // 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); } static void UpdateObjectReflectionSprite(struct Sprite *reflectionSprite) { struct ObjectEvent *objectEvent = &gObjectEvents[reflectionSprite->data[0]]; struct Sprite *mainSprite = &gSprites[objectEvent->spriteId]; - u16 baseTag = mainSprite->oam.paletteNum; - u16 paletteTag = baseTag + OBJ_EVENT_PAL_TAG_NONE + 0x1000; - struct SpritePalette filteredPalette; - u16 filteredData[16] = {0}; - u8 paletteNum; if (!objectEvent->active || !objectEvent->hasReflection || objectEvent->localId != reflectionSprite->data[1]) { reflectionSprite->inUse = FALSE; FieldEffectFreePaletteIfUnused(reflectionSprite->oam.paletteNum); + return; } - else + + // 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 + 0x2000 : baseTag + 0x2000; + u8 paletteNum; + // Free palette if unused + reflectionSprite->inUse = FALSE; + FieldEffectFreePaletteIfUnused(reflectionSprite->oam.paletteNum); + reflectionSprite->inUse = TRUE; + paletteNum = IndexOfSpritePaletteTag(paletteTag); + if (paletteNum == 0xFF) { // Build filtered palette + u16 filteredData[16] = {0}; + struct SpritePalette filteredPalette = {.tag = paletteTag, .data = filteredData}; + ApplyReflectionFilter(mainSprite->oam.paletteNum, filteredData); + paletteNum = LoadSpritePalette(&filteredPalette); + UpdateSpritePaletteWithWeather(paletteNum); + } + 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->pos1.x = mainSprite->pos1.x; + // reflectionSprite->data[2] holds an additional vertical offset, used by the high bridges on Route 120 + reflectionSprite->pos1.y = mainSprite->pos1.y + GetReflectionVerticalOffset(objectEvent) + reflectionSprite->data[2]; + reflectionSprite->centerToCornerVecX = mainSprite->centerToCornerVecX; + reflectionSprite->centerToCornerVecY = mainSprite->centerToCornerVecY; + reflectionSprite->pos2.x = mainSprite->pos2.x; + reflectionSprite->pos2.y = -mainSprite->pos2.y; + reflectionSprite->coordOffsetEnabled = mainSprite->coordOffsetEnabled; + + if (objectEvent->hideReflection == TRUE) + reflectionSprite->invisible = TRUE; + + // Check if the reflection is not still. + if (reflectionSprite->data[7] == FALSE) { - // Free palette if unused - reflectionSprite->inUse = FALSE; - FieldEffectFreePaletteIfUnused(reflectionSprite->oam.paletteNum); - reflectionSprite->inUse = TRUE; - paletteNum = IndexOfSpritePaletteTag(paletteTag); - if (paletteNum == 0xFF) { // Build filtered palette - ApplyReflectionFilter(baseTag, filteredData); - filteredPalette.tag = paletteTag; - filteredPalette.data = filteredData; - paletteNum = LoadSpritePalette(&filteredPalette); - } - 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->pos1.x = mainSprite->pos1.x; - reflectionSprite->pos1.y = mainSprite->pos1.y + GetReflectionVerticalOffset(objectEvent) + reflectionSprite->sReflectionVerticalOffset; - reflectionSprite->centerToCornerVecX = mainSprite->centerToCornerVecX; - reflectionSprite->centerToCornerVecY = mainSprite->centerToCornerVecY; - reflectionSprite->pos2.x = mainSprite->pos2.x; - reflectionSprite->pos2.y = -mainSprite->pos2.y; - 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; - } + // 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; } } From 4bd664203379c030720abad690766b5059f8d959 Mon Sep 17 00:00:00 2001 From: Ariel Antonitis Date: Wed, 17 Jun 2020 23:13:18 -0400 Subject: [PATCH 016/241] Use front sprite palettes for event objects. --- .../object_events/pics/pokemon/marshtomp.png | Bin 7353 -> 6721 bytes .../object_events/pics/pokemon/togetic.png | Bin 4519 -> 4693 bytes graphics/pokemon/togetic/anim_front.png | Bin 6367 -> 6378 bytes graphics/pokemon/togetic/normal.pal | 10 ++++---- include/constants/event_objects.h | 2 +- .../object_event_graphics_info.h | 6 ++--- .../object_event_graphics_info_pointers.h | 2 +- src/event_object_movement.c | 22 ++++++++++++++---- 8 files changed, 28 insertions(+), 14 deletions(-) diff --git a/graphics/object_events/pics/pokemon/marshtomp.png b/graphics/object_events/pics/pokemon/marshtomp.png index 6f3df54953216e9b25c9be15c26e5c3f5abaf121..298a2a413f960cc3d2614fe61cfe15a09ab26423 100644 GIT binary patch delta 6677 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 delta 7314 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 FV1l8RxsU(= delta 4395 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 diff --git a/graphics/pokemon/togetic/anim_front.png b/graphics/pokemon/togetic/anim_front.png index ce187e23bcdffd5e120fdfe5e204e7372f2098f3..06f92d6fe64ab75fa868e1274faeda37f5ed2c2f 100644 GIT binary patch delta 5357 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 Lh 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 T7A*)25i1Dc*aa}NNEV_3?bIw= diff --git a/graphics/pokemon/togetic/normal.pal b/graphics/pokemon/togetic/normal.pal index c07ecff88..114a69dac 100644 --- 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/include/constants/event_objects.h b/include/constants/event_objects.h index e6a553499..83ee23ab8 100644 --- a/include/constants/event_objects.h +++ b/include/constants/event_objects.h @@ -241,7 +241,7 @@ #define OBJ_EVENT_GFX_LUGIA 237 #define OBJ_EVENT_GFX_HOOH 238 #define OBJ_EVENT_GFX_ANIMATED_BALL 239 -#define OBJ_EVENT_GFX_FOLLOWER 240 +#define OBJ_EVENT_GFX_OW_MON 240 #define NUM_OBJ_EVENT_GFX 241 diff --git a/src/data/object_events/object_event_graphics_info.h b/src/data/object_events/object_event_graphics_info.h index 2f22e7dbe..9f2571031 100755 --- a/src/data/object_events/object_event_graphics_info.h +++ b/src/data/object_events/object_event_graphics_info.h @@ -243,9 +243,9 @@ const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_RubySapphireBrenda const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_RubySapphireMay = {0xFFFF, OBJ_EVENT_PAL_TAG_RS_MAY, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_RubySapphireMay, gDummySpriteAffineAnimTable}; const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Lugia = {0xFFFF, OBJ_EVENT_PAL_TAG_LUGIA, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_Lugia, gDummySpriteAffineAnimTable}; const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_HoOh = {0xFFFF, OBJ_EVENT_PAL_TAG_HO_OH, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_HoOh, gObjectEventPicTable_HoOh, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_AnimatedBall = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_2, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_AnimatedBall, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Marshtomp = {0xFFFF, OBJ_EVENT_PAL_TAG_MARSHTOMP, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_Marshtomp, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_AnimatedBall = {0xFFFF, OBJ_EVENT_PAL_TAG_3, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_AnimatedBall, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Marshtomp = {0xFFFF, OBJ_EVENT_PAL_TAG_DYNAMIC, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_Marshtomp, gDummySpriteAffineAnimTable}; const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Altaria = {0xFFFF, OBJ_EVENT_PAL_TAG_ALTARIA, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_Altaria, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Togetic = {0xFFFF, OBJ_EVENT_PAL_TAG_TOGETIC, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_Togetic, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_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, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_Togetic, gDummySpriteAffineAnimTable}; const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Charizard = {0xFFFF, OBJ_EVENT_PAL_TAG_CHARIZARD, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_Charizard, gDummySpriteAffineAnimTable}; const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Follower = {0xFFFF, OBJ_EVENT_PAL_TAG_CHARIZARD, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_Togetic, 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 289b899a6..fc2b2074d 100755 --- a/src/data/object_events/object_event_graphics_info_pointers.h +++ b/src/data/object_events/object_event_graphics_info_pointers.h @@ -495,7 +495,7 @@ const struct ObjectEventGraphicsInfo *const gObjectEventGraphicsInfoPointers[NUM [OBJ_EVENT_GFX_LUGIA] = &gObjectEventGraphicsInfo_Lugia, [OBJ_EVENT_GFX_HOOH] = &gObjectEventGraphicsInfo_HoOh, [OBJ_EVENT_GFX_ANIMATED_BALL] = &gObjectEventGraphicsInfo_AnimatedBall, - [OBJ_EVENT_GFX_FOLLOWER] = &gObjectEventGraphicsInfo_Follower, + [OBJ_EVENT_GFX_OW_MON] = &gObjectEventGraphicsInfo_Follower, }; const struct ObjectEventGraphicsInfo *const gMauvilleOldManGraphicsInfoPointers[] = { diff --git a/src/event_object_movement.c b/src/event_object_movement.c index 025cfdf66..38ca4af78 100644 --- a/src/event_object_movement.c +++ b/src/event_object_movement.c @@ -3,6 +3,7 @@ #include "battle_pyramid.h" #include "berry.h" #include "decoration.h" +#include "decompress.h" #include "event_data.h" #include "event_object_movement.h" #include "event_scripts.h" @@ -17,6 +18,7 @@ #include "metatile_behavior.h" #include "overworld.h" #include "palette.h" +#include "data.h" #include "pokemon.h" #include "random.h" #include "script.h" @@ -450,6 +452,7 @@ const u8 gInitialMovementTypeFacingDirections[] = { #define OBJ_EVENT_PAL_TAG_TOGETIC 0x1126 #define OBJ_EVENT_PAL_TAG_CHARIZARD 0x1127 #define OBJ_EVENT_PAL_TAG_NONE 0x11FF +#define OBJ_EVENT_PAL_TAG_DYNAMIC 0x1124 #include "data/object_events/object_event_graphics_info_pointers.h" #include "data/field_effects/field_effect_object_template_pointers.h" @@ -1599,7 +1602,7 @@ u8 SpawnFollowingPokemon(void) { // Spawn a following pokemon TODO: Avoid this o template.localId = OBJ_EVENT_ID_FOLLOWER; if (GetFirstLiveMon() == NULL) // fainted party, don't spawn a follower return 0xFF; - template.graphicsId = OBJ_EVENT_GFX_FOLLOWER; + template.graphicsId = OBJ_EVENT_GFX_OW_MON; template.x = gSaveBlock1Ptr->pos.x; template.y = gSaveBlock1Ptr->pos.y; template.elevation = 3; @@ -1641,11 +1644,22 @@ static const struct ObjectEventGraphicsInfo * SpeciesToGraphicsInfo(u16 species) } } -// Set graphics & sprite for a follower object event by species TODO: Refactoring +// Set graphics & sprite for a follower object event by species static void FollowerSetGraphics(struct ObjectEvent *objectEvent, u16 species) { - objectEvent->graphicsId = OBJ_EVENT_GFX_FOLLOWER; + const struct ObjectEventGraphicsInfo *graphicsInfo = SpeciesToGraphicsInfo(species); + objectEvent->graphicsId = OBJ_EVENT_GFX_OW_MON; ObjectEventSetGraphics(objectEvent, SpeciesToGraphicsInfo(species)); - objectEvent->graphicsId = OBJ_EVENT_GFX_FOLLOWER; + objectEvent->graphicsId = OBJ_EVENT_GFX_OW_MON; + if (graphicsInfo->paletteTag1 == OBJ_EVENT_PAL_TAG_DYNAMIC) { // Use palette from species palette table + struct Sprite *sprite = &gSprites[objectEvent->spriteId]; + const struct CompressedSpritePalette *spritePalette = &gMonPaletteTable[species]; + // Free palette if otherwise unused + sprite->inUse = FALSE; + FieldEffectFreePaletteIfUnused(sprite->oam.paletteNum); + sprite->inUse = TRUE; + LoadCompressedSpritePalette(spritePalette); + sprite->oam.paletteNum = IndexOfSpritePaletteTag(spritePalette->tag); // Tag is always present + } } void UpdateFollowingPokemon(void) { // Update following pokemon if any From 1fa2bc0df1bfa66ca6b0546fe27268bf99a72a0c Mon Sep 17 00:00:00 2001 From: Ariel Antonitis Date: Wed, 17 Jun 2020 23:49:18 -0400 Subject: [PATCH 017/241] Fixed follower not disappearing when surfing. --- graphics/object_events/palettes/altaria.pal | 19 --------- graphics/object_events/palettes/charizard.pal | 19 --------- graphics/object_events/palettes/marshtomp.pal | 19 --------- graphics/object_events/palettes/togetic.pal | 19 --------- .../pics/pokemon/palette.py => palette.py | 1 + .../object_events/object_event_graphics.h | 4 -- .../object_event_graphics_info.h | 6 +-- src/event_object_movement.c | 39 ++++++++----------- src/field_effect_helpers.c | 2 - 9 files changed, 20 insertions(+), 108 deletions(-) delete mode 100644 graphics/object_events/palettes/altaria.pal delete mode 100644 graphics/object_events/palettes/charizard.pal delete mode 100644 graphics/object_events/palettes/marshtomp.pal delete mode 100644 graphics/object_events/palettes/togetic.pal rename graphics/object_events/pics/pokemon/palette.py => palette.py (91%) diff --git a/graphics/object_events/palettes/altaria.pal b/graphics/object_events/palettes/altaria.pal deleted file mode 100644 index b364496ff..000000000 --- a/graphics/object_events/palettes/altaria.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -208 144 200 -0 0 0 -0 2 6 -72 80 104 -40 104 152 -0 132 6 -40 128 168 -112 128 144 -64 168 216 -96 192 232 -168 176 192 -208 224 232 -248 248 248 -0 0 0 -0 0 0 -0 0 0 diff --git a/graphics/object_events/palettes/charizard.pal b/graphics/object_events/palettes/charizard.pal deleted file mode 100644 index 274fd57f8..000000000 --- a/graphics/object_events/palettes/charizard.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -160 176 128 -0 0 0 -96 48 0 -192 16 32 -40 72 88 -96 64 0 -144 64 32 -200 88 40 -64 128 128 -248 120 56 -160 160 160 -216 168 48 -248 184 16 -240 208 112 -216 216 248 -0 0 0 diff --git a/graphics/object_events/palettes/marshtomp.pal b/graphics/object_events/palettes/marshtomp.pal deleted file mode 100644 index 8f3efce88..000000000 --- a/graphics/object_events/palettes/marshtomp.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -136 184 104 -0 0 0 -72 56 16 -32 80 88 -48 80 96 -160 72 16 -192 88 16 -64 128 128 -96 120 128 -240 128 16 -128 160 176 -88 184 176 -176 192 208 -232 232 248 -0 0 0 -0 0 0 diff --git a/graphics/object_events/palettes/togetic.pal b/graphics/object_events/palettes/togetic.pal deleted file mode 100644 index 596c66d28..000000000 --- a/graphics/object_events/palettes/togetic.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -56 144 88 -0 0 0 -40 40 40 -40 48 88 -216 80 88 -128 144 144 -96 168 224 -160 176 216 -232 232 248 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 diff --git a/graphics/object_events/pics/pokemon/palette.py b/palette.py similarity index 91% rename from graphics/object_events/pics/pokemon/palette.py rename to palette.py index 70f1a1710..5fbcb48d4 100755 --- a/graphics/object_events/pics/pokemon/palette.py +++ b/palette.py @@ -1,4 +1,5 @@ #!/usr/bin/python3 +""" Extract a GBA-compatible palette from a PNG. """ import sys import os.path import png diff --git a/src/data/object_events/object_event_graphics.h b/src/data/object_events/object_event_graphics.h index 137065c07..400586a93 100755 --- a/src/data/object_events/object_event_graphics.h +++ b/src/data/object_events/object_event_graphics.h @@ -68,10 +68,6 @@ const u16 gObjectEventPal_Npc1Reflection[] = INCBIN_U16("graphics/object_events/ const u16 gObjectEventPal_Npc2Reflection[] = INCBIN_U16("graphics/object_events/palettes/npc_2_reflection.gbapal"); const u16 gObjectEventPal_Npc3Reflection[] = INCBIN_U16("graphics/object_events/palettes/npc_3_reflection.gbapal"); const u16 gObjectEventPal_Npc4Reflection[] = INCBIN_U16("graphics/object_events/palettes/npc_4_reflection.gbapal"); -const u16 gObjectEventPaletteMarshtomp[] = INCBIN_U16("graphics/object_events/palettes/marshtomp.gbapal"); -const u16 gObjectEventPaletteAltaria[] = INCBIN_U16("graphics/object_events/palettes/altaria.gbapal"); -const u16 gObjectEventPaletteTogetic[] = INCBIN_U16("graphics/object_events/palettes/togetic.gbapal"); -const u16 gObjectEventPaletteCharizard[] = INCBIN_U16("graphics/object_events/palettes/charizard.gbapal"); const u32 gObjectEventPic_NinjaBoy[] = INCBIN_U32("graphics/object_events/pics/people/ninja_boy.4bpp"); const u32 gObjectEventPic_Twin[] = INCBIN_U32("graphics/object_events/pics/people/twin.4bpp"); const u32 gObjectEventPic_Boy1[] = INCBIN_U32("graphics/object_events/pics/people/boy_1.4bpp"); diff --git a/src/data/object_events/object_event_graphics_info.h b/src/data/object_events/object_event_graphics_info.h index 9f2571031..f4597d2c7 100755 --- a/src/data/object_events/object_event_graphics_info.h +++ b/src/data/object_events/object_event_graphics_info.h @@ -245,7 +245,7 @@ const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Lugia = {0xFFFF, O const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_HoOh = {0xFFFF, OBJ_EVENT_PAL_TAG_HO_OH, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_HoOh, gObjectEventPicTable_HoOh, gDummySpriteAffineAnimTable}; const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_AnimatedBall = {0xFFFF, OBJ_EVENT_PAL_TAG_3, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_AnimatedBall, gDummySpriteAffineAnimTable}; const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Marshtomp = {0xFFFF, OBJ_EVENT_PAL_TAG_DYNAMIC, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_Marshtomp, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Altaria = {0xFFFF, OBJ_EVENT_PAL_TAG_ALTARIA, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_Altaria, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Altaria = {0xFFFF, OBJ_EVENT_PAL_TAG_DYNAMIC, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_Altaria, gDummySpriteAffineAnimTable}; const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_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, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_Togetic, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Charizard = {0xFFFF, OBJ_EVENT_PAL_TAG_CHARIZARD, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_Charizard, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Follower = {0xFFFF, OBJ_EVENT_PAL_TAG_CHARIZARD, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_Togetic, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_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, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_Charizard, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Follower = {0xFFFF, OBJ_EVENT_PAL_TAG_DYNAMIC, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_Togetic, gDummySpriteAffineAnimTable}; diff --git a/src/event_object_movement.c b/src/event_object_movement.c index 38ca4af78..8bf0aec92 100644 --- a/src/event_object_movement.c +++ b/src/event_object_movement.c @@ -2,6 +2,7 @@ #include "malloc.h" #include "battle_pyramid.h" #include "berry.h" +#include "data.h" #include "decoration.h" #include "decompress.h" #include "event_data.h" @@ -18,7 +19,6 @@ #include "metatile_behavior.h" #include "overworld.h" #include "palette.h" -#include "data.h" #include "pokemon.h" #include "random.h" #include "script.h" @@ -447,12 +447,8 @@ 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_MARSHTOMP 0x1124 -#define OBJ_EVENT_PAL_TAG_ALTARIA 0x1125 -#define OBJ_EVENT_PAL_TAG_TOGETIC 0x1126 -#define OBJ_EVENT_PAL_TAG_CHARIZARD 0x1127 -#define OBJ_EVENT_PAL_TAG_NONE 0x11FF #define OBJ_EVENT_PAL_TAG_DYNAMIC 0x1124 +#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" @@ -498,10 +494,7 @@ 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}, - {gObjectEventPaletteMarshtomp, OBJ_EVENT_PAL_TAG_MARSHTOMP}, - {gObjectEventPaletteAltaria, OBJ_EVENT_PAL_TAG_ALTARIA}, - {gObjectEventPaletteTogetic, OBJ_EVENT_PAL_TAG_TOGETIC}, - {gObjectEventPaletteCharizard, OBJ_EVENT_PAL_TAG_CHARIZARD}, + {gObjectEventPalette0, OBJ_EVENT_PAL_TAG_DYNAMIC}, {NULL, 0x0000}, }; @@ -4608,6 +4601,18 @@ bool8 MovementType_FollowPlayer_Active(struct ObjectEvent *objectEvent, struct S { if (gObjectEvents[gPlayerAvatar.objectEventId].movementActionId == 0xFF || gPlayerAvatar.tileTransitionState == T_TILE_CENTER) { // do nothing if player is stationary return FALSE; + } else if (!IsFollowerVisible()) { + if (objectEvent->invisible) { // Return to shadowing state + sprite->data[1] = 0; + return FALSE; + } + // Animate entering pokeball + ClearObjectEventMovement(objectEvent, sprite); + ObjectEventSetSingleMovement(objectEvent, sprite, MOVEMENT_ACTION_ENTER_POKEBALL); + objectEvent->singleMovementActive = 1; + sprite->animCmdIndex = 0; // Needed because of weird animCmdIndex stuff + sprite->data[1] = 2; // movement action sets state to 0 + return TRUE; } // TODO: Remove dependence on PlayerGetCopyableMovement return gFollowPlayerMovementFuncs[PlayerGetCopyableMovement()](objectEvent, sprite, GetPlayerMovementDirection(), NULL); @@ -4628,19 +4633,7 @@ bool8 MovementType_FollowPlayer_Moving(struct ObjectEvent *objectEvent, struct S bool8 FollowablePlayerMovement_Idle(struct ObjectEvent *objectEvent, struct Sprite *sprite, u8 playerDirection, bool8 tileCallback(u8)) { u8 direction; - if (!IsFollowerVisible()) { - if (objectEvent->invisible) { // Return to shadowing state - sprite->data[1] = 0; - return FALSE; - } - // Animate entering pokeball - ClearObjectEventMovement(objectEvent, sprite); - ObjectEventSetSingleMovement(objectEvent, sprite, MOVEMENT_ACTION_ENTER_POKEBALL); - objectEvent->singleMovementActive = 1; - sprite->animCmdIndex = 0; // Needed because of weird animCmdIndex stuff - sprite->data[1] = 2; // movement action sets state to 0 - return TRUE; - } else if (!objectEvent->singleMovementActive) { // walk in place + if (!objectEvent->singleMovementActive) { // walk in place ObjectEventSetSingleMovement(objectEvent, sprite, GetWalkInPlaceNormalMovementAction(objectEvent->facingDirection)); sprite->data[1] = 1; objectEvent->singleMovementActive = 1; diff --git a/src/field_effect_helpers.c b/src/field_effect_helpers.c index e6179c91c..b4c0fcfdf 100755 --- a/src/field_effect_helpers.c +++ b/src/field_effect_helpers.c @@ -84,11 +84,9 @@ static void LoadObjectReflectionPalette(struct ObjectEvent *objectEvent, struct // Apply a blue tint effect to a palette static void ApplyReflectionFilter(u8 paletteNum, u16 *dest) { - u32 *debugPtr = (u32*) 0x0203d600; u8 i, val, r, g, b; // CpuCopy16(gPlttBufferUnfaded + 0x100 + paletteNum * 16, dest, 32); u16 *src = gPlttBufferUnfaded + 0x100 + paletteNum * 16; - *(debugPtr + 2) = (u32) (gPlttBufferUnfaded + 0x100 + paletteNum * 16); for (i = 0; i < 16; i++) { r = src[i] & 0x1F; g = (src[i] >> 5) & 0x1F; From 984cfe4699f8c02ed4f684b648381d7acbd16de1 Mon Sep 17 00:00:00 2001 From: Ariel Antonitis Date: Thu, 18 Jun 2020 01:45:12 -0400 Subject: [PATCH 018/241] Fixed endless reflection spawning. --- src/event_object_movement.c | 26 +++++++++++--------------- src/field_effect_helpers.c | 9 +++++---- 2 files changed, 16 insertions(+), 19 deletions(-) diff --git a/src/event_object_movement.c b/src/event_object_movement.c index 8bf0aec92..382b4ca4c 100644 --- a/src/event_object_movement.c +++ b/src/event_object_movement.c @@ -4591,6 +4591,7 @@ bool8 MovementType_FollowPlayer_Shadow(struct ObjectEvent *objectEvent, struct S 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; } sprite->data[1] = 1; // Enter idle state @@ -4610,7 +4611,7 @@ bool8 MovementType_FollowPlayer_Active(struct ObjectEvent *objectEvent, struct S ClearObjectEventMovement(objectEvent, sprite); ObjectEventSetSingleMovement(objectEvent, sprite, MOVEMENT_ACTION_ENTER_POKEBALL); objectEvent->singleMovementActive = 1; - sprite->animCmdIndex = 0; // Needed because of weird animCmdIndex stuff + sprite->animCmdIndex = 0; // Needed for animCmdIndex weirdness sprite->data[1] = 2; // movement action sets state to 0 return TRUE; } @@ -6211,19 +6212,14 @@ bool8 MovementAction_WalkInPlaceSlowDown_Step0(struct ObjectEvent *objectEvent, // Copy and load objectEvent's palette, but set all opaque colors to white static u8 LoadWhiteFlashPalette(struct ObjectEvent *objectEvent, struct Sprite *sprite) { - struct SpritePalette dynamicPalette; + + u8 i; u16 paletteData[16]; - u16 i = GetObjectEventGraphicsInfo(objectEvent->graphicsId)->paletteTag1; - u8 j; - i = FindObjectEventPaletteIndexByTag(i); - dynamicPalette.tag = OBJ_EVENT_PAL_TAG_NONE-1; // TODO: Use a proper palette tag here - dynamicPalette.data = paletteData; - paletteData[0] = sObjectEventSpritePalettes[i].data[0]; - for (j=1; j<16; j++) { - paletteData[j] = 0xFFFF; + struct SpritePalette dynamicPalette = {.tag = OBJ_EVENT_PAL_TAG_NONE-1, .data = paletteData}; // TODO: Use a proper palette tag here + for (i=1; i<16; i++) { + paletteData[i] = 0xFFFF; } - sprite->oam.paletteNum = LoadSpritePalette(&dynamicPalette); - return sprite->oam.paletteNum; + return UpdateSpritePalette(&dynamicPalette, sprite); } bool8 MovementAction_ExitPokeball_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite) { @@ -6256,8 +6252,9 @@ bool8 MovementAction_ExitPokeball_Step1(struct ObjectEvent *objectEvent, struct LoadWhiteFlashPalette(objectEvent, sprite); // Restore original palette } else if ((duration == 0 && sprite->data[3] == 1) || (duration == 1 && sprite->data[3] == 3)) { - FreeSpritePaletteByTag(OBJ_EVENT_PAL_TAG_NONE-1); - sprite->oam.paletteNum = (sprite->data[6] >> 4) & 0xF; + FollowerSetGraphics(objectEvent, sprite->data[7]); + // FreeSpritePaletteByTag(OBJ_EVENT_PAL_TAG_NONE-1); + // sprite->oam.paletteNum = (sprite->data[6] >> 4) & 0xF; } return FALSE; } @@ -6278,7 +6275,6 @@ bool8 MovementAction_EnterPokeball_Step1(struct ObjectEvent *objectEvent, struct } else if (sprite->data[3] == 11) { // Set palette to white LoadWhiteFlashPalette(objectEvent, sprite); } else if (sprite->data[3] == 7) { // Free white palette and change to pokeball - FreeSpritePaletteByTag(OBJ_EVENT_PAL_TAG_NONE-1); ObjectEventSetGraphicsId(objectEvent, OBJ_EVENT_GFX_ANIMATED_BALL); } return FALSE; diff --git a/src/field_effect_helpers.c b/src/field_effect_helpers.c index b4c0fcfdf..3258c7299 100755 --- a/src/field_effect_helpers.c +++ b/src/field_effect_helpers.c @@ -14,8 +14,9 @@ #include "constants/field_effects.h" #include "constants/songs.h" -#define OBJ_EVENT_PAL_START 0x1103 // duplicate of define in event_object_movement.c #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); @@ -103,7 +104,7 @@ static void LoadObjectRegularReflectionPalette(struct ObjectEvent *objectEvent, 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 + 0x2000 : baseTag + 0x2000; + 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}; @@ -115,7 +116,7 @@ static void LoadObjectRegularReflectionPalette(struct ObjectEvent *objectEvent, sprite->oam.paletteNum = paletteNum; } -#define HIGH_BRIDGE_PAL_TAG 0x4000 +#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. @@ -146,7 +147,7 @@ static void UpdateObjectReflectionSprite(struct Sprite *reflectionSprite) // 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 + 0x2000 : baseTag + 0x2000; + u16 paletteTag = baseTag == 0xFFFF ? mainSprite->oam.paletteNum + PAL_RAW_REFLECTION_OFFSET : baseTag + PAL_TAG_REFLECTION_OFFSET; u8 paletteNum; // Free palette if unused reflectionSprite->inUse = FALSE; From be60824263465d64d318877df9526e34be19711e Mon Sep 17 00:00:00 2001 From: Ariel Antonitis Date: Thu, 18 Jun 2020 01:59:45 -0400 Subject: [PATCH 019/241] Add Banette event object. --- .../object_events/pics/pokemon/banette.png | Bin 0 -> 1003 bytes graphics/pokemon/banette/anim_front.png | Bin 787 -> 6822 bytes graphics/pokemon/banette/normal.pal | 4 ++-- spritesheet_rules.mk | 3 +++ src/data/object_events/object_event_graphics.h | 1 + .../object_events/object_event_graphics_info.h | 1 + .../object_events/object_event_pic_tables.h | 9 +++++++++ src/event_object_movement.c | 3 +++ 8 files changed, 19 insertions(+), 2 deletions(-) create mode 100644 graphics/object_events/pics/pokemon/banette.png diff --git a/graphics/object_events/pics/pokemon/banette.png b/graphics/object_events/pics/pokemon/banette.png new file mode 100644 index 0000000000000000000000000000000000000000..cc9c14d6d321b819b8b8284ef7dee6877902bc41 GIT binary patch literal 1003 zcmVEX>4Tx04R}tkv&MmKpe$iKeQqhK|828WT;LSL`5963Pq?8YK2xEOfLO`CJjl7 zi=*ILaPVWX>fqw6tAnc`2!4P#IXWr2NQwVT3N2zhIPS;0dyl(!fWKa5su>&yRLwF{ ziMWu-t_q=7bfOPI3?e8oQ=b#XBs|C0J$!tC`-NgjguFvE0V2XsEe3JSuIyt^Pc>L;heUz%ypW>NMI355FtQD6(y8mAx5i4iis5M$36T*j$b5~Os*0b zITlcX3d!+<|H1EW&HUtqn-q=%9WS>1F#?2kfkw@?zmILZaRLOMfh(=$uhfB=Ptt2G zEqVm>ZUYzBElu77E_Z-|CtWfmM+(sN=kvh(8GTb0=)VQJ*WBKk`#607($rP*1~@nb zMhld^?(y!f_TK(I)9mjD_``B`6JDX|0000mP)t-s)#laz|NsC0G3KNg|GhEhF)`kI zF}+$4gFz`^Xn=r#puN4#l$5Mt5(FqByJg-I0005LNklj<>Kp3ln4I zOI$P;8`~QSXk`j`B@&}KC}y`Ykt-ILGakc|!Kj_N?S_GGf0T>xTx39F2Qg?~9uS{aT`ho`+TlSZfhI)&BDO>ksP24P*cH?QsOaz@mp~2M zCbO)A7*ubYCfi&#nE)zJL=DJbXIEs|63sxf0(fx^381ne2KH;lpxInJI^IDHzTdCU zZ;05gPe2{QJwNy}@a)E^emrG*H-J_j*L<50`LyIS2p~H}_H~a{ErO~iI!oA(_cVZE zo4(?5lQntkMbP_o0$v79I8y5?wxpk6d5o)}H1K2Tp99Eh0qt&id5l4w)9yN9$JF}( zjw3eC_~UdA1GG~x?DDkMMWAw?`h-_gBI~9lKZ^XMxX!KzM-dqA2lt~3>bp0>edE;s ZY#;m8(yFZV%~k*a002ovPDHLkV1kgfz3Kn} literal 0 HcmV?d00001 diff --git a/graphics/pokemon/banette/anim_front.png b/graphics/pokemon/banette/anim_front.png index 7d10d2c50f4d134628e819ad92932ab5a8e75c25..8b3c0bd915b3710141bf89c92e1e94e1e7a8ff0e 100644 GIT binary patch delta 6815 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 delta 735 zcmV<50wDdSHIoLABa^TfA%Fk>G5`NDy}iwpl&o`ei%Lpj0002|5a^l!0004WQchC< zK<3zH0007!NklljA6vuC>GBok0;1jTPV?pgkCpN@{Tt=iy4I@$!?F1jl z7GEIG$%Gi>i8J>U6fA%70>*T%5ilmE2` zNTXSQfoa~nSa86PCCTsSPqdU34}5!tO}u=KRaBCF zVkvFsh!!j`I~YT#lh3w&?^T?7`GVT^$+F5W!`MykZcN`LbLz@WLiJabAk0xhNr zV_e-_g%@rQVF7BCmdmT~dB_4dGqg@*v$`2GEfAWLY!WLGjK^cHf_=^n7$KII@3}kx z49Onp!AG`$eOQ=*9rJ+AqeN!6+Y`l}cibTk@$bbSs(mBwMNfVsZsjHJ#qA~jH*qgG zpet_Hs$Frji+|{fJLP&jh+Ffc+KIc={4jUo-k6X37P}X>5C(ZySr6jI+thGgeOhkC zjlc(?TcRl;?)yIno=?WgY=s&~_l@2$H-OAtM917L&^5PhrXB;Wxz!|YOMG$GfJ;#m zDWc7hyghN(I8_ZU4v{@jgU|(pE>I+~>Mq5n&{ew#N>nRmtM1ip7_#2AVxCn-F2^3V zi+pSDJCE9T<{tRej!|c8f_r^xZ^evV_|)FIJ@cy_C2%PE)IRF<`XLS>#BX!+iWEz6 R8B+iN002ovPDHLkV1j(0QNsWL diff --git a/graphics/pokemon/banette/normal.pal b/graphics/pokemon/banette/normal.pal index cebcb7757..45f7058ea 100644 --- 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/spritesheet_rules.mk b/spritesheet_rules.mk index 869a9bd1f..b0bb7f62f 100644 --- a/spritesheet_rules.mk +++ b/spritesheet_rules.mk @@ -483,6 +483,9 @@ $(OBJEVENTGFXDIR)/pokemon/togetic.4bpp: %.4bpp: %.png $(OBJEVENTGFXDIR)/pokemon/charizard.4bpp: %.4bpp: %.png $(GFX) $< $@ -mwidth 4 -mheight 4 +$(OBJEVENTGFXDIR)/pokemon/banette.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + $(OBJEVENTGFXDIR)/berry_trees/aguav.4bpp: %.4bpp: %.png $(GFX) $< $@ -mwidth 2 -mheight 4 diff --git a/src/data/object_events/object_event_graphics.h b/src/data/object_events/object_event_graphics.h index 400586a93..a75353cae 100755 --- a/src/data/object_events/object_event_graphics.h +++ b/src/data/object_events/object_event_graphics.h @@ -365,4 +365,5 @@ const u32 gObjectEventPic_Marshtomp[] = INCBIN_U32("graphics/object_events/pics/ const u32 gObjectEventPic_Altaria[] = INCBIN_U32("graphics/object_events/pics/pokemon/altaria.4bpp"); const u32 gObjectEventPic_Togetic[] = INCBIN_U32("graphics/object_events/pics/pokemon/togetic.4bpp"); const u32 gObjectEventPic_Charizard[] = INCBIN_U32("graphics/object_events/pics/pokemon/charizard.4bpp"); +const u32 gObjectEventPic_Banette[] = INCBIN_U32("graphics/object_events/pics/pokemon/banette.4bpp"); const u16 gObjectEventPalette31[] = INCBIN_U16("graphics/object_events/palettes/31.gbapal"); diff --git a/src/data/object_events/object_event_graphics_info.h b/src/data/object_events/object_event_graphics_info.h index f4597d2c7..ef19fabe6 100755 --- a/src/data/object_events/object_event_graphics_info.h +++ b/src/data/object_events/object_event_graphics_info.h @@ -249,3 +249,4 @@ const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Altaria = {0xFFFF, const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_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, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_Togetic, gDummySpriteAffineAnimTable}; const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_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, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_Charizard, gDummySpriteAffineAnimTable}; const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Follower = {0xFFFF, OBJ_EVENT_PAL_TAG_DYNAMIC, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_Togetic, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_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, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_Banette, gDummySpriteAffineAnimTable}; diff --git a/src/data/object_events/object_event_pic_tables.h b/src/data/object_events/object_event_pic_tables.h index ccfaa376e..2889f0bc7 100755 --- a/src/data/object_events/object_event_pic_tables.h +++ b/src/data/object_events/object_event_pic_tables.h @@ -2197,6 +2197,15 @@ const struct SpriteFrameImage gObjectEventPicTable_Charizard[] = { overworld_frame(gObjectEventPic_Charizard, 4, 4, 5), }; +const struct SpriteFrameImage gObjectEventPicTable_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), +}; + const struct SpriteFrameImage gObjectEventPicTable_RubySapphireBrendan[] = { overworld_frame(gObjectEventPic_RubySapphireBrendanNormal, 2, 4, 0), overworld_frame(gObjectEventPic_RubySapphireBrendanNormal, 2, 4, 1), diff --git a/src/event_object_movement.c b/src/event_object_movement.c index 382b4ca4c..96ce02c3e 100644 --- a/src/event_object_movement.c +++ b/src/event_object_movement.c @@ -1632,6 +1632,9 @@ static const struct ObjectEventGraphicsInfo * SpeciesToGraphicsInfo(u16 species) case SPECIES_CHARIZARD : return &gObjectEventGraphicsInfo_Charizard; break; + case SPECIES_BANETTE : + return &gObjectEventGraphicsInfo_Banette; + break; default: return &gObjectEventGraphicsInfo_Dusclops; } From 84668d0d407b70dd9cce5a4677d1f2a314f2382b Mon Sep 17 00:00:00 2001 From: Ariel Antonitis Date: Thu, 18 Jun 2020 02:50:39 -0400 Subject: [PATCH 020/241] Added ice reflection filter & blending for reflections. --- src/field_effect_helpers.c | 50 +++++++++++++++++++++++++++++++------- 1 file changed, 41 insertions(+), 9 deletions(-) diff --git a/src/field_effect_helpers.c b/src/field_effect_helpers.c index 3258c7299..ec5796ccc 100755 --- a/src/field_effect_helpers.c +++ b/src/field_effect_helpers.c @@ -84,7 +84,7 @@ static void LoadObjectReflectionPalette(struct ObjectEvent *objectEvent, struct } // Apply a blue tint effect to a palette -static void ApplyReflectionFilter(u8 paletteNum, u16 *dest) { +static void ApplyPondFilter(u8 paletteNum, u16 *dest) { u8 i, val, r, g, b; // CpuCopy16(gPlttBufferUnfaded + 0x100 + paletteNum * 16, dest, 32); u16 *src = gPlttBufferUnfaded + 0x100 + paletteNum * 16; @@ -99,6 +99,28 @@ static void ApplyReflectionFilter(u8 paletteNum, u16 *dest) { } } +// Apply a ice tint effect to a palette +static void ApplyIceFilter(u8 paletteNum, u16 *dest) { + u8 i, val, r, g, b; + // CpuCopy16(gPlttBufferUnfaded + 0x100 + paletteNum * 16, dest, 32); + u16 *src = gPlttBufferUnfaded + 0x100 + paletteNum * 16; + for (i = 0; i < 16; i++) { + r = src[i] & 0x1F; + r -= 5; + if (r > 31) + r = 0; + g = (src[i] >> 5) & 0x1F; + g += 3; + if (g > 31) + g = 31; + b = (src[i] >> 10) & 0x1F; + b += 16; + if (b > 31) + b = 31; + *dest++ = (b << 10) | (g << 5) | r; + } +} + static void LoadObjectRegularReflectionPalette(struct ObjectEvent *objectEvent, struct Sprite *sprite) { const struct ObjectEventGraphicsInfo *graphicsInfo = GetObjectEventGraphicsInfo(objectEvent->graphicsId); @@ -109,11 +131,18 @@ static void LoadObjectRegularReflectionPalette(struct ObjectEvent *objectEvent, if (paletteNum == 0xFF) { // Load filtered palette u16 filteredData[16] = {0}; struct SpritePalette filteredPalette = {.tag = paletteTag, .data = filteredData}; - ApplyReflectionFilter(baseTag, filteredData); + if (sprite->data[7] == FALSE) { + ApplyPondFilter(mainSprite->oam.paletteNum, filteredData); + } else { + ApplyIceFilter(mainSprite->oam.paletteNum, filteredData); + } paletteNum = LoadSpritePalette(&filteredPalette); UpdateSpritePaletteWithWeather(paletteNum); } sprite->oam.paletteNum = paletteNum; + // Apply alpha blending + SetGpuReg(REG_OFFSET_BLDALPHA, sprite->data[7] == FALSE ? BLDALPHA_BLEND(8, 12) : BLDALPHA_BLEND(8, 8)); + sprite->oam.objMode = 1; // BLEND } #define HIGH_BRIDGE_PAL_TAG 0x4010 @@ -148,16 +177,19 @@ static void UpdateObjectReflectionSprite(struct Sprite *reflectionSprite) 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; - // Free palette if unused - reflectionSprite->inUse = FALSE; - FieldEffectFreePaletteIfUnused(reflectionSprite->oam.paletteNum); - reflectionSprite->inUse = TRUE; - paletteNum = IndexOfSpritePaletteTag(paletteTag); + u8 paletteNum = IndexOfSpritePaletteTag(paletteTag); if (paletteNum == 0xFF) { // Build filtered palette u16 filteredData[16] = {0}; struct SpritePalette filteredPalette = {.tag = paletteTag, .data = filteredData}; - ApplyReflectionFilter(mainSprite->oam.paletteNum, 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); } From b6eed75fd8e95a8cf990af9d11eabbd1ee6cd69d Mon Sep 17 00:00:00 2001 From: Ariel Antonitis Date: Thu, 18 Jun 2020 14:21:06 -0400 Subject: [PATCH 021/241] Moved pokemon graphics lookup into table. --- gflib/sprite.c | 2 -- .../object_event_graphics_info.h | 14 +++++++---- .../object_event_graphics_info_pointers.h | 4 ---- src/event_object_movement.c | 23 +++---------------- 4 files changed, 12 insertions(+), 31 deletions(-) diff --git a/gflib/sprite.c b/gflib/sprite.c index db1c7add2..0a07b5a42 100644 --- a/gflib/sprite.c +++ b/gflib/sprite.c @@ -1599,11 +1599,9 @@ void AllocSpriteTileRange(u16 tag, u16 start, u16 count) void FreeAllSpritePalettes(void) { u8 i; - u16 emptyPalette[16] = {0}; gReservedSpritePaletteCount = 0; for (i = 0; i < 16; i++) sSpritePaletteTags[i] = 0xFFFF; - LoadPalette(emptyPalette, i * 16 + 0x100, 32); // TODO: DEBUG: Remove this or battle palettes break } u8 LoadSpritePalette(const struct SpritePalette *palette) diff --git a/src/data/object_events/object_event_graphics_info.h b/src/data/object_events/object_event_graphics_info.h index ef19fabe6..51bbaf7f6 100755 --- a/src/data/object_events/object_event_graphics_info.h +++ b/src/data/object_events/object_event_graphics_info.h @@ -244,9 +244,13 @@ const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_RubySapphireMay = const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Lugia = {0xFFFF, OBJ_EVENT_PAL_TAG_LUGIA, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_Lugia, gDummySpriteAffineAnimTable}; const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_HoOh = {0xFFFF, OBJ_EVENT_PAL_TAG_HO_OH, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_HoOh, gObjectEventPicTable_HoOh, gDummySpriteAffineAnimTable}; const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_AnimatedBall = {0xFFFF, OBJ_EVENT_PAL_TAG_3, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_AnimatedBall, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Marshtomp = {0xFFFF, OBJ_EVENT_PAL_TAG_DYNAMIC, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_Marshtomp, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Altaria = {0xFFFF, OBJ_EVENT_PAL_TAG_DYNAMIC, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_Altaria, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_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, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_Togetic, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_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, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_Charizard, gDummySpriteAffineAnimTable}; const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Follower = {0xFFFF, OBJ_EVENT_PAL_TAG_DYNAMIC, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_Togetic, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_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, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_Banette, gDummySpriteAffineAnimTable}; + +// Species-indexed pokemon object event table +const struct ObjectEventGraphicsInfo gPokemonObjectGraphics[] = { + [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, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_Charizard, 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, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_Togetic, gDummySpriteAffineAnimTable}, + [SPECIES_MARSHTOMP] = {0xFFFF, OBJ_EVENT_PAL_TAG_DYNAMIC, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_Marshtomp, gDummySpriteAffineAnimTable}, + [SPECIES_ALTARIA] = {0xFFFF, OBJ_EVENT_PAL_TAG_DYNAMIC, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_Altaria, 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, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_Banette, 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 fc2b2074d..8f7ce169c 100755 --- a/src/data/object_events/object_event_graphics_info_pointers.h +++ b/src/data/object_events/object_event_graphics_info_pointers.h @@ -239,10 +239,6 @@ const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Lugia; const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_HoOh; // Begin pokemon event objects const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_AnimatedBall; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Marshtomp; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Altaria; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Togetic; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Charizard; const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Follower; const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Bard; diff --git a/src/event_object_movement.c b/src/event_object_movement.c index 96ce02c3e..bc8abbed1 100644 --- a/src/event_object_movement.c +++ b/src/event_object_movement.c @@ -1617,27 +1617,10 @@ struct ObjectEvent * GetFollowerObject(void) { // Return follower ObjectEvent or return NULL; } -// Return graphicsInfo for a pokemon species TODO: Make this into a table lookup +// Return graphicsInfo for a pokemon species static const struct ObjectEventGraphicsInfo * SpeciesToGraphicsInfo(u16 species) { - switch (species) { - case SPECIES_MARSHTOMP : - return &gObjectEventGraphicsInfo_Marshtomp; - break; - case SPECIES_TOGETIC : - return &gObjectEventGraphicsInfo_Togetic; - break; - case SPECIES_ALTARIA : - return &gObjectEventGraphicsInfo_Altaria; - break; - case SPECIES_CHARIZARD : - return &gObjectEventGraphicsInfo_Charizard; - break; - case SPECIES_BANETTE : - return &gObjectEventGraphicsInfo_Banette; - break; - default: - return &gObjectEventGraphicsInfo_Dusclops; - } + const struct ObjectEventGraphicsInfo *graphicsInfo = &gPokemonObjectGraphics[species]; + return graphicsInfo->tileTag != 0xFFFF ? &gObjectEventGraphicsInfo_Dusclops : graphicsInfo; } // Set graphics & sprite for a follower object event by species From db7e98c6a84b400363e5697612e8afcd8e39ab11 Mon Sep 17 00:00:00 2001 From: Ariel Antonitis Date: Thu, 18 Jun 2020 16:34:32 -0400 Subject: [PATCH 022/241] Merged SpawnFollowingPokemon into UpdateFollowingPokemon. --- include/event_object_movement.h | 1 - src/event_object_movement.c | 61 +++++++++++++++------------------ src/overworld.c | 2 +- 3 files changed, 28 insertions(+), 36 deletions(-) diff --git a/include/event_object_movement.h b/include/event_object_movement.h index c9443dd87..37b0f8c6c 100644 --- a/include/event_object_movement.h +++ b/include/event_object_movement.h @@ -94,7 +94,6 @@ void SetSpritePosToOffsetMapCoords(s16 *, s16 *, s16, s16); void ObjectEventClearHeldMovement(struct ObjectEvent *); void ObjectEventClearHeldMovementIfActive(struct ObjectEvent *); struct Pokemon * GetFirstLiveMon(void); -u8 SpawnFollowingPokemon(void); void UpdateFollowingPokemon(void); void RemoveFollowingPokemon(void); struct ObjectEvent * GetFollowerObject(void); diff --git a/src/event_object_movement.c b/src/event_object_movement.c index bc8abbed1..23889c148 100644 --- a/src/event_object_movement.c +++ b/src/event_object_movement.c @@ -1588,25 +1588,6 @@ struct Pokemon * GetFirstLiveMon(void) { // Return address of first conscious pa return NULL; } -u8 SpawnFollowingPokemon(void) { // Spawn a following pokemon TODO: Avoid this on certain maps - u8 objectEventId; - struct ObjectEventTemplate template = {0}; - - template.localId = OBJ_EVENT_ID_FOLLOWER; - if (GetFirstLiveMon() == NULL) // fainted party, don't spawn a follower - return 0xFF; - template.graphicsId = OBJ_EVENT_GFX_OW_MON; - template.x = gSaveBlock1Ptr->pos.x; - template.y = gSaveBlock1Ptr->pos.y; - template.elevation = 3; - template.movementType = MOVEMENT_TYPE_FOLLOW_PLAYER; - // template.script = EventScript_Follower; // This does nothing because scripts are templated - objectEventId = SpawnSpecialObjectEvent(&template); - gObjectEvents[objectEventId].invisible = TRUE; - UpdateFollowingPokemon(); - return objectEventId; -} - struct ObjectEvent * GetFollowerObject(void) { // Return follower ObjectEvent or NULL u8 i; for (i=0; i < OBJECT_EVENTS_COUNT; i++) { @@ -1643,25 +1624,37 @@ static void FollowerSetGraphics(struct ObjectEvent *objectEvent, u16 species) { void UpdateFollowingPokemon(void) { // Update following pokemon if any struct ObjectEvent *objectEvent = GetFollowerObject(); - struct Sprite *sprite; struct Pokemon *mon = GetFirstLiveMon(); + struct Sprite *sprite; u16 species; u16 *oldSpecies; - if (objectEvent == NULL || mon == NULL) { - return; + if (mon) { + if (objectEvent == NULL) { // Spawn follower + struct ObjectEventTemplate template = { + .localId = OBJ_EVENT_ID_FOLLOWER, + .graphicsId = OBJ_EVENT_GFX_OW_MON, + .x = gSaveBlock1Ptr->pos.x, + .y = gSaveBlock1Ptr->pos.y, + .elevation = 3, + .movementType = MOVEMENT_TYPE_FOLLOW_PLAYER + }; + objectEvent = &gObjectEvents[SpawnSpecialObjectEvent(&template)]; + objectEvent->invisible = TRUE; + } + sprite = &gSprites[objectEvent->spriteId]; + species = GetMonData(mon, MON_DATA_SPECIES); + oldSpecies = (u16*) &objectEvent->playerCopyableMovement; + if (species != *oldSpecies) { // Move to player and set invisible + MoveObjectEventToMapCoords(objectEvent, gObjectEvents[gPlayerAvatar.objectEventId].currentCoords.x, gObjectEvents[gPlayerAvatar.objectEventId].currentCoords.y); + objectEvent->invisible = TRUE; + } + FollowerSetGraphics(objectEvent, species); // TODO: This should be done to all pokemon graphics + *oldSpecies = species; // set species + sprite->data[6] = 0; // set animation data + sprite->data[7] = species; // set species + } else { + RemoveFollowingPokemon(); } - sprite = &gSprites[objectEvent->spriteId]; - species = GetMonData(mon, MON_DATA_SPECIES); - oldSpecies = (u16*) &objectEvent->playerCopyableMovement; - if (species != *oldSpecies) { // Move to player and set invisible - MoveObjectEventToMapCoords(objectEvent, gObjectEvents[gPlayerAvatar.objectEventId].currentCoords.x, gObjectEvents[gPlayerAvatar.objectEventId].currentCoords.y); - objectEvent->invisible = TRUE; - } - FollowerSetGraphics(objectEvent, species); // TODO: This should be done to all pokemon graphics - *oldSpecies = species; // set species - sprite->data[6] = 0; // set animation data - sprite->data[7] = species; // set species - return; } void RemoveFollowingPokemon(void) { // Remove follower object. Idempotent. diff --git a/src/overworld.c b/src/overworld.c index 140aefd96..d8d441b81 100644 --- a/src/overworld.c +++ b/src/overworld.c @@ -2156,7 +2156,7 @@ static void InitObjectEventsLocal(void) SetPlayerAvatarTransitionFlags(player->transitionFlags); ResetInitialPlayerAvatarState(); TrySpawnObjectEvents(0, 0); - SpawnFollowingPokemon(); + UpdateFollowingPokemon(); TryRunOnWarpIntoMapScript(); } From b7a027dab6348a04382bad5350f5e073ab94eb5a Mon Sep 17 00:00:00 2001 From: Ariel Antonitis Date: Thu, 18 Jun 2020 19:03:32 -0400 Subject: [PATCH 023/241] Fixed follower behavior on ice. --- src/data/object_events/object_event_graphics_info.h | 2 +- src/event_object_movement.c | 8 ++++++-- 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/src/data/object_events/object_event_graphics_info.h b/src/data/object_events/object_event_graphics_info.h index 51bbaf7f6..69f3fe728 100755 --- a/src/data/object_events/object_event_graphics_info.h +++ b/src/data/object_events/object_event_graphics_info.h @@ -243,7 +243,7 @@ const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_RubySapphireBrenda const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_RubySapphireMay = {0xFFFF, OBJ_EVENT_PAL_TAG_RS_MAY, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_RubySapphireMay, gDummySpriteAffineAnimTable}; const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Lugia = {0xFFFF, OBJ_EVENT_PAL_TAG_LUGIA, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_Lugia, gDummySpriteAffineAnimTable}; const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_HoOh = {0xFFFF, OBJ_EVENT_PAL_TAG_HO_OH, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_HoOh, gObjectEventPicTable_HoOh, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_AnimatedBall = {0xFFFF, OBJ_EVENT_PAL_TAG_3, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_AnimatedBall, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_AnimatedBall = {0xFFFF, OBJ_EVENT_PAL_TAG_3, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_AnimatedBall, gDummySpriteAffineAnimTable}; const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Follower = {0xFFFF, OBJ_EVENT_PAL_TAG_DYNAMIC, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_Togetic, gDummySpriteAffineAnimTable}; // Species-indexed pokemon object event table diff --git a/src/event_object_movement.c b/src/event_object_movement.c index 23889c148..f0c1e5801 100644 --- a/src/event_object_movement.c +++ b/src/event_object_movement.c @@ -1665,7 +1665,10 @@ void RemoveFollowingPokemon(void) { // Remove follower object. Idempotent. } 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); + return + !(TestPlayerAvatarFlags(PLAYER_AVATAR_FLAG_SURFING | PLAYER_AVATAR_FLAG_ACRO_BIKE | PLAYER_AVATAR_FLAG_MACH_BIKE) + || MetatileBehavior_IsForcedMovementTile(gObjectEvents[gPlayerAvatar.objectEventId].currentMetatileBehavior) + || MetatileBehavior_IsForcedMovementTile(gObjectEvents[gPlayerAvatar.objectEventId].previousMetatileBehavior)); } bool8 ScrFunc_getfolloweraction(struct ScriptContext *ctx) // Essentially a big switch for follower messages @@ -4600,7 +4603,8 @@ bool8 MovementType_FollowPlayer_Active(struct ObjectEvent *objectEvent, struct S bool8 MovementType_FollowPlayer_Moving(struct ObjectEvent *objectEvent, struct Sprite *sprite) { - if (ObjectEventExecSingleMovementAction(objectEvent, sprite)) + // TODO: This check for 0xFF fixes a crash on Route 111, why? + if (objectEvent->movementActionId == 0xFF || ObjectEventExecSingleMovementAction(objectEvent, sprite)) { objectEvent->singleMovementActive = 0; if (sprite->data[1]) { // restore nonzero state From 68ba615ab2d8052ae110ee6bcaeb10e6600b1c38 Mon Sep 17 00:00:00 2001 From: Ariel Antonitis Date: Thu, 18 Jun 2020 23:24:21 -0400 Subject: [PATCH 024/241] Updated follower script. --- data/scripts/follower.inc | 25 ++++++++++++++++++------- src/event_object_movement.c | 16 ++++++++++++---- 2 files changed, 30 insertions(+), 11 deletions(-) diff --git a/data/scripts/follower.inc b/data/scripts/follower.inc index bc4d2f4d3..0f467c1e7 100644 --- a/data/scripts/follower.inc +++ b/data/scripts/follower.inc @@ -13,6 +13,9 @@ gText_FollowerHasWetFeet:: gText_FollowerSplashesAround:: .string "{STR_VAR_1} splashes around happily!$" +gText_WantsToFly:: + .string "{STR_VAR_1} looks adventurous.\nWould you like to use FLY?$" + .macro playfirstmoncry callfunc ScrFunc_playfirstmoncry .endm @@ -27,7 +30,18 @@ EventScript_Follower:: lock faceplayer callfunc ScrFunc_getfolloweraction - msgbox gText_FollowerDefault, MSGBOX_DEFAULT + checkpartymove MOVE_FLY + compare VAR_RESULT 6 + goto_if_eq EventScript_FollowerEnd + bufferlivemonspeciesname 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:: release end @@ -36,8 +50,7 @@ EventScript_FollowerHasWetFeet:: playfirstmoncry msgbox gText_FollowerHasWetFeet, MSGBOX_DEFAULT waitmoncry - release - end + return EventScript_FollowerSplashesAbout:: bufferlivemonspeciesname 0 @@ -45,8 +58,7 @@ EventScript_FollowerSplashesAbout:: applymovement 0xFE FollowerSplashMovement waitmovement 0xFE msgbox gText_FollowerSplashesAround, MSGBOX_DEFAULT - release - end + return EnterPokeballMovement:: .byte 0x9F @ EnterPokeball @@ -65,5 +77,4 @@ EventScript_FollowerLovesYou:: waitmoncry bufferlivemonspeciesname 0 msgbox gText_FollowerLovesYou, MSGBOX_DEFAULT - release - end + return diff --git a/src/event_object_movement.c b/src/event_object_movement.c index f0c1e5801..8e3634bc3 100644 --- a/src/event_object_movement.c +++ b/src/event_object_movement.c @@ -21,6 +21,7 @@ #include "palette.h" #include "pokemon.h" #include "random.h" +#include "region_map.h" #include "script.h" #include "sprite.h" #include "task.h" @@ -1679,23 +1680,30 @@ bool8 ScrFunc_getfolloweraction(struct ScriptContext *ctx) // Essentially a big struct ObjectEvent *objEvent = &gObjectEvents[GetObjectEventIdByLocalIdAndMap(OBJ_EVENT_ID_FOLLOWER, gSaveBlock1Ptr->location.mapNum, gSaveBlock1Ptr->location.mapGroup)]; struct Pokemon *follower = GetFirstLiveMon(); if (follower == NULL) { + ScriptCall(ctx, EventScript_FollowerLovesYou); return FALSE; } behavior = MapGridGetMetatileBehaviorAt(objEvent->currentCoords.x, objEvent->currentCoords.y); species = GetMonData(follower, MON_DATA_SPECIES); if (MetatileBehavior_IsPuddle(behavior) || MetatileBehavior_IsShallowFlowingWater(behavior)) { if (gBaseStats[species].type1 == TYPE_FIRE || gBaseStats[species].type2 == TYPE_FIRE) { - ScriptJump(ctx, EventScript_FollowerHasWetFeet); + ScriptCall(ctx, EventScript_FollowerHasWetFeet); return FALSE; } else if (GetObjectEventGraphicsInfo(objEvent->graphicsId)->tracks) { // if follower leaves tracks - ScriptJump(ctx, EventScript_FollowerSplashesAbout); + ScriptCall(ctx, EventScript_FollowerSplashesAbout); return FALSE; } } if (GetCurrentWeather() == WEATHER_RAIN || GetCurrentWeather() == WEATHER_RAIN_THUNDERSTORM) { - ScriptJump(ctx, EventScript_FollowerLovesYou); + ScriptCall(ctx, EventScript_FollowerLovesYou); } - ScriptJump(ctx, EventScript_FollowerLovesYou); + // SetMainCallback2(CB2_OpenFlyMap); + ScriptCall(ctx, EventScript_FollowerLovesYou); + return FALSE; +} + +bool8 ScrFunc_followerfly(struct ScriptContext *ctx) { + SetMainCallback2(CB2_OpenFlyMap); return FALSE; } From 6692cd992f82e747ff308f7417b910df2d3c743c Mon Sep 17 00:00:00 2001 From: Ariel Antonitis Date: Mon, 22 Jun 2020 00:04:16 -0400 Subject: [PATCH 025/241] Added all 386 follower sprites. Allow NPC pokemon objects via a custom script header. --- .gitignore | 1 + extract_sprites.py | 133 + graphics/object_events/pics/pokemon/abra.png | Bin 0 -> 485 bytes graphics/object_events/pics/pokemon/absol.png | Bin 0 -> 733 bytes .../object_events/pics/pokemon/aerodactyl.png | Bin 0 -> 961 bytes .../object_events/pics/pokemon/aggron.png | Bin 0 -> 1184 bytes graphics/object_events/pics/pokemon/aipom.png | Bin 0 -> 736 bytes .../object_events/pics/pokemon/alakazam.png | Bin 0 -> 750 bytes .../object_events/pics/pokemon/altaria.png | Bin 1782 -> 1045 bytes .../object_events/pics/pokemon/ampharos.png | Bin 0 -> 696 bytes .../object_events/pics/pokemon/anorith.png | Bin 0 -> 722 bytes graphics/object_events/pics/pokemon/arbok.png | Bin 0 -> 708 bytes .../object_events/pics/pokemon/arcanine.png | Bin 0 -> 961 bytes .../object_events/pics/pokemon/ariados.png | Bin 0 -> 952 bytes .../object_events/pics/pokemon/armaldo.png | Bin 0 -> 908 bytes graphics/object_events/pics/pokemon/aron.png | Bin 0 -> 404 bytes .../object_events/pics/pokemon/articuno.png | Bin 0 -> 1196 bytes .../object_events/pics/pokemon/azumarill.png | Bin 325 -> 690 bytes .../object_events/pics/pokemon/azurill.png | Bin 308 -> 520 bytes graphics/object_events/pics/pokemon/bagon.png | Bin 0 -> 498 bytes .../object_events/pics/pokemon/baltoy.png | Bin 0 -> 388 bytes .../object_events/pics/pokemon/barboach.png | Bin 0 -> 513 bytes .../object_events/pics/pokemon/bayleef.png | Bin 0 -> 692 bytes .../object_events/pics/pokemon/beautifly.png | Bin 0 -> 795 bytes .../object_events/pics/pokemon/beedrill.png | Bin 0 -> 785 bytes .../object_events/pics/pokemon/beldum.png | Bin 0 -> 538 bytes .../object_events/pics/pokemon/bellossom.png | Bin 0 -> 633 bytes .../object_events/pics/pokemon/bellsprout.png | Bin 0 -> 396 bytes .../object_events/pics/pokemon/blastoise.png | Bin 0 -> 834 bytes .../object_events/pics/pokemon/blaziken.png | Bin 0 -> 885 bytes .../object_events/pics/pokemon/blissey.png | Bin 0 -> 594 bytes .../object_events/pics/pokemon/breloom.png | Bin 0 -> 581 bytes .../object_events/pics/pokemon/bulbasaur.png | Bin 0 -> 519 bytes .../object_events/pics/pokemon/butterfree.png | Bin 0 -> 808 bytes .../object_events/pics/pokemon/cacnea.png | Bin 0 -> 509 bytes .../object_events/pics/pokemon/cacturne.png | Bin 0 -> 517 bytes .../object_events/pics/pokemon/camerupt.png | Bin 0 -> 869 bytes .../object_events/pics/pokemon/carvanha.png | Bin 0 -> 749 bytes .../object_events/pics/pokemon/cascoon.png | Bin 0 -> 392 bytes .../object_events/pics/pokemon/caterpie.png | Bin 0 -> 562 bytes .../object_events/pics/pokemon/celebi.png | Bin 0 -> 542 bytes .../object_events/pics/pokemon/chansey.png | Bin 0 -> 490 bytes .../object_events/pics/pokemon/charizard.png | Bin 5896 -> 948 bytes .../object_events/pics/pokemon/charmander.png | Bin 0 -> 506 bytes .../object_events/pics/pokemon/charmeleon.png | Bin 0 -> 584 bytes .../object_events/pics/pokemon/chikorita.png | Bin 0 -> 457 bytes .../object_events/pics/pokemon/chimecho.png | Bin 0 -> 326 bytes .../object_events/pics/pokemon/chinchou.png | Bin 0 -> 667 bytes .../object_events/pics/pokemon/clamperl.png | Bin 0 -> 492 bytes .../object_events/pics/pokemon/claydol.png | Bin 0 -> 386 bytes .../object_events/pics/pokemon/clefable.png | Bin 0 -> 626 bytes .../object_events/pics/pokemon/clefairy.png | Bin 0 -> 456 bytes .../object_events/pics/pokemon/cleffa.png | Bin 0 -> 415 bytes .../object_events/pics/pokemon/cloyster.png | Bin 0 -> 1057 bytes .../object_events/pics/pokemon/combusken.png | Bin 0 -> 546 bytes .../object_events/pics/pokemon/corphish.png | Bin 0 -> 785 bytes .../object_events/pics/pokemon/corsola.png | Bin 0 -> 621 bytes .../object_events/pics/pokemon/cradily.png | Bin 0 -> 931 bytes .../object_events/pics/pokemon/crawdaunt.png | Bin 0 -> 863 bytes .../object_events/pics/pokemon/crobat.png | Bin 0 -> 958 bytes .../object_events/pics/pokemon/croconaw.png | Bin 0 -> 778 bytes .../object_events/pics/pokemon/cubone.png | Bin 0 -> 550 bytes .../object_events/pics/pokemon/cyndaquil.png | Bin 0 -> 654 bytes .../object_events/pics/pokemon/delcatty.png | Bin 0 -> 757 bytes .../object_events/pics/pokemon/delibird.png | Bin 0 -> 565 bytes .../object_events/pics/pokemon/deoxys.png | Bin 547 -> 728 bytes .../object_events/pics/pokemon/dewgong.png | Bin 0 -> 750 bytes .../object_events/pics/pokemon/diglett.png | Bin 0 -> 419 bytes graphics/object_events/pics/pokemon/ditto.png | Bin 0 -> 333 bytes .../object_events/pics/pokemon/dodrio.png | Bin 0 -> 1034 bytes graphics/object_events/pics/pokemon/doduo.png | Bin 0 -> 515 bytes .../object_events/pics/pokemon/donphan.png | Bin 0 -> 658 bytes .../object_events/pics/pokemon/dragonair.png | Bin 0 -> 1034 bytes .../object_events/pics/pokemon/dragonite.png | Bin 0 -> 786 bytes .../object_events/pics/pokemon/dratini.png | Bin 0 -> 635 bytes .../object_events/pics/pokemon/drowzee.png | Bin 0 -> 537 bytes .../object_events/pics/pokemon/dugtrio.png | Bin 0 -> 688 bytes .../object_events/pics/pokemon/dunsparce.png | Bin 0 -> 711 bytes .../object_events/pics/pokemon/dusclops.png | Bin 640 -> 825 bytes .../object_events/pics/pokemon/duskull.png | Bin 0 -> 474 bytes .../object_events/pics/pokemon/dustox.png | Bin 0 -> 734 bytes graphics/object_events/pics/pokemon/eevee.png | Bin 0 -> 493 bytes graphics/object_events/pics/pokemon/ekans.png | Bin 0 -> 601 bytes .../object_events/pics/pokemon/electabuzz.png | Bin 0 -> 580 bytes .../object_events/pics/pokemon/electrike.png | Bin 0 -> 591 bytes .../object_events/pics/pokemon/electrode.png | Bin 0 -> 386 bytes .../object_events/pics/pokemon/elekid.png | Bin 0 -> 515 bytes graphics/object_events/pics/pokemon/entei.png | Bin 0 -> 1013 bytes .../object_events/pics/pokemon/espeon.png | Bin 0 -> 739 bytes .../object_events/pics/pokemon/exeggcute.png | Bin 0 -> 824 bytes .../object_events/pics/pokemon/exeggutor.png | Bin 0 -> 787 bytes .../object_events/pics/pokemon/exploud.png | Bin 0 -> 1096 bytes .../object_events/pics/pokemon/fearow.png | Bin 0 -> 1021 bytes .../object_events/pics/pokemon/feebas.png | Bin 0 -> 517 bytes .../object_events/pics/pokemon/feraligatr.png | Bin 0 -> 980 bytes .../object_events/pics/pokemon/flaaffy.png | Bin 0 -> 741 bytes .../object_events/pics/pokemon/flareon.png | Bin 0 -> 744 bytes .../object_events/pics/pokemon/flygon.png | Bin 0 -> 933 bytes .../object_events/pics/pokemon/forretress.png | Bin 0 -> 523 bytes .../object_events/pics/pokemon/furret.png | Bin 0 -> 805 bytes .../object_events/pics/pokemon/gardevoir.png | Bin 0 -> 673 bytes .../object_events/pics/pokemon/gastly.png | Bin 0 -> 606 bytes .../object_events/pics/pokemon/gengar.png | Bin 0 -> 615 bytes .../object_events/pics/pokemon/geodude.png | Bin 0 -> 396 bytes .../object_events/pics/pokemon/girafarig.png | Bin 0 -> 695 bytes .../object_events/pics/pokemon/glalie.png | Bin 0 -> 530 bytes .../object_events/pics/pokemon/gligar.png | Bin 0 -> 992 bytes graphics/object_events/pics/pokemon/gloom.png | Bin 0 -> 476 bytes .../object_events/pics/pokemon/golbat.png | Bin 0 -> 698 bytes .../object_events/pics/pokemon/goldeen.png | Bin 0 -> 743 bytes .../object_events/pics/pokemon/golduck.png | Bin 0 -> 581 bytes graphics/object_events/pics/pokemon/golem.png | Bin 0 -> 689 bytes .../object_events/pics/pokemon/gorebyss.png | Bin 0 -> 806 bytes .../object_events/pics/pokemon/granbull.png | Bin 0 -> 654 bytes .../object_events/pics/pokemon/graveler.png | Bin 0 -> 624 bytes .../object_events/pics/pokemon/grimer.png | Bin 0 -> 541 bytes .../object_events/pics/pokemon/groudon.png | Bin 1052 -> 1698 bytes .../object_events/pics/pokemon/grovyle.png | Bin 0 -> 611 bytes .../object_events/pics/pokemon/growlithe.png | Bin 0 -> 597 bytes .../object_events/pics/pokemon/grumpig.png | Bin 0 -> 626 bytes .../object_events/pics/pokemon/gulpin.png | Bin 0 -> 515 bytes .../object_events/pics/pokemon/gyarados.png | Bin 0 -> 1310 bytes .../object_events/pics/pokemon/hariyama.png | Bin 0 -> 1074 bytes .../object_events/pics/pokemon/haunter.png | Bin 0 -> 540 bytes .../object_events/pics/pokemon/heracross.png | Bin 0 -> 753 bytes .../object_events/pics/pokemon/hitmonchan.png | Bin 0 -> 563 bytes .../object_events/pics/pokemon/hitmonlee.png | Bin 0 -> 540 bytes .../object_events/pics/pokemon/hitmontop.png | Bin 0 -> 538 bytes graphics/object_events/pics/pokemon/ho_oh.png | Bin 529 -> 1936 bytes .../object_events/pics/pokemon/hoothoot.png | Bin 0 -> 579 bytes .../object_events/pics/pokemon/hoppip.png | Bin 0 -> 495 bytes .../object_events/pics/pokemon/horsea.png | Bin 0 -> 488 bytes .../object_events/pics/pokemon/houndoom.png | Bin 0 -> 714 bytes .../object_events/pics/pokemon/houndour.png | Bin 0 -> 549 bytes .../object_events/pics/pokemon/huntail.png | Bin 0 -> 995 bytes graphics/object_events/pics/pokemon/hypno.png | Bin 0 -> 582 bytes .../object_events/pics/pokemon/igglybuff.png | Bin 0 -> 408 bytes .../object_events/pics/pokemon/illumise.png | Bin 0 -> 669 bytes .../object_events/pics/pokemon/ivysaur.png | Bin 0 -> 584 bytes .../object_events/pics/pokemon/jigglypuff.png | Bin 0 -> 448 bytes .../object_events/pics/pokemon/jirachi.png | Bin 0 -> 557 bytes .../object_events/pics/pokemon/jolteon.png | Bin 0 -> 671 bytes .../object_events/pics/pokemon/jumpluff.png | Bin 0 -> 568 bytes graphics/object_events/pics/pokemon/jynx.png | Bin 0 -> 805 bytes .../object_events/pics/pokemon/kabuto.png | Bin 0 -> 403 bytes .../object_events/pics/pokemon/kabutops.png | Bin 0 -> 684 bytes .../object_events/pics/pokemon/kadabra.png | Bin 0 -> 708 bytes .../object_events/pics/pokemon/kakuna.png | Bin 0 -> 451 bytes .../object_events/pics/pokemon/kangaskhan.png | Bin 0 -> 698 bytes .../object_events/pics/pokemon/kecleon.png | Bin 345 -> 664 bytes .../object_events/pics/pokemon/kingdra.png | Bin 0 -> 745 bytes .../object_events/pics/pokemon/kingler.png | Bin 0 -> 769 bytes .../object_events/pics/pokemon/kirlia.png | Bin 469 -> 467 bytes .../object_events/pics/pokemon/koffing.png | Bin 0 -> 534 bytes .../object_events/pics/pokemon/krabby.png | Bin 0 -> 541 bytes .../object_events/pics/pokemon/kyogre.png | Bin 1037 -> 1763 bytes .../object_events/pics/pokemon/lairon.png | Bin 0 -> 822 bytes .../object_events/pics/pokemon/lanturn.png | Bin 0 -> 875 bytes .../object_events/pics/pokemon/lapras.png | Bin 0 -> 783 bytes .../object_events/pics/pokemon/larvitar.png | Bin 0 -> 429 bytes .../object_events/pics/pokemon/latias.png | Bin 0 -> 962 bytes .../object_events/pics/pokemon/latios.png | Bin 0 -> 1055 bytes .../object_events/pics/pokemon/ledian.png | Bin 0 -> 899 bytes .../object_events/pics/pokemon/ledyba.png | Bin 0 -> 850 bytes .../object_events/pics/pokemon/lickitung.png | Bin 0 -> 594 bytes .../object_events/pics/pokemon/lileep.png | Bin 0 -> 582 bytes .../object_events/pics/pokemon/linoone.png | Bin 0 -> 599 bytes .../object_events/pics/pokemon/lombre.png | Bin 0 -> 554 bytes graphics/object_events/pics/pokemon/lotad.png | Bin 0 -> 469 bytes .../object_events/pics/pokemon/loudred.png | Bin 0 -> 773 bytes .../object_events/pics/pokemon/ludicolo.png | Bin 0 -> 713 bytes graphics/object_events/pics/pokemon/lugia.png | Bin 410 -> 1592 bytes .../object_events/pics/pokemon/lunatone.png | Bin 0 -> 411 bytes .../object_events/pics/pokemon/luvdisc.png | Bin 0 -> 369 bytes .../object_events/pics/pokemon/machamp.png | Bin 0 -> 914 bytes .../object_events/pics/pokemon/machoke.png | Bin 0 -> 629 bytes .../object_events/pics/pokemon/machop.png | Bin 0 -> 398 bytes graphics/object_events/pics/pokemon/magby.png | Bin 0 -> 436 bytes .../object_events/pics/pokemon/magcargo.png | Bin 0 -> 785 bytes .../object_events/pics/pokemon/magikarp.png | Bin 0 -> 685 bytes .../object_events/pics/pokemon/magmar.png | Bin 0 -> 724 bytes .../object_events/pics/pokemon/magnemite.png | Bin 0 -> 437 bytes .../object_events/pics/pokemon/magneton.png | Bin 0 -> 801 bytes .../object_events/pics/pokemon/makuhita.png | Bin 0 -> 554 bytes .../object_events/pics/pokemon/manectric.png | Bin 0 -> 756 bytes .../object_events/pics/pokemon/mankey.png | Bin 0 -> 566 bytes .../object_events/pics/pokemon/mantine.png | Bin 0 -> 887 bytes .../object_events/pics/pokemon/mareep.png | Bin 0 -> 685 bytes .../object_events/pics/pokemon/marill.png | Bin 0 -> 562 bytes .../object_events/pics/pokemon/marowak.png | Bin 0 -> 669 bytes .../object_events/pics/pokemon/marshtomp.png | Bin 6721 -> 493 bytes .../object_events/pics/pokemon/masquerain.png | Bin 0 -> 904 bytes .../object_events/pics/pokemon/mawile.png | Bin 0 -> 642 bytes .../object_events/pics/pokemon/medicham.png | Bin 0 -> 571 bytes .../object_events/pics/pokemon/meditite.png | Bin 0 -> 478 bytes .../object_events/pics/pokemon/meganium.png | Bin 0 -> 798 bytes .../object_events/pics/pokemon/meowth.png | Bin 0 -> 618 bytes .../object_events/pics/pokemon/metagross.png | Bin 0 -> 885 bytes .../object_events/pics/pokemon/metang.png | Bin 0 -> 870 bytes .../object_events/pics/pokemon/metapod.png | Bin 0 -> 463 bytes graphics/object_events/pics/pokemon/mew.png | Bin 801 -> 556 bytes .../object_events/pics/pokemon/mewtwo.png | Bin 0 -> 792 bytes .../object_events/pics/pokemon/mightyena.png | Bin 0 -> 741 bytes .../object_events/pics/pokemon/milotic.png | Bin 0 -> 1022 bytes .../object_events/pics/pokemon/miltank.png | Bin 0 -> 715 bytes graphics/object_events/pics/pokemon/minun.png | Bin 0 -> 454 bytes .../object_events/pics/pokemon/misdreavus.png | Bin 0 -> 736 bytes .../object_events/pics/pokemon/moltres.png | Bin 0 -> 1063 bytes .../object_events/pics/pokemon/mudkip.png | Bin 0 -> 395 bytes graphics/object_events/pics/pokemon/muk.png | Bin 0 -> 669 bytes .../object_events/pics/pokemon/murkrow.png | Bin 0 -> 420 bytes graphics/object_events/pics/pokemon/natu.png | Bin 0 -> 398 bytes .../object_events/pics/pokemon/nidoking.png | Bin 0 -> 719 bytes .../object_events/pics/pokemon/nidoqueen.png | Bin 0 -> 745 bytes .../object_events/pics/pokemon/nidorina.png | Bin 0 -> 613 bytes .../object_events/pics/pokemon/nidorino.png | Bin 0 -> 634 bytes .../object_events/pics/pokemon/nincada.png | Bin 0 -> 571 bytes .../object_events/pics/pokemon/ninetales.png | Bin 0 -> 703 bytes .../object_events/pics/pokemon/ninjask.png | Bin 0 -> 688 bytes .../object_events/pics/pokemon/noctowl.png | Bin 0 -> 1018 bytes .../object_events/pics/pokemon/nosepass.png | Bin 0 -> 635 bytes graphics/object_events/pics/pokemon/numel.png | Bin 0 -> 777 bytes .../object_events/pics/pokemon/nuzleaf.png | Bin 0 -> 572 bytes .../object_events/pics/pokemon/octillery.png | Bin 0 -> 617 bytes .../object_events/pics/pokemon/oddish.png | Bin 0 -> 353 bytes .../object_events/pics/pokemon/omanyte.png | Bin 0 -> 524 bytes .../object_events/pics/pokemon/omastar.png | Bin 0 -> 734 bytes graphics/object_events/pics/pokemon/onix.png | Bin 0 -> 892 bytes graphics/object_events/pics/pokemon/paras.png | Bin 0 -> 545 bytes .../object_events/pics/pokemon/parasect.png | Bin 0 -> 711 bytes .../object_events/pics/pokemon/pelipper.png | Bin 0 -> 897 bytes .../object_events/pics/pokemon/persian.png | Bin 0 -> 701 bytes .../object_events/pics/pokemon/phanpy.png | Bin 0 -> 420 bytes graphics/object_events/pics/pokemon/pichu.png | Bin 0 -> 398 bytes .../object_events/pics/pokemon/pidgeot.png | Bin 0 -> 1077 bytes .../object_events/pics/pokemon/pidgeotto.png | Bin 0 -> 818 bytes .../object_events/pics/pokemon/pidgey.png | Bin 0 -> 393 bytes .../object_events/pics/pokemon/pikachu.png | Bin 335 -> 498 bytes .../object_events/pics/pokemon/piloswine.png | Bin 0 -> 570 bytes .../object_events/pics/pokemon/pineco.png | Bin 0 -> 356 bytes .../object_events/pics/pokemon/pinsir.png | Bin 0 -> 709 bytes .../object_events/pics/pokemon/plusle.png | Bin 0 -> 457 bytes .../object_events/pics/pokemon/politoed.png | Bin 0 -> 726 bytes .../object_events/pics/pokemon/poliwag.png | Bin 0 -> 427 bytes .../object_events/pics/pokemon/poliwhirl.png | Bin 0 -> 526 bytes .../object_events/pics/pokemon/poliwrath.png | Bin 0 -> 681 bytes .../object_events/pics/pokemon/ponyta.png | Bin 0 -> 601 bytes .../object_events/pics/pokemon/poochyena.png | Bin 674 -> 514 bytes .../object_events/pics/pokemon/porygon.png | Bin 0 -> 513 bytes .../object_events/pics/pokemon/porygon2.png | Bin 0 -> 522 bytes .../object_events/pics/pokemon/primeape.png | Bin 0 -> 733 bytes .../object_events/pics/pokemon/psyduck.png | Bin 0 -> 482 bytes .../object_events/pics/pokemon/pupitar.png | Bin 0 -> 557 bytes .../object_events/pics/pokemon/quagsire.png | Bin 0 -> 580 bytes .../object_events/pics/pokemon/quilava.png | Bin 0 -> 1009 bytes .../object_events/pics/pokemon/qwilfish.png | Bin 0 -> 578 bytes .../object_events/pics/pokemon/raichu.png | Bin 0 -> 779 bytes .../object_events/pics/pokemon/raikou.png | Bin 0 -> 927 bytes graphics/object_events/pics/pokemon/ralts.png | Bin 0 -> 412 bytes .../object_events/pics/pokemon/rapidash.png | Bin 0 -> 844 bytes .../object_events/pics/pokemon/raticate.png | Bin 0 -> 551 bytes .../object_events/pics/pokemon/rattata.png | Bin 0 -> 522 bytes .../object_events/pics/pokemon/rayquaza.png | Bin 1391 -> 1943 bytes .../pics/pokemon/rayquaza_cutscene.png | Bin 0 -> 1391 bytes .../object_events/pics/pokemon/regice.png | Bin 0 -> 793 bytes .../object_events/pics/pokemon/regirock.png | Bin 0 -> 1014 bytes .../object_events/pics/pokemon/registeel.png | Bin 0 -> 794 bytes .../object_events/pics/pokemon/relicanth.png | Bin 0 -> 784 bytes .../object_events/pics/pokemon/remoraid.png | Bin 0 -> 523 bytes .../object_events/pics/pokemon/rhydon.png | Bin 0 -> 744 bytes .../object_events/pics/pokemon/rhyhorn.png | Bin 0 -> 584 bytes .../object_events/pics/pokemon/roselia.png | Bin 0 -> 437 bytes .../object_events/pics/pokemon/sableye.png | Bin 0 -> 510 bytes .../object_events/pics/pokemon/salamence.png | Bin 0 -> 933 bytes .../object_events/pics/pokemon/sandshrew.png | Bin 0 -> 467 bytes .../object_events/pics/pokemon/sandslash.png | Bin 0 -> 623 bytes .../object_events/pics/pokemon/sceptile.png | Bin 0 -> 872 bytes .../object_events/pics/pokemon/scizor.png | Bin 0 -> 780 bytes .../object_events/pics/pokemon/scyther.png | Bin 0 -> 768 bytes .../object_events/pics/pokemon/seadra.png | Bin 0 -> 709 bytes .../object_events/pics/pokemon/seaking.png | Bin 0 -> 971 bytes .../object_events/pics/pokemon/sealeo.png | Bin 0 -> 781 bytes .../object_events/pics/pokemon/seedot.png | Bin 0 -> 356 bytes graphics/object_events/pics/pokemon/seel.png | Bin 0 -> 624 bytes .../object_events/pics/pokemon/sentret.png | Bin 0 -> 554 bytes .../object_events/pics/pokemon/seviper.png | Bin 0 -> 927 bytes .../object_events/pics/pokemon/sharpedo.png | Bin 0 -> 694 bytes .../object_events/pics/pokemon/shedinja.png | Bin 0 -> 634 bytes .../object_events/pics/pokemon/shelgon.png | Bin 0 -> 537 bytes .../object_events/pics/pokemon/shellder.png | Bin 0 -> 472 bytes .../object_events/pics/pokemon/shiftry.png | Bin 0 -> 847 bytes .../object_events/pics/pokemon/shroomish.png | Bin 0 -> 358 bytes .../object_events/pics/pokemon/shuckle.png | Bin 0 -> 532 bytes .../object_events/pics/pokemon/shuppet.png | Bin 0 -> 418 bytes .../object_events/pics/pokemon/silcoon.png | Bin 0 -> 386 bytes .../object_events/pics/pokemon/skarmory.png | Bin 0 -> 884 bytes .../object_events/pics/pokemon/skiploom.png | Bin 0 -> 492 bytes .../object_events/pics/pokemon/skitty.png | Bin 332 -> 525 bytes .../object_events/pics/pokemon/slaking.png | Bin 0 -> 904 bytes .../object_events/pics/pokemon/slakoth.png | Bin 0 -> 618 bytes .../object_events/pics/pokemon/slowbro.png | Bin 0 -> 743 bytes .../object_events/pics/pokemon/slowking.png | Bin 0 -> 718 bytes .../object_events/pics/pokemon/slowpoke.png | Bin 0 -> 609 bytes .../object_events/pics/pokemon/slugma.png | Bin 0 -> 568 bytes .../object_events/pics/pokemon/smeargle.png | Bin 0 -> 627 bytes .../object_events/pics/pokemon/smoochum.png | Bin 0 -> 480 bytes .../object_events/pics/pokemon/sneasel.png | Bin 0 -> 538 bytes .../object_events/pics/pokemon/snorlax.png | Bin 0 -> 820 bytes .../object_events/pics/pokemon/snorunt.png | Bin 0 -> 395 bytes .../object_events/pics/pokemon/snubbull.png | Bin 0 -> 618 bytes .../object_events/pics/pokemon/solrock.png | Bin 0 -> 463 bytes .../object_events/pics/pokemon/spearow.png | Bin 0 -> 442 bytes .../object_events/pics/pokemon/spheal.png | Bin 0 -> 516 bytes .../object_events/pics/pokemon/spinarak.png | Bin 0 -> 562 bytes .../object_events/pics/pokemon/spinda.png | Bin 0 -> 589 bytes .../object_events/pics/pokemon/spoink.png | Bin 0 -> 442 bytes .../object_events/pics/pokemon/squirtle.png | Bin 0 -> 361 bytes .../object_events/pics/pokemon/stantler.png | Bin 0 -> 673 bytes .../object_events/pics/pokemon/starmie.png | Bin 0 -> 620 bytes .../object_events/pics/pokemon/staryu.png | Bin 0 -> 411 bytes .../object_events/pics/pokemon/steelix.png | Bin 0 -> 1531 bytes .../object_events/pics/pokemon/sudowoodo.png | Bin 335 -> 605 bytes .../pics/pokemon/sudowoodo_tree.png | Bin 0 -> 335 bytes .../object_events/pics/pokemon/suicune.png | Bin 0 -> 950 bytes .../object_events/pics/pokemon/sunflora.png | Bin 0 -> 563 bytes .../object_events/pics/pokemon/sunkern.png | Bin 0 -> 353 bytes .../object_events/pics/pokemon/surskit.png | Bin 0 -> 355 bytes .../object_events/pics/pokemon/swablu.png | Bin 0 -> 659 bytes .../object_events/pics/pokemon/swalot.png | Bin 0 -> 716 bytes .../object_events/pics/pokemon/swampert.png | Bin 0 -> 851 bytes .../object_events/pics/pokemon/swellow.png | Bin 0 -> 989 bytes .../object_events/pics/pokemon/swinub.png | Bin 0 -> 451 bytes .../object_events/pics/pokemon/taillow.png | Bin 0 -> 419 bytes .../object_events/pics/pokemon/tangela.png | Bin 0 -> 533 bytes .../object_events/pics/pokemon/tauros.png | Bin 0 -> 761 bytes .../object_events/pics/pokemon/teddiursa.png | Bin 0 -> 527 bytes .../object_events/pics/pokemon/tentacool.png | Bin 0 -> 461 bytes .../object_events/pics/pokemon/tentacruel.png | Bin 0 -> 669 bytes .../object_events/pics/pokemon/togepi.png | Bin 0 -> 475 bytes .../object_events/pics/pokemon/torchic.png | Bin 0 -> 428 bytes .../object_events/pics/pokemon/torkoal.png | Bin 0 -> 686 bytes .../object_events/pics/pokemon/totodile.png | Bin 0 -> 500 bytes .../object_events/pics/pokemon/trapinch.png | Bin 0 -> 419 bytes .../object_events/pics/pokemon/treecko.png | Bin 0 -> 415 bytes .../object_events/pics/pokemon/tropius.png | Bin 0 -> 952 bytes .../object_events/pics/pokemon/typhlosion.png | Bin 0 -> 1028 bytes .../object_events/pics/pokemon/tyranitar.png | Bin 0 -> 840 bytes .../object_events/pics/pokemon/tyrogue.png | Bin 0 -> 428 bytes .../object_events/pics/pokemon/umbreon.png | Bin 0 -> 711 bytes .../object_events/pics/pokemon/ursaring.png | Bin 0 -> 730 bytes .../object_events/pics/pokemon/vaporeon.png | Bin 0 -> 816 bytes .../object_events/pics/pokemon/venomoth.png | Bin 0 -> 1022 bytes .../object_events/pics/pokemon/venonat.png | Bin 0 -> 501 bytes .../object_events/pics/pokemon/venusaur.png | Bin 0 -> 778 bytes .../object_events/pics/pokemon/vibrava.png | Bin 0 -> 824 bytes .../object_events/pics/pokemon/victreebel.png | Bin 0 -> 895 bytes .../object_events/pics/pokemon/vigoroth.png | Bin 980 -> 747 bytes .../pics/pokemon/vigoroth_mover.png | Bin 0 -> 980 bytes .../object_events/pics/pokemon/vileplume.png | Bin 0 -> 536 bytes .../object_events/pics/pokemon/volbeat.png | Bin 0 -> 794 bytes .../object_events/pics/pokemon/voltorb.png | Bin 0 -> 274 bytes .../object_events/pics/pokemon/vulpix.png | Bin 0 -> 591 bytes .../object_events/pics/pokemon/wailmer.png | Bin 0 -> 670 bytes .../object_events/pics/pokemon/wailord.png | Bin 0 -> 1133 bytes .../object_events/pics/pokemon/walrein.png | Bin 0 -> 908 bytes .../object_events/pics/pokemon/wartortle.png | Bin 0 -> 609 bytes .../object_events/pics/pokemon/weedle.png | Bin 0 -> 534 bytes .../object_events/pics/pokemon/weepinbell.png | Bin 0 -> 625 bytes .../object_events/pics/pokemon/weezing.png | Bin 0 -> 840 bytes .../object_events/pics/pokemon/whiscash.png | Bin 0 -> 687 bytes .../object_events/pics/pokemon/whismur.png | Bin 0 -> 449 bytes .../object_events/pics/pokemon/wigglytuff.png | Bin 0 -> 545 bytes .../object_events/pics/pokemon/wingull.png | Bin 354 -> 550 bytes .../object_events/pics/pokemon/wobbuffet.png | Bin 0 -> 486 bytes .../object_events/pics/pokemon/wooper.png | Bin 0 -> 420 bytes .../object_events/pics/pokemon/wurmple.png | Bin 0 -> 587 bytes .../object_events/pics/pokemon/wynaut.png | Bin 0 -> 512 bytes graphics/object_events/pics/pokemon/xatu.png | Bin 0 -> 615 bytes graphics/object_events/pics/pokemon/yanma.png | Bin 0 -> 861 bytes .../object_events/pics/pokemon/zangoose.png | Bin 0 -> 847 bytes .../object_events/pics/pokemon/zapdos.png | Bin 0 -> 841 bytes .../object_events/pics/pokemon/zigzagoon.png | Bin 299 -> 714 bytes graphics/object_events/pics/pokemon/zubat.png | Bin 0 -> 574 bytes spritesheet_rules.mk | 1160 +++++- .../object_events/object_event_graphics.h | 401 +- .../object_event_graphics_info.h | 381 +- .../object_events/object_event_pic_tables.h | 3289 +++++++++++++++-- src/event_object_movement.c | 31 +- src/overworld.c | 7 +- 389 files changed, 5120 insertions(+), 283 deletions(-) create mode 100644 extract_sprites.py create mode 100644 graphics/object_events/pics/pokemon/abra.png create mode 100644 graphics/object_events/pics/pokemon/absol.png create mode 100644 graphics/object_events/pics/pokemon/aerodactyl.png create mode 100644 graphics/object_events/pics/pokemon/aggron.png create mode 100644 graphics/object_events/pics/pokemon/aipom.png create mode 100644 graphics/object_events/pics/pokemon/alakazam.png create mode 100644 graphics/object_events/pics/pokemon/ampharos.png create mode 100644 graphics/object_events/pics/pokemon/anorith.png create mode 100644 graphics/object_events/pics/pokemon/arbok.png create mode 100644 graphics/object_events/pics/pokemon/arcanine.png create mode 100644 graphics/object_events/pics/pokemon/ariados.png create mode 100644 graphics/object_events/pics/pokemon/armaldo.png create mode 100644 graphics/object_events/pics/pokemon/aron.png create mode 100644 graphics/object_events/pics/pokemon/articuno.png create mode 100644 graphics/object_events/pics/pokemon/bagon.png create mode 100644 graphics/object_events/pics/pokemon/baltoy.png create mode 100644 graphics/object_events/pics/pokemon/barboach.png create mode 100644 graphics/object_events/pics/pokemon/bayleef.png create mode 100644 graphics/object_events/pics/pokemon/beautifly.png create mode 100644 graphics/object_events/pics/pokemon/beedrill.png create mode 100644 graphics/object_events/pics/pokemon/beldum.png create mode 100644 graphics/object_events/pics/pokemon/bellossom.png create mode 100644 graphics/object_events/pics/pokemon/bellsprout.png create mode 100644 graphics/object_events/pics/pokemon/blastoise.png create mode 100644 graphics/object_events/pics/pokemon/blaziken.png create mode 100644 graphics/object_events/pics/pokemon/blissey.png create mode 100644 graphics/object_events/pics/pokemon/breloom.png create mode 100644 graphics/object_events/pics/pokemon/bulbasaur.png create mode 100644 graphics/object_events/pics/pokemon/butterfree.png create mode 100644 graphics/object_events/pics/pokemon/cacnea.png create mode 100644 graphics/object_events/pics/pokemon/cacturne.png create mode 100644 graphics/object_events/pics/pokemon/camerupt.png create mode 100644 graphics/object_events/pics/pokemon/carvanha.png create mode 100644 graphics/object_events/pics/pokemon/cascoon.png create mode 100644 graphics/object_events/pics/pokemon/caterpie.png create mode 100644 graphics/object_events/pics/pokemon/celebi.png create mode 100644 graphics/object_events/pics/pokemon/chansey.png create mode 100644 graphics/object_events/pics/pokemon/charmander.png create mode 100644 graphics/object_events/pics/pokemon/charmeleon.png create mode 100644 graphics/object_events/pics/pokemon/chikorita.png create mode 100644 graphics/object_events/pics/pokemon/chimecho.png create mode 100644 graphics/object_events/pics/pokemon/chinchou.png create mode 100644 graphics/object_events/pics/pokemon/clamperl.png create mode 100644 graphics/object_events/pics/pokemon/claydol.png create mode 100644 graphics/object_events/pics/pokemon/clefable.png create mode 100644 graphics/object_events/pics/pokemon/clefairy.png create mode 100644 graphics/object_events/pics/pokemon/cleffa.png create mode 100644 graphics/object_events/pics/pokemon/cloyster.png create mode 100644 graphics/object_events/pics/pokemon/combusken.png create mode 100644 graphics/object_events/pics/pokemon/corphish.png create mode 100644 graphics/object_events/pics/pokemon/corsola.png create mode 100644 graphics/object_events/pics/pokemon/cradily.png create mode 100644 graphics/object_events/pics/pokemon/crawdaunt.png create mode 100644 graphics/object_events/pics/pokemon/crobat.png create mode 100644 graphics/object_events/pics/pokemon/croconaw.png create mode 100644 graphics/object_events/pics/pokemon/cubone.png create mode 100644 graphics/object_events/pics/pokemon/cyndaquil.png create mode 100644 graphics/object_events/pics/pokemon/delcatty.png create mode 100644 graphics/object_events/pics/pokemon/delibird.png create mode 100644 graphics/object_events/pics/pokemon/dewgong.png create mode 100644 graphics/object_events/pics/pokemon/diglett.png create mode 100644 graphics/object_events/pics/pokemon/ditto.png create mode 100644 graphics/object_events/pics/pokemon/dodrio.png create mode 100644 graphics/object_events/pics/pokemon/doduo.png create mode 100644 graphics/object_events/pics/pokemon/donphan.png create mode 100644 graphics/object_events/pics/pokemon/dragonair.png create mode 100644 graphics/object_events/pics/pokemon/dragonite.png create mode 100644 graphics/object_events/pics/pokemon/dratini.png create mode 100644 graphics/object_events/pics/pokemon/drowzee.png create mode 100644 graphics/object_events/pics/pokemon/dugtrio.png create mode 100644 graphics/object_events/pics/pokemon/dunsparce.png create mode 100644 graphics/object_events/pics/pokemon/duskull.png create mode 100644 graphics/object_events/pics/pokemon/dustox.png create mode 100644 graphics/object_events/pics/pokemon/eevee.png create mode 100644 graphics/object_events/pics/pokemon/ekans.png create mode 100644 graphics/object_events/pics/pokemon/electabuzz.png create mode 100644 graphics/object_events/pics/pokemon/electrike.png create mode 100644 graphics/object_events/pics/pokemon/electrode.png create mode 100644 graphics/object_events/pics/pokemon/elekid.png create mode 100644 graphics/object_events/pics/pokemon/entei.png create mode 100644 graphics/object_events/pics/pokemon/espeon.png create mode 100644 graphics/object_events/pics/pokemon/exeggcute.png create mode 100644 graphics/object_events/pics/pokemon/exeggutor.png create mode 100644 graphics/object_events/pics/pokemon/exploud.png create mode 100644 graphics/object_events/pics/pokemon/fearow.png create mode 100644 graphics/object_events/pics/pokemon/feebas.png create mode 100644 graphics/object_events/pics/pokemon/feraligatr.png create mode 100644 graphics/object_events/pics/pokemon/flaaffy.png create mode 100644 graphics/object_events/pics/pokemon/flareon.png create mode 100644 graphics/object_events/pics/pokemon/flygon.png create mode 100644 graphics/object_events/pics/pokemon/forretress.png create mode 100644 graphics/object_events/pics/pokemon/furret.png create mode 100644 graphics/object_events/pics/pokemon/gardevoir.png create mode 100644 graphics/object_events/pics/pokemon/gastly.png create mode 100644 graphics/object_events/pics/pokemon/gengar.png create mode 100644 graphics/object_events/pics/pokemon/geodude.png create mode 100644 graphics/object_events/pics/pokemon/girafarig.png create mode 100644 graphics/object_events/pics/pokemon/glalie.png create mode 100644 graphics/object_events/pics/pokemon/gligar.png create mode 100644 graphics/object_events/pics/pokemon/gloom.png create mode 100644 graphics/object_events/pics/pokemon/golbat.png create mode 100644 graphics/object_events/pics/pokemon/goldeen.png create mode 100644 graphics/object_events/pics/pokemon/golduck.png create mode 100644 graphics/object_events/pics/pokemon/golem.png create mode 100644 graphics/object_events/pics/pokemon/gorebyss.png create mode 100644 graphics/object_events/pics/pokemon/granbull.png create mode 100644 graphics/object_events/pics/pokemon/graveler.png create mode 100644 graphics/object_events/pics/pokemon/grimer.png create mode 100644 graphics/object_events/pics/pokemon/grovyle.png create mode 100644 graphics/object_events/pics/pokemon/growlithe.png create mode 100644 graphics/object_events/pics/pokemon/grumpig.png create mode 100644 graphics/object_events/pics/pokemon/gulpin.png create mode 100644 graphics/object_events/pics/pokemon/gyarados.png create mode 100644 graphics/object_events/pics/pokemon/hariyama.png create mode 100644 graphics/object_events/pics/pokemon/haunter.png create mode 100644 graphics/object_events/pics/pokemon/heracross.png create mode 100644 graphics/object_events/pics/pokemon/hitmonchan.png create mode 100644 graphics/object_events/pics/pokemon/hitmonlee.png create mode 100644 graphics/object_events/pics/pokemon/hitmontop.png create mode 100644 graphics/object_events/pics/pokemon/hoothoot.png create mode 100644 graphics/object_events/pics/pokemon/hoppip.png create mode 100644 graphics/object_events/pics/pokemon/horsea.png create mode 100644 graphics/object_events/pics/pokemon/houndoom.png create mode 100644 graphics/object_events/pics/pokemon/houndour.png create mode 100644 graphics/object_events/pics/pokemon/huntail.png create mode 100644 graphics/object_events/pics/pokemon/hypno.png create mode 100644 graphics/object_events/pics/pokemon/igglybuff.png create mode 100644 graphics/object_events/pics/pokemon/illumise.png create mode 100644 graphics/object_events/pics/pokemon/ivysaur.png create mode 100644 graphics/object_events/pics/pokemon/jigglypuff.png create mode 100644 graphics/object_events/pics/pokemon/jirachi.png create mode 100644 graphics/object_events/pics/pokemon/jolteon.png create mode 100644 graphics/object_events/pics/pokemon/jumpluff.png create mode 100644 graphics/object_events/pics/pokemon/jynx.png create mode 100644 graphics/object_events/pics/pokemon/kabuto.png create mode 100644 graphics/object_events/pics/pokemon/kabutops.png create mode 100644 graphics/object_events/pics/pokemon/kadabra.png create mode 100644 graphics/object_events/pics/pokemon/kakuna.png create mode 100644 graphics/object_events/pics/pokemon/kangaskhan.png create mode 100644 graphics/object_events/pics/pokemon/kingdra.png create mode 100644 graphics/object_events/pics/pokemon/kingler.png create mode 100644 graphics/object_events/pics/pokemon/koffing.png create mode 100644 graphics/object_events/pics/pokemon/krabby.png create mode 100644 graphics/object_events/pics/pokemon/lairon.png create mode 100644 graphics/object_events/pics/pokemon/lanturn.png create mode 100644 graphics/object_events/pics/pokemon/lapras.png create mode 100644 graphics/object_events/pics/pokemon/larvitar.png create mode 100644 graphics/object_events/pics/pokemon/latias.png create mode 100644 graphics/object_events/pics/pokemon/latios.png create mode 100644 graphics/object_events/pics/pokemon/ledian.png create mode 100644 graphics/object_events/pics/pokemon/ledyba.png create mode 100644 graphics/object_events/pics/pokemon/lickitung.png create mode 100644 graphics/object_events/pics/pokemon/lileep.png create mode 100644 graphics/object_events/pics/pokemon/linoone.png create mode 100644 graphics/object_events/pics/pokemon/lombre.png create mode 100644 graphics/object_events/pics/pokemon/lotad.png create mode 100644 graphics/object_events/pics/pokemon/loudred.png create mode 100644 graphics/object_events/pics/pokemon/ludicolo.png create mode 100644 graphics/object_events/pics/pokemon/lunatone.png create mode 100644 graphics/object_events/pics/pokemon/luvdisc.png create mode 100644 graphics/object_events/pics/pokemon/machamp.png create mode 100644 graphics/object_events/pics/pokemon/machoke.png create mode 100644 graphics/object_events/pics/pokemon/machop.png create mode 100644 graphics/object_events/pics/pokemon/magby.png create mode 100644 graphics/object_events/pics/pokemon/magcargo.png create mode 100644 graphics/object_events/pics/pokemon/magikarp.png create mode 100644 graphics/object_events/pics/pokemon/magmar.png create mode 100644 graphics/object_events/pics/pokemon/magnemite.png create mode 100644 graphics/object_events/pics/pokemon/magneton.png create mode 100644 graphics/object_events/pics/pokemon/makuhita.png create mode 100644 graphics/object_events/pics/pokemon/manectric.png create mode 100644 graphics/object_events/pics/pokemon/mankey.png create mode 100644 graphics/object_events/pics/pokemon/mantine.png create mode 100644 graphics/object_events/pics/pokemon/mareep.png create mode 100644 graphics/object_events/pics/pokemon/marill.png create mode 100644 graphics/object_events/pics/pokemon/marowak.png create mode 100644 graphics/object_events/pics/pokemon/masquerain.png create mode 100644 graphics/object_events/pics/pokemon/mawile.png create mode 100644 graphics/object_events/pics/pokemon/medicham.png create mode 100644 graphics/object_events/pics/pokemon/meditite.png create mode 100644 graphics/object_events/pics/pokemon/meganium.png create mode 100644 graphics/object_events/pics/pokemon/meowth.png create mode 100644 graphics/object_events/pics/pokemon/metagross.png create mode 100644 graphics/object_events/pics/pokemon/metang.png create mode 100644 graphics/object_events/pics/pokemon/metapod.png create mode 100644 graphics/object_events/pics/pokemon/mewtwo.png create mode 100644 graphics/object_events/pics/pokemon/mightyena.png create mode 100644 graphics/object_events/pics/pokemon/milotic.png create mode 100644 graphics/object_events/pics/pokemon/miltank.png create mode 100644 graphics/object_events/pics/pokemon/minun.png create mode 100644 graphics/object_events/pics/pokemon/misdreavus.png create mode 100644 graphics/object_events/pics/pokemon/moltres.png create mode 100644 graphics/object_events/pics/pokemon/mudkip.png create mode 100644 graphics/object_events/pics/pokemon/muk.png create mode 100644 graphics/object_events/pics/pokemon/murkrow.png create mode 100644 graphics/object_events/pics/pokemon/natu.png create mode 100644 graphics/object_events/pics/pokemon/nidoking.png create mode 100644 graphics/object_events/pics/pokemon/nidoqueen.png create mode 100644 graphics/object_events/pics/pokemon/nidorina.png create mode 100644 graphics/object_events/pics/pokemon/nidorino.png create mode 100644 graphics/object_events/pics/pokemon/nincada.png create mode 100644 graphics/object_events/pics/pokemon/ninetales.png create mode 100644 graphics/object_events/pics/pokemon/ninjask.png create mode 100644 graphics/object_events/pics/pokemon/noctowl.png create mode 100644 graphics/object_events/pics/pokemon/nosepass.png create mode 100644 graphics/object_events/pics/pokemon/numel.png create mode 100644 graphics/object_events/pics/pokemon/nuzleaf.png create mode 100644 graphics/object_events/pics/pokemon/octillery.png create mode 100644 graphics/object_events/pics/pokemon/oddish.png create mode 100644 graphics/object_events/pics/pokemon/omanyte.png create mode 100644 graphics/object_events/pics/pokemon/omastar.png create mode 100644 graphics/object_events/pics/pokemon/onix.png create mode 100644 graphics/object_events/pics/pokemon/paras.png create mode 100644 graphics/object_events/pics/pokemon/parasect.png create mode 100644 graphics/object_events/pics/pokemon/pelipper.png create mode 100644 graphics/object_events/pics/pokemon/persian.png create mode 100644 graphics/object_events/pics/pokemon/phanpy.png create mode 100644 graphics/object_events/pics/pokemon/pichu.png create mode 100644 graphics/object_events/pics/pokemon/pidgeot.png create mode 100644 graphics/object_events/pics/pokemon/pidgeotto.png create mode 100644 graphics/object_events/pics/pokemon/pidgey.png create mode 100644 graphics/object_events/pics/pokemon/piloswine.png create mode 100644 graphics/object_events/pics/pokemon/pineco.png create mode 100644 graphics/object_events/pics/pokemon/pinsir.png create mode 100644 graphics/object_events/pics/pokemon/plusle.png create mode 100644 graphics/object_events/pics/pokemon/politoed.png create mode 100644 graphics/object_events/pics/pokemon/poliwag.png create mode 100644 graphics/object_events/pics/pokemon/poliwhirl.png create mode 100644 graphics/object_events/pics/pokemon/poliwrath.png create mode 100644 graphics/object_events/pics/pokemon/ponyta.png create mode 100644 graphics/object_events/pics/pokemon/porygon.png create mode 100644 graphics/object_events/pics/pokemon/porygon2.png create mode 100644 graphics/object_events/pics/pokemon/primeape.png create mode 100644 graphics/object_events/pics/pokemon/psyduck.png create mode 100644 graphics/object_events/pics/pokemon/pupitar.png create mode 100644 graphics/object_events/pics/pokemon/quagsire.png create mode 100644 graphics/object_events/pics/pokemon/quilava.png create mode 100644 graphics/object_events/pics/pokemon/qwilfish.png create mode 100644 graphics/object_events/pics/pokemon/raichu.png create mode 100644 graphics/object_events/pics/pokemon/raikou.png create mode 100644 graphics/object_events/pics/pokemon/ralts.png create mode 100644 graphics/object_events/pics/pokemon/rapidash.png create mode 100644 graphics/object_events/pics/pokemon/raticate.png create mode 100644 graphics/object_events/pics/pokemon/rattata.png create mode 100644 graphics/object_events/pics/pokemon/rayquaza_cutscene.png create mode 100644 graphics/object_events/pics/pokemon/regice.png create mode 100644 graphics/object_events/pics/pokemon/regirock.png create mode 100644 graphics/object_events/pics/pokemon/registeel.png create mode 100644 graphics/object_events/pics/pokemon/relicanth.png create mode 100644 graphics/object_events/pics/pokemon/remoraid.png create mode 100644 graphics/object_events/pics/pokemon/rhydon.png create mode 100644 graphics/object_events/pics/pokemon/rhyhorn.png create mode 100644 graphics/object_events/pics/pokemon/roselia.png create mode 100644 graphics/object_events/pics/pokemon/sableye.png create mode 100644 graphics/object_events/pics/pokemon/salamence.png create mode 100644 graphics/object_events/pics/pokemon/sandshrew.png create mode 100644 graphics/object_events/pics/pokemon/sandslash.png create mode 100644 graphics/object_events/pics/pokemon/sceptile.png create mode 100644 graphics/object_events/pics/pokemon/scizor.png create mode 100644 graphics/object_events/pics/pokemon/scyther.png create mode 100644 graphics/object_events/pics/pokemon/seadra.png create mode 100644 graphics/object_events/pics/pokemon/seaking.png create mode 100644 graphics/object_events/pics/pokemon/sealeo.png create mode 100644 graphics/object_events/pics/pokemon/seedot.png create mode 100644 graphics/object_events/pics/pokemon/seel.png create mode 100644 graphics/object_events/pics/pokemon/sentret.png create mode 100644 graphics/object_events/pics/pokemon/seviper.png create mode 100644 graphics/object_events/pics/pokemon/sharpedo.png create mode 100644 graphics/object_events/pics/pokemon/shedinja.png create mode 100644 graphics/object_events/pics/pokemon/shelgon.png create mode 100644 graphics/object_events/pics/pokemon/shellder.png create mode 100644 graphics/object_events/pics/pokemon/shiftry.png create mode 100644 graphics/object_events/pics/pokemon/shroomish.png create mode 100644 graphics/object_events/pics/pokemon/shuckle.png create mode 100644 graphics/object_events/pics/pokemon/shuppet.png create mode 100644 graphics/object_events/pics/pokemon/silcoon.png create mode 100644 graphics/object_events/pics/pokemon/skarmory.png create mode 100644 graphics/object_events/pics/pokemon/skiploom.png create mode 100644 graphics/object_events/pics/pokemon/slaking.png create mode 100644 graphics/object_events/pics/pokemon/slakoth.png create mode 100644 graphics/object_events/pics/pokemon/slowbro.png create mode 100644 graphics/object_events/pics/pokemon/slowking.png create mode 100644 graphics/object_events/pics/pokemon/slowpoke.png create mode 100644 graphics/object_events/pics/pokemon/slugma.png create mode 100644 graphics/object_events/pics/pokemon/smeargle.png create mode 100644 graphics/object_events/pics/pokemon/smoochum.png create mode 100644 graphics/object_events/pics/pokemon/sneasel.png create mode 100644 graphics/object_events/pics/pokemon/snorlax.png create mode 100644 graphics/object_events/pics/pokemon/snorunt.png create mode 100644 graphics/object_events/pics/pokemon/snubbull.png create mode 100644 graphics/object_events/pics/pokemon/solrock.png create mode 100644 graphics/object_events/pics/pokemon/spearow.png create mode 100644 graphics/object_events/pics/pokemon/spheal.png create mode 100644 graphics/object_events/pics/pokemon/spinarak.png create mode 100644 graphics/object_events/pics/pokemon/spinda.png create mode 100644 graphics/object_events/pics/pokemon/spoink.png create mode 100644 graphics/object_events/pics/pokemon/squirtle.png create mode 100644 graphics/object_events/pics/pokemon/stantler.png create mode 100644 graphics/object_events/pics/pokemon/starmie.png create mode 100644 graphics/object_events/pics/pokemon/staryu.png create mode 100644 graphics/object_events/pics/pokemon/steelix.png create mode 100644 graphics/object_events/pics/pokemon/sudowoodo_tree.png create mode 100644 graphics/object_events/pics/pokemon/suicune.png create mode 100644 graphics/object_events/pics/pokemon/sunflora.png create mode 100644 graphics/object_events/pics/pokemon/sunkern.png create mode 100644 graphics/object_events/pics/pokemon/surskit.png create mode 100644 graphics/object_events/pics/pokemon/swablu.png create mode 100644 graphics/object_events/pics/pokemon/swalot.png create mode 100644 graphics/object_events/pics/pokemon/swampert.png create mode 100644 graphics/object_events/pics/pokemon/swellow.png create mode 100644 graphics/object_events/pics/pokemon/swinub.png create mode 100644 graphics/object_events/pics/pokemon/taillow.png create mode 100644 graphics/object_events/pics/pokemon/tangela.png create mode 100644 graphics/object_events/pics/pokemon/tauros.png create mode 100644 graphics/object_events/pics/pokemon/teddiursa.png create mode 100644 graphics/object_events/pics/pokemon/tentacool.png create mode 100644 graphics/object_events/pics/pokemon/tentacruel.png create mode 100644 graphics/object_events/pics/pokemon/togepi.png create mode 100644 graphics/object_events/pics/pokemon/torchic.png create mode 100644 graphics/object_events/pics/pokemon/torkoal.png create mode 100644 graphics/object_events/pics/pokemon/totodile.png create mode 100644 graphics/object_events/pics/pokemon/trapinch.png create mode 100644 graphics/object_events/pics/pokemon/treecko.png create mode 100644 graphics/object_events/pics/pokemon/tropius.png create mode 100644 graphics/object_events/pics/pokemon/typhlosion.png create mode 100644 graphics/object_events/pics/pokemon/tyranitar.png create mode 100644 graphics/object_events/pics/pokemon/tyrogue.png create mode 100644 graphics/object_events/pics/pokemon/umbreon.png create mode 100644 graphics/object_events/pics/pokemon/ursaring.png create mode 100644 graphics/object_events/pics/pokemon/vaporeon.png create mode 100644 graphics/object_events/pics/pokemon/venomoth.png create mode 100644 graphics/object_events/pics/pokemon/venonat.png create mode 100644 graphics/object_events/pics/pokemon/venusaur.png create mode 100644 graphics/object_events/pics/pokemon/vibrava.png create mode 100644 graphics/object_events/pics/pokemon/victreebel.png create mode 100644 graphics/object_events/pics/pokemon/vigoroth_mover.png create mode 100644 graphics/object_events/pics/pokemon/vileplume.png create mode 100644 graphics/object_events/pics/pokemon/volbeat.png create mode 100644 graphics/object_events/pics/pokemon/voltorb.png create mode 100644 graphics/object_events/pics/pokemon/vulpix.png create mode 100644 graphics/object_events/pics/pokemon/wailmer.png create mode 100644 graphics/object_events/pics/pokemon/wailord.png create mode 100644 graphics/object_events/pics/pokemon/walrein.png create mode 100644 graphics/object_events/pics/pokemon/wartortle.png create mode 100644 graphics/object_events/pics/pokemon/weedle.png create mode 100644 graphics/object_events/pics/pokemon/weepinbell.png create mode 100644 graphics/object_events/pics/pokemon/weezing.png create mode 100644 graphics/object_events/pics/pokemon/whiscash.png create mode 100644 graphics/object_events/pics/pokemon/whismur.png create mode 100644 graphics/object_events/pics/pokemon/wigglytuff.png create mode 100644 graphics/object_events/pics/pokemon/wobbuffet.png create mode 100644 graphics/object_events/pics/pokemon/wooper.png create mode 100644 graphics/object_events/pics/pokemon/wurmple.png create mode 100644 graphics/object_events/pics/pokemon/wynaut.png create mode 100644 graphics/object_events/pics/pokemon/xatu.png create mode 100644 graphics/object_events/pics/pokemon/yanma.png create mode 100644 graphics/object_events/pics/pokemon/zangoose.png create mode 100644 graphics/object_events/pics/pokemon/zapdos.png create mode 100644 graphics/object_events/pics/pokemon/zubat.png diff --git a/.gitignore b/.gitignore index de5b0c743..baa27796b 100644 --- a/.gitignore +++ b/.gitignore @@ -34,4 +34,5 @@ porymap.project.cfg *.a .fuse_hidden* .ccls-cache/* +overworld/ *.sna diff --git a/extract_sprites.py b/extract_sprites.py new file mode 100644 index 000000000..74ecdb188 --- /dev/null +++ b/extract_sprites.py @@ -0,0 +1,133 @@ +#!/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(index, path): + joinp = os.path.join + name = f'{index:03d}.png' + 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, f'{index_to_name[index]}.png') + 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): + # 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) 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: + f0 = open('graphics_info.h', 'w', buffering=1) + f1 = open('pic_tables.h', 'w', buffering=1) + f2 = open('event_graphics.h', 'w', buffering=1) + f3 = open('spritesheet_extra.mk', 'w', buffering=1) + for index in range(1, 386+1): + stack_sprite(index, 'overworld') + try: + species = index_to_name[index] + path = os.path.join('overworld', f'{species}.png') + output_path = os.path.join('graphics', 'object_events', 'pics', 'pokemon', f'{species}.png') + paletteify(path, output_path) + except Exception as e: + print(e.__class__.__name__, e, file=sys.stderr) + continue + d = 32 if species not in {'steelix', 'wailord', 'kyogre', 'groudon', 'rayquaza', 'lugia', 'ho_oh'} else 64 + line = f'[SPECIES_{species.upper()}] = {{0xFFFF, OBJ_EVENT_PAL_TAG_DYNAMIC, OBJ_EVENT_PAL_TAG_NONE, {d*16}, {d}, {d}, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_{d}x{d}, gObjectEventSpriteOamTables_{d}x{d}, gObjectEventImageAnimTable_Following, gObjectEventPicTable_{species.capitalize()}, gDummySpriteAffineAnimTable}},' + f0.write(line + '\n') + lines = [f'const struct SpriteFrameImage gObjectEventPicTable_{species.capitalize()}[] = {{'] + lines += [f' overworld_frame(gObjectEventPic_{species.capitalize()}, 4, 4, {frame}),' for frame in range(6)] + lines.append('};') + f1.write('\n'.join(lines) + '\n') + line = f'const u32 gObjectEventPic_{species.capitalize()}[] = INCBIN_U32("graphics/object_events/pics/pokemon/{species}.4bpp");' + f2.write(line + '\n') + lines = [f'$(OBJEVENTGFXDIR)/pokemon/{species}.4bpp: %.4bpp: %.png\n', + f'\t$(GFX) $< $@ -mwidth {int(d/8)} -mheight {int(d/8)}\n\n'] + f3.write(''.join(lines)) + f0.close() + f1.close() + f2.close() + f3.close() diff --git a/graphics/object_events/pics/pokemon/abra.png b/graphics/object_events/pics/pokemon/abra.png new file mode 100644 index 0000000000000000000000000000000000000000..69613dd5de85073c676e819a9d699d10e1fef3e5 GIT binary patch literal 485 zcmV!0RR60|NsAc|L!T(v;d1@01yxm?q=0p0004S zNkl5dr5C`xZz4O!t9BeGP>^7W&IUm(I?+05HXE#Nk`~s@{QFvq z&E{UUgjE9+;|JMhGcP11iT&~ptXDI0Vc^0K^>W=9?m2d$d#xp~EHs%QX?06R7RE7w zC3VsI30q(yG>IDrZcl6^y1>>Dv*N4f(*!@Bn~fcuZa?2(-IaCk)XMh6W8b+BN)a0J z?BQ$fOxexvFFe>`pmxU-u}^jFRN4h*q?;Xt@43aiNT3Ro_k zLvoo#=IDQD=rMID4L#@uVqe9c7XaLEj^4kqdybNkn)l#t)R2qt`i}i~XczpFsfky- b=Rb1?07i(Ez&;T`00000NkvXXu0mjf#wO(Z literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/absol.png b/graphics/object_events/pics/pokemon/absol.png new file mode 100644 index 0000000000000000000000000000000000000000..7e13de7dea1da24099bd2b8f1f6a17d5da5a69d1 GIT binary patch literal 733 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 P00000NkvXXu0mjf3-1pQ literal 1782 zcmVEX>4Tx04R}tkv&MmKpe$iTWdut4t5Z6h)|tc5EXIMDionYs1;guFuC+YXws0R zxHt-~1qVMCs}3&Cx;nTDg5U>;lcSTOi}v_ypn^rW+RVI`Pz| zrE}gVjXeely0E7l8 zfT(bQkU*%|V8H08u)xsZ==k{f`lCc000009a7bBm000XU000XU0RWnu7ytkO2XskI zMF->t3km}g%tI!~000EhNkl?jj zVTDiQ_`Pqw?|YN?Y(oC8m-UMAS+HvVNzR??S*SG|GXqL9`84;e+gWb?UA$GO4`u;8 z87$`GE$q>uzC+6L(rg8Kyj2*~Yx#~?OZ9vCcssOAYZ@cn@`R!c1$w;Is=Zdrb)@k4 z-tti+7jLgj)^vY0%ae*S6zCyS!bi3)Yw9s~r^`GU|{L`cJ% zx9xMVCx)Z6W@A*!spf~DDy?VSx zD4j2k@mgys`pYHo=GgZyDg7og$e)_Za$FY~z*s8U0$^>WVB|3Huha1YGa3OK+NuF~-WWc9@lf2_Wc zczQmP?EZ9If2%9WX?VP+mo~kFSR3s#r!6-q_SghB1kXf8h6}i1pkTxg1dP-1a+8lQ zZ$4O50+acKbbH?V@rOsQ(31})y60!#|W^~FAbf29EL!SjQIU2sIBOXY9#o%x{~@)LDMQh1_BEm~zB@#@>``XC!5x54z6I`pP^{-4@_TF({Qf$PCkg%B+h{fia$awN zKlRXZ*Ox_2E9$S)uMl9Pkrj^{!tbAf+EB|ECH(Q^{5@4d4G-@peVBA8mBYnwd4{kY ze9sgfxE?BUJyl~=0N{>=0zKXkgv7)hUrK~vreK(t&r zQtdgYsONM@qyV6^ah4U24ya2ykj%$6@IGw~=^J4iNaCSJ0Y*0>Bmm5qv;q(@YV)Kqa zz1S%S3KH=KI>0^QexL(pD&J=vv&0AMe95S)VVlGgBBM5mw^hXNL~lD%QS6Oi1mj0L zL@7wbqXWTF3x{buU(Gu;H#6{1By&|$kgb+8He;U*LQ(8}smKjzX2uuM0mW0zws`*5 zIQeFgg@?J}yGn43E9Py!3!``=%Yj6wnY~WM`P25De6wac@UMU-ck>bbPaU`w&?|KP Y1uqV!0@OS@UjP6A07*qoM6N<$f-loog8%>k diff --git a/graphics/object_events/pics/pokemon/ampharos.png b/graphics/object_events/pics/pokemon/ampharos.png new file mode 100644 index 0000000000000000000000000000000000000000..efc07213b3b6733e8605f5b60e10f87790f85f1d GIT binary patch literal 696 zcmV;p0!RIcP)ZA~&Q&Jl9SjzjbtPCet8*C$9PtYz&A}BW zgnO4r`ytK9k*^3T0ymBMjaL5|jb>!V-tFD~3lq+;t{Z>;$iddnbWhIs+Zz^LtpQZu znF2erx?Z+80m8whXaLGWS3N*|Se!TfMgrbWng+<&s>8>ZO1A}mD*?9txzWxgy_}gC zn(JkAG9~r_0cZk*uV0|9PDw9kuL$QSFh%wO0cZk*&o9tzkYLV!$A{KFm^%#K${cP) zqUD_Zh8mzZcQ|BRWDXBdp_1nuTw%k$%wtZh!~*=CSFFgvLRZ{lF6F++W5LjJ&ZDov z6`1)Iv8Izmc>o|KkDL^^(tAAqf!CiB3q>a<<4(IV<3(X+q_EOz%dQuOS^P*ETq|_u z*Nnq(k3$g^CPoTcX~oV@jPTM3J};}%Sh4ljXTm{Bj&~jvW{$1I8!0z?VJI)lzdrK~ zKoe6I-v+|LWyhjNg_+~92{`V+qyQtkCCA6_oc4v|d7lW7;cIRPbC=db0GkC^;tP|_ zg}a%P1BAZiQDNdCmQnY|U9HmaO&rs48YG^q-ct6SO3HRff)l4ku*R7&FbeR2_sl#~(qvnb*#WZE|W?ITTcl@p0 eM7(kQEBg(tmqYhQn53Nm0000B*66bEoYuY(|ai#o8d4gBVzDVX3J;x!X`TnBpUxV9^@whO+?%#nEg^OAMo%y?)6nWyxg63Fua zw*#&2V`|X(=dO} z!+r4G-rHE8nKq>5k#45palL=>aoBWLT?)x2UN(@d%aAVe;E>vD46rg@K{>I#4|>uM za3-W{HR85_Ua{|E-M`w_M-lGL(OAdEqH?C6MYXa4rI&R8VFSd8^QpH@F!P*GpGL-2 zzhMu)WXI7=2*>YY6xYp%J^i?UbOYKp&9Bq!QLnf+itPppzl)SRKbS~1kT-1h+-YVy zF{^t~VI>;f4`rkKUHIlWzbq%P_!zMDO!F_Q?f-fF1wzsDgbJAPGXMYp07*qoM6N<$ Eg2aSd)&Kwi literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/arbok.png b/graphics/object_events/pics/pokemon/arbok.png new file mode 100644 index 0000000000000000000000000000000000000000..dfb456c0f969663d1acb2407593419c6c4288518 GIT binary patch literal 708 zcmV;#0z3VQP)+;4P3oOq_a}8*L!Qh%$JQ!g0 z$=J%C;;$1l(_i`kwz>tLG_|bZn3(1np|nRp zJzz!##$CgofVJUIt1}Yk`QZS{2_w*Lrpwp*1l;v;=mNVT;%+ctscsBF%}z6eTDL$6 zo6HwQ8%4xji+NO}JTti6mA>6GaMwr183;3d#;k>ch~y7Ao>H=U<>lQH^~Z(ILsnLd?Kc6M(*IN(C@u2TA4)O+f9+ zQ1}vk{{Im+VtF~RR<8iOL~+gl>@e~TfezmDLsLpI0S=#P|5mR+pV&2`maBUu5XcLf qg)we;($vr*`HoPJPSz>^?D`FhVslQq(-Wfr000001yxmv}Jv^0009_ zNkld_w$r6o^Z`3V9BH?(SB*2sCw{R^WTOS!{xa(lECk!30rX2Q`dLtR7@WXh$+)Rl zHdRoj3)UgcdAdt*=DN5oTSF8qr{FZUj-uMIGe~QWRq2m?$MUg;W@IK^XPE%By z;5dQIuq)i?r{Mh6*YT23FjrXRD45m@HilZz1jie!n6OOYrjpB?z>m|GV-IGj4|tpn z=in5pAO%dKZiG@cR+2Hp^QicqKX$y94L9Mo{2S*u2V)8jtb*j3F}zpP~2q2j%oKXVhuu|*7;K2s=DYmgbXNlNlego26ev;hOR zB-ygVe$%S?YCvw-$s=K+3X>bvhVA=NRWN>(PB6(213wCI(Wa^ag>^bwMT$R`9?4-V zUWID?9(S5Iju{)2Or0Pa9@H@SXwz6nRtcWjj#FAk9?3Z#)X;AHb-ZcRaE?9W%}fJ9 z#+2!F?{|7EW44FJ+dj$$_k-yh8VF90!H0Ev3Szjzn=s7HuuKZf}gw j9CYhHo~u8f|84sNLT4?B0a84^00000NkvXXu0mjf^#0LL literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/ariados.png b/graphics/object_events/pics/pokemon/ariados.png new file mode 100644 index 0000000000000000000000000000000000000000..7c380816f5ff9dafe190881df0d15a791e46ac5c GIT binary patch literal 952 zcmV;p14sOcP)@>Am-tC0Wy+?b-e#YttsauX*bH zL_4QVoQ|uWIzP>Hmo{;FR`t~RX$tj|T7eBGXH`#~pQez_tBST*_i4+vH=a5RMS4x4 z{$Nj{pju#yk^gCcu{{YISSVU9stUJREvkKj3MV~`vH6lVFerk8*0#b5tAuCvqJ7c8 zdJmJ(JSZn?42qy&e_LUNrM)BAI6rOR*4vDb#4ac6{1=6C2?>qJ9XIeGhJ-w{v<(^x)?vklld@QVZ0)a zN~p&<4}BF+Xbj93(HDtrf1x;A6!`~zYKO`rr1-1Wpes6%M?42+=X@= zguwVVo5_qf^R?tS_*V7{2~W5|4&|=bI65d2M&5zk;1MYb?u(2!>D+{4>6pQdIGFk@ z4kR1bi7coucQFnP4!iQYJATNMjPU_}1uK}#U`3RU3eK2_58Qx@E#W~d_NX1iIbVD7 zCM4~c|3yVyZ_0S_r=9_q>hD@Q0Aq%?sAA81;zDnJNOHjkrK z*e^MXNfNCDBbs`YUH-W9DcX;_P%!Fgin&WUB+OS=s;8Fr|49B>VB-^y7%C!AfC1!R0#VC{2x*9M);jNSXRECB3g zoMA>C(>qLCEExLv+X2i1JH)nnu|>x%=t-34 z@}rb26$z)^ci;CdO?3=o&PZka^^=R(Ve$9@!)bv(imnPk$EbtN&gSM9jJ(3(?DZ@y z?^ukAi)i6)du?yS>ZhkXVj8`OzgG(6%uB~~T4Yi(C0C4ZqRWMR%YkS$y2_ekX@BH@ aXTJe-t#q#>y|9G<0000O1(J%-rnA{w7qI-djJ3cun1xM0009Q zNkl5gQ7{_(VA@rc{uxoD>hMFz-D-6s7F(vrJltOcAzz8ZbPhX)Fd?;a` zBIFR57Z~KQ%W7r>HEqx&OMXdOZLl52pwFSrPxABsOM3Kz&}+QLe-mu>cRc(RV~H3< zGxhJ!SO+~Y*khbCZwr39ak2~{jCU^9O=90*pE22d+yY+)F3#745I^5ISVhJA(>Y}P zVf45?+r8s1o~%MbAdel4&^!}8x99v+&a*}GRJ6QPoOWCRB_55OJj~+Ho5c-sF{0#q zmWAHT!AHD`rHtgx%en6zifesg^S;OO9)|Kj~zT%EizB6o6n!IN)Y)r z^nM(>7^s9;&@%_)93oCvCpQjOBaTN)62QX6w?SI%_=$_rZmCN$zi~0TCDqa|JI6!L zI0fMJ&K8APZu@abAc`KgL6}N?!C=|3xhw?Qtxsum z?x$;JGVHDEK~7BB(0%xlmO@x}jku2&%$B+H;e5Af*>tL$xa+b@x<^H8WsLGqmr4nlpo{>DEsw(hUf8 zEd|0#uwiAWcPHuu7-g&#RECOYvgrC%O3{<6HM$1-mF#_S*ohfOeL>B=)V*v}Ph9T5 ip}&no%V$IQXYmtuNr6^C{8T3Z0000&CUP+|ExJm-fC+9gM(_l{{R30T)@xq0003W zNkl1pw6b9f&L9^}F%*oJ-ocF^yv0{DGy-p` z=~7wglZQ?P|J$dBet|#&*t2KPo;`bh!sOq)+25XI+L$yj?~^{GxztHx(%j)NB@7ac ztrKn$G3DEadA<~uwAtx8qe!?|7sdu|(BM05R*mCTB#hAk7$0yzGnBO1iyqH{c7r$+ zwIdB&7ADuUnXuLh+6oUg(<5o%h3eaqHp{TM1N7ngqhHEhhi yXSpm_ZbE;rh2Rs!aUs~UR+U0000w6 literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/articuno.png b/graphics/object_events/pics/pokemon/articuno.png new file mode 100644 index 0000000000000000000000000000000000000000..3899abd57bbb79d8ab2697f7f3c994ad94397267 GIT binary patch literal 1196 zcmV;d1XKHoP)5dZ)GT(CbN000Cx zNkl%W#zcoLeG#P#UJh6d6D9P5HQS7B)^X{!x@sX|Fh}O&Iq-qww z|KRxdvi2}cVjqH!n|@)lRwx~BgX;*aA7DTBM!~}75J`3VngD3T&A8r|em_k)t_q#> z*eY1q9uMZ*WEfH&2&Rwu8yq$k&@OfCj#feU>v}czSoTt*aS`yePNt+{3u`j5u5kEe zYsz73Uo$#)Xa-~el7dF(Lp7G#h>T{z7X?2gGO3_~jH458ckg)Sr?+eGdl#k?R?@Z3?0l%;3?lQGgQ{?XBirsPwf`DTxfcp^8D#B6VGFK<{gq(|rS?7;z zYXro6R77GTdTyqU* zp?q50tF-gGTXF_nXM0i^1THKtfyM z(SU{vqK}96%XeHLR(k9Qj~|SEl)-jNBBlI&kTQB*8yw_lMp5u03{!5af@ACRn!)ZH zM4YI^NRJrDg-L0Ix_6m+;fNT13eVc49bGvYr~?#Dms zu!n0`j`xA#dK6P2pbLQTHRIkuQ&&~IpR_6Dgo`5DsNU;m9DBcGD!kX_avv|aPDdA; zqG_dC(_IDH-ZE+1ZUolTbachXd#U&7= z`PFRLoIl!s?;@tmpQ2~N{Y?rgk6YtDXbBf?OdAW>)b_q@1U?0OQ2-}A|L<3kz;De zdxwC_WQi_&!c{XrPBN_9%-pJ)fyD%B0Arsr$JXZRTOSG(sO^)!QUi`nw;I%Ll=+&_ z9Lbg^JQ723bOs;G5pZ!E7@R-i5lwc>fMvHFkuxl?Tn#`Udt%T~=C{s_=U*GnlLV|x zfz_(9&t}3ZIg{h>w4gO4%zk!Qrv(>sZpw>-?eA^sk+v3gLZ%zUv`mw{&d-?M1N?rU6A|WwxR&V^OWO9V3@1FF6N+8 zc2lSCPb$@)PMIQq30zcNih~f0gb+F@$jVWq$jYuF>AdXNCO8p@?eb=dW`E|-6aR1g Y0f7E081?jf0RR9107*qoM6N<$f-lrcdH?_b literal 325 zcmV-L0lNN)P)2Xkl{Dhv6g#o0( zzkuL31S}A8JVSG5#6q&qteTj_dLP;iMEiO1=vQ9=sW60N2v>9jALQ~=F z?zI6U`T{1D_>I0p^FpqTY*en{^d{0v5KiQxxL}>xJ6GNoqQNyJF6n;JH+W#$1;V!P z&!@6~aX)@+?PZLjzaV2AhjJTZxnFE=(X&P8!$?9^X$hBB-UJ~5Bk0^3>K`=$=jZba X4+5IQX@&Zy00000NkvXXu0mjfFTRbR diff --git a/graphics/object_events/pics/pokemon/azurill.png b/graphics/object_events/pics/pokemon/azurill.png index 99cd25fe5c772963d5a6a530a5f5e492c0c3e748..b0dc77c7344abe39f1aeb50c05e758734413b472 100644 GIT binary patch literal 520 zcmV+j0{8uiP)=X>V|cE~SOMiUZzkaHUw* zADc9EYr(%vpHKSEIb;E>S+i!%ntz;O$dO6j{J_5!@`@TJB4S5v30L`coKQv~DAY!< zfGuw9uer*%EdZ-+gnHq5sPN&YatlYD|P9 z$BtYf>LQfcjG-|3ygW-e?bil(R0iS5yU>s^vN2)5kU6tTQ<(@oGt%D3Umj5(Oc0J- zizxiGLK%F(PD7VAKs?mY1fgeDpw#s5V!?AE*q5!d(>tQc_K#`CSABPTz{t;aJ z6LloVNTRlMdS4>MP)bCT?0O7hzDk(@T@a-b%WOG|Zx@jX3U461LRp%nBs)v16scH< zR}me=DrW${w7tlID^y6S+9T&-u_&Htt7DQjQnt71Y>(Fli0000Pu zN@9C+lzV&LtgQdVgJS=bV*iw4gOrr4q`ltN?*IS)0000000960{}>n;fF#B70004f zNklJH(8(1(5C@-eVfJ&r7fWuR^1V;6Jb7eKSVxsZ8+WZAaEr%H z2wlj7LQR9QJO=z>>s+Liy8<&^j6c#~NglPX$lWMN3(Wd~q}AY0)|EpbW5H3Ec{0t7 z1-4yhNj$f46Pinz4mf7I8YR==hM->ShB@x*U)eEXz5tqjZRgqEXwdd5n`aqry(E{3 zW>BE6PGi0|w&cc3v7B|7)bZtWGb&Iw33H7zaN|mN-mJr4r{NbXchhGzgUf)0H}d6|vU%wRDCB opTQXvHYDxb8^106Fy~+98_L(<9`f%Z8UO$Q07*qoM6N<$f}->5E&u=k literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/baltoy.png b/graphics/object_events/pics/pokemon/baltoy.png new file mode 100644 index 0000000000000000000000000000000000000000..e84afb661c4f4c022d898a42e4bd03d0571bb3f7 GIT binary patch literal 388 zcmeAS@N?(olHy`uVBq!ia0vp^2Y^_Cg&9b0+m^KrNErn9gt-3y|34`xsJS@_$e6Rl z@#xW{XV2E$b4>a+1*8WZ{AWnb`u&%Ifsxo&(lJQ>Ws#30P$fw--b$!guyaL)`Ya%xO+c4?C zwb+Q}RfnbYEZDYsebif$sn9iX`|g!B*H}%b?Ek>G@n(Jgg|`jI&pj63mH6J!iur=9 z!4}&e|l?9 zmf6-Dk()JVtaOY{;1xSj6*F6Zx=qXxhT~#WCh|U!{&cjc!RVT$|I>>fnO`57{r`Ry YJ40>FuGM_+xFVdQ&MBb@09|db5dZ)H literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/barboach.png b/graphics/object_events/pics/pokemon/barboach.png new file mode 100644 index 0000000000000000000000000000000000000000..893b3ae3649353c11dcc4e55a439c779f7f06bae GIT binary patch literal 513 zcmV+c0{;DpP)S5C`yC1Q(LaE))Vu`VfWU!BayQpTkGkf)GgSyVz4;y%-RBXoY(6 zpqHKmtMB3-1ZSr1dMF4&{NudE2ovdzyr>xRShR-LvA@RknCQm z(Lewv%lFKMoqed}{3ht@$4hXV6*U^@PXxmUrNS0FIiJ4gHe0$LCa9U$`p9a*k(`UL#Qc5P9=;r)4G;|0;- z0bR%ctVDqp{Lr7RSV4AdVr@hCT2M#(@}N@l!hg*th?#~Lf)Xss00000NkvXXu0mjf DqNefo literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/bayleef.png b/graphics/object_events/pics/pokemon/bayleef.png new file mode 100644 index 0000000000000000000000000000000000000000..95ef810c94928a9b624d8b58e200dd3a2528aacd GIT binary patch literal 692 zcmV;l0!#ggP)(9NWSHc?SK52pD5x zYeM`y8$`DL9AjIGX(Ma7VCu!fAg{R^w1E#iBOjoP1fdM@(rW`X$QryDsARanG>S8jKKji$g=6lb#Z2FEk=7CJCnfAJddj|Hzba9CMP$x0pP#jpEpKDl47f*cv zXhaTeb6k-)p+#5~Td2DOzQX1fV38yahYi4*7!*7SAk>gv<6I)^SOY98CGpgPfKbW& zZ5sF>a!$kiOIGR#T}wAr@?Q*aLUOJp=Yfk=eY=+VG%2X0sgn zO5%KR^W~ud3f7}{Si}1AlKzeRQ!{L-0cW#6IKS(X#JQT#9rB<5+Ct9gt#vdZXVZHC z*C&Z{onHpd=fc_STjv8!$XVedz&#C6aNaZG6D+p^o4pUMqXwLnxAn?8C31c{c>8#7 zw*_A(jCOahG~vYK%qQ!-B^S*XoD+Lz9Wm&=^?o+c`4xLd6W)bZRWloBt*1A6V)n8@ zyB$a3nNM*%k*hK`!wtPiH_b3o{fG^}Xalm}Rq}&EooFLf>=U9!5#I8<8H;XinDV>% af7TCN4oHkt45iBe0000nmVZ9}p0007} zNkl7y>XS!eu5y6k#H(@yj<3B>xZVMAu}7b>Zm=y!CL6r2 z6O6!=6fpvEAu%B^DdjxRQntRJ=2TbnJk|K-Ju=!n&lkk3_oN@94l_LxF6(_891<5R zBnL_$3LXNmZ*)a0Rnx`G zmr0j4A&mM=n{~TuP684ShlDP`QQ|fR0E5bLYAX2_`@DYxgepD7=ykrG{)q2AaL$D6?L&Ci#Q&ONxK&G zX83PGC*wHiJsd}Rr^Fa!&k3y|8=uA}6NfH>v3%*{LQ$PBm-CcoCpZpMy6@R} z!$f*Sj`jMFVD~NM!N-<})?eJ+7Er}R9te)T{2q?L0jY|Za~LO1)9 Z{RXc{T_fsVq3Qqt002ovPDHLkV1kI3bKC#` literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/beedrill.png b/graphics/object_events/pics/pokemon/beedrill.png new file mode 100644 index 0000000000000000000000000000000000000000..6c1c26361dd63b357ba360dd0d5401f04ed9b269 GIT binary patch literal 785 zcmV+s1Md8ZP)eg7F`X@83b(% zS;z?T2TZZf&?i}v?V(Abfp#-WaPm3Q_j{5Y0lc-h_K%tdrY`ZdjWyVhgkG^W)lfmF3}Vz}Qjrur%b`bfJWl*mrl$9f$|(;4 zQre2B6H>kwh9zHz-|v!SNk@T(M+xF#MTM#w01&D_}Vb%)c?Lsl4Mp7 zfsx@+V3a1^6VE0*1X2S0Zoj|Jh!f@+F$}p21inGxEzd$=V>krjgl-TCQDYtgX%5T` zfY=Fn(etBc!uLsX;v@v-$gL0TSM0V1t|lA;QMfWwUOFL&*zzavdycrCDLiJ%?@`a32H|X##>0c?I0T~bOEUW! zgw(MguSj0a(~^S=5WMG12I2j)Dq;l_hRQRA>RU2!8ut1oh`3j;Lf(`v5e?dc=6P7YF%6Rql+(t1|2hWF53lI_JK}pfuvSy1O(eHW zo@J0nx$VSx#t1f77ntFc*%fSr=_O_m0lR|D9d(ISxcnWzg5U64`;YAxTF8-P>&Oqu P00000NkvXXu0mjfoS|>= literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/beldum.png b/graphics/object_events/pics/pokemon/beldum.png new file mode 100644 index 0000000000000000000000000000000000000000..df2d686670bdbc24b6c6420a030da47ecc1ef21d GIT binary patch literal 538 zcmV+#0_FXQP) z&CRT=tdxtCb82(m-rj>sO8;tV)k;!>&Hw-Z|5~K~N`uuoVze^RRe)=0004{ zNklt85YV@BnS1R+CxOgJ}>q zF}E;_S#h_{ccQkS+lbQ&W;SfKhfbq!Spm44MV!6>P}r{kKjeaV7jTmN0+`$%d189W z?%aLjd5@S|qS6E`g-fb$-2tArb(U>6K`Z8_)J7M(e#=PnOu19&IbBL&ZGvX34qLs_ z#piw}X-;3hHS=SE?`6x}8PKs>L*5cr>jn2(4w%#T8*&PL7jH0O6S8U`v&;vWUi4a4 zDte~2I^I*yX_?7Gw;`*Wb&jkHm~yXw7Yf-O;CV?zbrG`qT55d5>fh(Zx2&{sPut_0 zbz&ohRD`S!h_=2jvN`u!R#t?zaSD82N#Emj(5zQ2>O!0Ae#^eMXiN7!@ce*?KQ}?k zzTYXVbhYbuk{qM`uwB= c9`pZs2N-+hqD;*PqW}N^07*qoM6N<$g1;~PegFUf literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/bellossom.png b/graphics/object_events/pics/pokemon/bellossom.png new file mode 100644 index 0000000000000000000000000000000000000000..062218cf5a083eb2dd6198f97d47cb4b4121a146 GIT binary patch literal 633 zcmV-<0*3vGP)5cX;S)gSt9(;1)xWIdk=6J zozU$VX`2uJEc-PG+Qkjn84-R5OTT}>K3Fsdxh$IFH4YZ#jsNDlz@CF(1xtEB4i;Wk zH&^G!0URuHUoKwnFf$NfCiSi%nSlq`)y+qIDh}G;pG)cDi8%-mMA<$Y2HX6HjLN(k z0^3hg$_4fu1WQKQl}+9W1KaY8T;}C*00-OJ0J6o*Kyaiv@ih+QpwoVnZ%h1CIA}it z_)a-!fM;g^p5#6V+o_D)^&kkhX5JjIS9_~<%_QvIS7uB^C{^W2vFy9 z?G1zA-wJU@HiR8WvOg2Tr+o*KY)&9t5;scV zJq&sivDut~huMI=9H%Ow*?{+$0aP8mS}`ysfJ&1@t#Lpqwwp7ORh-0eFQSM&*W5dK{Mc@OH|(`4R6-9f0x4Nj#i`nCPrY%Vwz{at9#-q=6b|Fj+eE_P~f TlYpFt00000NkvXXu0mjf8^<5k literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/bellsprout.png b/graphics/object_events/pics/pokemon/bellsprout.png new file mode 100644 index 0000000000000000000000000000000000000000..bf21afbed942c540d0c9316f2f1404d1c1e29a6a GIT binary patch literal 396 zcmV;70dxL|P)wzrP(~`jOR#qVCgz(e9*Qvw50IV7BCn7Eb*fSir3+Dv zBQbE-=1k)WDZiBA)5&*dB?_=)$&w|1jp@29C$lALbDWAHqUQ_)otP(_J)o2Ggm>}4 zrk(F`;O~{Ca|f6$zmYW1ABlRe_>IU-`{R)}l#T}+ZCHa7$4vV$Hf%6yz`D>ks-07O zc%q}`m~glDs^1&MpKE?W>2c=6z1NI^liP+Jzo0N|X+tP(6~jRB*pe?GY^%}~*RQi3 zQ8nu5C?Du&CrQVkg1FO3JsW{UFZOjXLYdG<}s8kZh;PQrl9DMXsKUK z22mJUjtpcY$wKyMiu#HiZv_hE2E#wfx<4h+6d`Z*R{yF1UiYq|0QqYMXm{*-SApbQ zz;;{U9PD<}PTC7|!MWu5HZ#5{z0FhtRCsBssdT>=Im`Qu4ZZ7tw(;je4oNlZt{03J z?u22kqdrp|8ion9O~66Xcj1aVX2(SN6AU@hFO7lB2kJ0^wu$>SC}u-I$LxS8m&w79 zJ>BEu+DAQhGnN8i9qZ}}+SYWqIFsTeDstB2T@%2Df{W$vuZJoGbj-|fkw~$Mq|)BP zyYSXj7`H5y3=?P@*PNv3^otpk&$we8G5!RV_Zlal_YMyaSP>@BHsx{^rEq3XH0iS& zd2$VJ!ou≫eT??2pckw+b#By1(_MN%%VHwR`G=nNhO`F8Zw|lW`o6CKJCryk+sLwQRwv0N9k;X3Tsx?wp1* zH&D@iYc#|_{It4p90QvHIHAVz&DoT;Y&!$phCTKAack|4f&aDs0xx5!(P_;VumAu6 M07*qoM6N<$f`aFmoB#j- literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/blaziken.png b/graphics/object_events/pics/pokemon/blaziken.png new file mode 100644 index 0000000000000000000000000000000000000000..feb0675270191cbf2be40f816d104e433dcb1f6a GIT binary patch literal 885 zcmV-*1B(2KP)7zc0<8QAw+Sq@Ecn5}}H`L?n|iATeAGw%t1``Z*(=4B4NOAJcevpc zyPk#58@@42pPGE?Is+EBLV9usNps`u zRdSDm6nEg^Y#K}7`6r8Nct5#;^9|=-QO%sf!94MoGX!~VHkO`JWmn!&d^H?M&z#(+ zgK1L}pEjI(ihyqR9fv9YJW%I+nj5K85&CnCmrNP3lauuFw6d_<2j)Cf1J>+;YKBuk zJ?=t!Smi#fpmd@dN~d9X36%4NFZ0F2EsXo(3C1txpAyYtB7c12Fze)wBPtD4KpX;& z*wu2rblOpYFl{B?5L`-}09UgJY}ocNZRJmBm_3Eksv)$V#dYLe0!2g5Mnm`e zawv!SfcWAv^r#wwrU~yDx8if4XxIrDzo(|5A{u;GcuB&9X*Wy+9=D$Vs0}sV5^uXx z4NvDN+3Zwc(>zXm?F`BJ8&Ih7K(e8Y?e6O1b_gfF=E)FlH78rz*l6=7+pWIh+X0w> zLZD~}d~Jmy5O95m926TK^{Z6_qVzz~uuu&SZmN)QbG_mR|7-mP7Y*5=cPaor00000 LNkvXXu0mjfT@s>y literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/blissey.png b/graphics/object_events/pics/pokemon/blissey.png new file mode 100644 index 0000000000000000000000000000000000000000..2a3643dc8d78acf686af809636de1d1c5786fac5 GIT binary patch literal 594 zcmV-Y0+}u0005q zNklxel(E{5BB| zlq^1z2Arv?Wak>&(MzG74)SaQ-&5Xuk_ZIg5|_Bd>xojH_x}bxA^ExKbGk0ffOG6NQ@%WzY+(&GS$Z9<^6? z4}_ULPl-Yj_W2Bjxz_2}ZCIzK<6W9c!nUC;pd9mw`9eyX|>zn}(j}wrTjL{u0iBvKQ)V z#ijl^Av}EtX1~B=w_*JicCqGv1`Z9|fd5Dz176XNU`m^P53k?zZ4eU%e;eEs6RyuV z49^(6+v%9kE7CCEnF1aCv%#D1j^hrN-9-5mZA0005d zNklBjE6bJDCP)XZ;mO?UzLPg1BJTwGak_uW}PpXDCuh^i`XwtVRfh%+? zf(ZOAJeCTYN}`6hC0n4U1d`L4r@?_j!EgKN^#1QoNC?=~u6Fg$is(@$N(K$mnjT@g z(C5j3aWvPuI2!Ow>vP#=oH0bh`|wBWZ`b239b9yQ`hLrMS&2hfGvI1S3 zk!)su>A2qz+FjRYyIX*KPw>%1&f|OC1NYjHQ+xZdJ@S7@u-35w+CUkfNUThJ>S2qW&3eK z%Sd#)A09?fbtD*mcDc7V%0#2hXGNMrvZ}MJ!a5xZhCj`J9kh!`GU{x-Y-5N9XA?9; zmE<^#>(G8gj#cMMHl~MJrDhK=j_ZJ@3+{c|eG|76CfWYW7o7O(rDUj+v-c}|hmMKb z-2MZ&Rx6^jcX=fl!Ed5td%!26Q~N|+;DFUB(MR**NQSp!PGMEUd@{C7X+xI1&b|AI zK2Q42Y8ZB6bJCPWO2AJ^UTtrP`nJiL4@d1XunLSe2awI<-mLr9kYa-1T>2f zKSNL3=AP1L$5QZt!|#Oud)}!4bImo^Tyy=SYR}XDJ)oVmD9b4?B7kJVq7|pS*|G*N zD~tx->t&K)#9CA;GkJ0343OoyDYm@VvaN%NbseC3Hs;6~JafuV1#gJMvXl{L;RlFI zlb4Kb;Nfb_<;WVEZp+S`1=?Df+?;>5J+rq}k_72(q`3FH3!L7<$`0(WjQI{6y9-1N zkTw|lmo2Qii4|!uvJG6LM0~jgh~6=2&=qYkaD_YcF*7A&fTy4fR4(Atw+4$o@BoZ! ze}ngUr?-r4;6sZ3PO*lop$|N^XZNHc1CDK19$yhRiZxuif!((+db@_6ZYBC^Xc@XE zSfuvc<=zGKc5ji8Ns`1Qpm*p75Vh1&x#agtB38otB0008B zNkllO{Qliqr7fa|?u`bFO$`35-j85?ZCWF>Vt)DzWR9aWfV-~^kt zMNiO2;L(Q&oKL`!zuh|D|#>e2CTk1WOit=O&Q=#2)Ir7%t^qDR>(lW4 z64I5h4RjiEyQNsly#}ti2_W9LPXKRkiP#1pU<8oUSLg3afHbzg{yzbrj7@`1&tto# zL}IFeCGuJWQ1N#k0ls{e3N;`>N(P`l(D+Sb0x8J`lvC2SL8k@UEqOgKXaQW_`~diR z&t(fBU+MsE{YKJONF(s73xG$MOY8%*jwLiE06QRB0N&`pdo%!jf=~5&!%GebRg^b? z%i7*FFN+TkDK#+Ck{YxD9nkDJQGECC=6Ml!3-pYl+)k*Ks5N#cnE$-^{*WGcH!-6* zF72ZbqXC*cl9h@i&sAejB&v~5SG=-$v?H#ybQ5B?)bX7{9BZ)a34j`i9YA5V3By@~ zwgFEmL8ZD!GbEiyq}|KFFCVw5QoFHkx@9D(jIlsOlLnuB%SmNNDvI*v(=kU`;J%=` zi!<*f))KlHqkP3msxro#S}Ibxh_Oi0T1njbJs8>R@~Doomu3Z#kgn*6(jo&R9neyu%t`2hKI9!JHu>n|@`VbY^s>Xs+nHQ8r<6`uP(2Y*J~1U9_9 ziG~-3clB|=i0}o2%YTux3H2Z9Bi%e4__y^9w5xUVNg3Wy00000NkvXXu0mjf+}i29 literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/cacturne.png b/graphics/object_events/pics/pokemon/cacturne.png new file mode 100644 index 0000000000000000000000000000000000000000..3bb30ca68b6b0d251f03cab0762b0e153b0a5b1b GIT binary patch literal 517 zcmV+g0{Z=lP)`Ib8}KsS`ZKrVMVfC0004y zNkl5$UCGF@hIgK@^IFu{_isU_oJslx3;I znq)KWDhvkwZ(siS|Ix$%JmL|L__IJO4I*sRh*bu0#W*ik8H7|p!?4mQRYBwZVU^){ zD1#ody;@_GFB#xP^WvjicCCf%0!F7H z@8V?xe(k%rkXhd)0YlwzyWw|BUexo?tw)!)=Kq@8P2B8CJ(G^nKi%LsXA7- z=gkaf3(Q*!`;?kZ2frZJzsQ@GPQ9N7{DOX5$zyeG;NQk4O+$Pwr;DN^00000NkvXX Hu0mjf)#34X literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/camerupt.png b/graphics/object_events/pics/pokemon/camerupt.png new file mode 100644 index 0000000000000000000000000000000000000000..5d77d49c5139592ab26ffc2f34ddf78ceb13de6d GIT binary patch literal 869 zcmV-r1DgDaP)yyKdVs6oyH4=~9;$0Syc!kjM^!hoBS*1n^Kmv49jA`ZCS~I7tUBPM^WG zCq0dWE?!i?@RFq|+$Sh$>tZUDT_97@-?EI4hy2f>L{SFde-S*uFP4w?^GgMl*vp3v zFy7Beyq6E^h@GN#hFBXy+{%BU<8+ML875RoKW^p2!X5tvqE?1dm`^Jo6dW&=_<7UL zSYUm$@}|jNRu+3_UYNwJ!&(^kKcjSXawU+Pwa`&&JsCE80*fRTIC3-0vdJSmUFshv z>j7|b%kG!e%4;$R6QUwN4qDhB&_$YlrwMX1;JwKr1$tJ<&7M$#hf35luo>d1?nx)O zg#mvbgE@GtmUff92uscdiHee0$)y36x*C0I;gBlvChvfBM4YS}W=S?nrZ{l3N2RW2 zB?)jc>`i5e^G=@6Uj+^ZpqmvcN@}wAaXC*%4^Pz$OD@7$c9BhToWB7Z!zP=1Dzw`~ z#pMhd%p!#I2SlPGAt|}4FG-GIw@k6UZLz(k`#!7Q;`oK{iQ@1~PiiT1fm>N=54rg+Y^vR2M2r zWVMV--o%g6{`6|_?)vija%j3V*%*j5|8f_u>*t{0@+M0;Fh`wWhv8z}mt6Xn!}H;} zl!49LAs+uV8jZfLs=cVekn0ip2we<+jH0!W^t?>a;LQjs(louAjU;!{vq#rHqmbJAvVC{3L(-x+r*Px>&qjh>&u;c%Zw6hIzI3 zP|kfScjMC6ZAJWPo??B;gpk|Y-ej#1dbl32F~kJIpsZNOLutnatK;|yghB}OE!d-! z5~fc@g23|tvkgsC#Q|`{K^@mQ3Brt^a<>9Fgd_;Va)^1qS%w+_-hD;tIIt4}>yHg& vdJwC75K{m%r&|6)oxF-n|4d%a?$-n}_F_BlEKgM-bKDek=~|IJc+IXM6T0RR90-xG3p0007b zNklHg27cL4TdKlbC_jjKGu zc+2v=gMyL@os>%|NPF!>Tb4mFjlX#9lvFMtRQbR+01R>r8bYAxwKEk8C|7CwCV)nc zK|uLL(QEUt%5^B%mlj0MaWNoVplB%Ds6A<98j!I|#!j{ypZSg>&$dqrG%Pomm>|ob zJaYXH2ib0n2VCHtOG;9dYy!Cs1(%<@0XoQZAsFe@NdhB3oF@mM;WBvF%y9>Iy4fxV zBNMliz{pcQwcunK9J2+a&Md_(6P3U$^^7KYyY>y0pFcNfdb+QubGi+@b70R>KNU#R z>vt{pL(V17sPl*G+_z_AC?wQDp5aG_pZ9EzMP17E{RK4Pcwt9T2f5zt$#?qy84dmd f0HMDf|HtDGN~NP&WEXyI00000NkvXXu0mjfPKsQ( literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/cascoon.png b/graphics/object_events/pics/pokemon/cascoon.png new file mode 100644 index 0000000000000000000000000000000000000000..33b1c634d9d8df49eba26cd6bd7d0568418e5a96 GIT binary patch literal 392 zcmV;30eAk1P)_Z3$#qSUJriG6Ok$y5OHHj_dxhfJ?8DkWS>0lG}&=jDPtbrV5-@dddWRMm+q00 z7p@%z8fyLW=u;gB1Cth(CvKJy_jVz@L|{=_*mh=l27{UhL%!HdLau9u0pFi0@8^ij zz=^9P8rVQIoX=^Eo&Wk!nGXS(fTQh9h$1op`}vTJLyz6=&5*9gF4uBe{+w67RzCLF mxs!F|({^kT)0RB+m%0Jn*Q4dfNC8y<0000}Nmw+0T!iR#4ppln<*sXxuhG|F>`$ z_#?`{Fm~7t`bYT}K`!+C;qZuZikLM9Tcb2_3OraBmZyFYlcj4!j0n5I)(A17c^<3_ z3-rghBjB>RKho1YSQm=OaCBz5YlJvx4En>d3A86HIBOR6x~JH)LXo}(u9|`(2*z;+ z(+&&D$##Pa2i>X|5LU()lYkq1Dx$8+Ap8t`1lx;AlMvPkCeh0BMq#Whv*1(GTdNA% zcWw~EZJ;Kc7b>0SmW5KvUVsNhGI&;HZUe8uGN%D9EdQn1h6YNd<|M#^`u5M2`9?lB z-hxFAo_%C4ES6f|(?C{L^ai4wIYF&An0woe_n=qW02g`>vj5k4;+gXoi3|CgGE9$? zq+HUV;Y;$?`m#^nF^G=rP=-f&ymENKSf)t60$5KCFX_U=oqK>Y6K+D6g*-U#ubLU2 zXQ6X|vj|UM7lU3%y^Do*u*RTQyBTT+7=Pb+0kQ8#q%jpi;{X5v07*qoM6N<$g694J A0{{R3 literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/celebi.png b/graphics/object_events/pics/pokemon/celebi.png new file mode 100644 index 0000000000000000000000000000000000000000..1311bfb45bea15bb8485826888bae63d1187dae0 GIT binary patch literal 542 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 literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/charmeleon.png b/graphics/object_events/pics/pokemon/charmeleon.png new file mode 100644 index 0000000000000000000000000000000000000000..fbf75461d7de6dc46a692c136de58c0af4506b69 GIT binary patch literal 584 zcmV-O0=NB%P)rcbMzhP_md}qG!zK&d_ zDbzOy25Z4qJ*3t7&OSQl!;fzNhxeRSw-Rub_LGXvt)qVUxm&VHM}9#83JWj;bTxBO z8<07mqqe&ei8BSi&QXBUxnvsKA`AHaLuS2~WaoaLpabae4wE%D3HX+9L4wH>oB<*PPy~AOmXr(k$5G z1oo2nahZw|bk*}89rb3an$30zINnC){B6Y<~+H{ZsC*WS< z3Z^CqbRus3EAFEEt;ZW;F_3^l21%Za=i>XnE+nm0(+kjQ=bEbMLDr(1ibz>T!I>`p9 zsXlFG18E*-*EW{pO5NoBR<~kgZKzr`o-!9~gU_47PX0#9ux^5BUg>Rbj+U`gr=ZjS z5w3kd(|K^nc)mlMHYQ;)odnrNoT66ZjTC8(QltxAx0002d zNkl5vW;1c&xv917x8 zgIfY#v9UOqfBWt~Za4rN8ylNH%A_0D@R;8W%}_f*8k(5gQx`J?Q+LJ;>@7RgB<7s2 zhuh(}fgI%^AMV#d#6T`BZ_kKD6h--a%Y&%p&o+mcA@+;ngn8HE1`;GL>TrSE+oP6~ zkqzOB8QJeKTt#K%tjDz2mdc<`l#RX~GOc&Cp4OsK78+4jAM~L2RO^ANy}a<<-sXpS Y0%C28ERAv+wEzGB07*qoM6N<$f|YfZaR2}S literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/chinchou.png b/graphics/object_events/pics/pokemon/chinchou.png new file mode 100644 index 0000000000000000000000000000000000000000..0ff5b1e50de624c3745d0c99f9a2629cc5c126c3 GIT binary patch literal 667 zcmV;M0%ZM(P)OlVi=?V01yxm)9+#p0006e zNklt_@E5#ACDCpS1hU%qO$}r#QtaPH~F=H>5mZ(G5pf z;qbiU=t_^N7m1{3RiJkdaMcE!LWGO(a)iy)+_WJ;t10L*CIVWXdc9-?X%4Cbm@yBoM4uxSH=LxR72@*J9WemCON}T$!ucUs*O2{d`tEKqz>- zN)!+hI0Vs%%AMdL->ra*=toGt7{TO41>})7Sotg4(c-&(=+YzNybS8_A zUDw+soDT++#|xWaQNsC%jyP6oH*B^qX-|4VEM*;XT}5XoICL$e6ONrH^)foc1jG2d zeLgEK!|lBDWJxJ&e1dqf4j4Nxrj)*(h&xjeHttxPVLC2Yzu#kG;|hj?4F*ZN@bBMZ!G`^iKiz!ZOHgb=#+IMugk4KzTdtSH za^pM!crpq6r*z2U>uE1cfXo8kkawoy+_oH-+%o6R6Zn97MaH`g#B#nokH3e-hJ!@+APZy@#{7F^^kn~nhy&vi2UXv;Ix6ZRU|w;+P$--O|v#j zcXv{y8G`i>E$|3J<|O35hXVCShJ)i1A_4zM{05Ck0p}br>IVP-002ovPDHLkV1oPF BHkJSY literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/clamperl.png b/graphics/object_events/pics/pokemon/clamperl.png new file mode 100644 index 0000000000000000000000000000000000000000..2c9d0d873355c4cf50d8e579eef1598c5cf19bfa GIT binary patch literal 492 zcmV1pw6o$2V5%dnuP%;Io!8P<6xkqsbl0aZ+2FtUDMBu}ibZ`u!IYftS z^4KLLRVP0w$fa~?!TV|*9)CgW=0|m3_)3z|4=7je7k+(3 z+`1Jy+^Nc8Pl)$(73;7Nrxj68p0IElrV6qz?2;^|=`gb|#ANqaISs5(!jUm46<}Z3 zCX~_yH1LGoMwL}L)Nh1#Pgn`KP4X)gw$w5m*cWy?DW!r9zJxX4J613O%NO%O!|V$g zm$GDV;)^RpmlIcj+uWEQOzg8S(_jHP-is8ip<63Wid2gsw)sU16pjY^f8w=9^5+DNET z)62vU%f}suyZ6l^up#%5>_FgbNB{5PlPp)6^92tL g3tye(A%C-c1Ci3Cien=cV*mgE07*qoM6N<$g6ng=LjV8( literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/clefable.png b/graphics/object_events/pics/pokemon/clefable.png new file mode 100644 index 0000000000000000000000000000000000000000..43ff65d3f131e9a815d844894be89fc1bd0ecffa GIT binary patch literal 626 zcmV-&0*(ENP)le;+&2f5f&aGt0y);VQV_Q$1fiT0PJ?2TX#AN2H7_xj=*Gi*KgYI5?OfS*_cGUUXrd z8>Xzl!Nfq@WfPA6SRl1CaK3}R)1CNEpBGKh0Jf5y+JWX;bVLPjY>-@(ZQ4^)OIF=& zE9fO}4Lu&vL2^-o8F_)d72>|Y!4!K8@J*0h=pI;fEm;|~uw^Bg;!lK~vm-i~n$;R# zlIYdlpqomx(v3cITF}_4lpRa#CLB$R*18O`6{kya=G0NIgJ>#xUcNHVE%WZVV$L002@_QVl0003h zNkl4@!hcfvoR;S(Y@CI11&G8l5FEQ(vo76d2Jgm_gB}IU{&Uc->BY+k}C7r z{ue5(6Ukh}EVxj0&PC}p;4SlgFPNK{1rL13d?>vJI54*$*l<(19=I_Mk(sy7lCZG- z?h+v~jeF>T&FGBmgjs!5-n0hX%OTpd+2lGhB2U$^hZ7IZH(%05(q`LwllrWtX$2Hg)%n>&rUpz>TCxaFmb$&I7hWJoYfGG(ot+;+pcXn;HhmGR^qlSw( zNbdnSPQx}JX~LK4U@`3DiNYYaKj1{J9lQhRo~fJZ$G-S8U*}6NfhB|9hDP zrQCP{CbK@yBA%P6p(nTaSK(;LEIbQdaRu*f=I2y&5vXftJI`9$I03De5Lv>wmR%Wk zxsw6rl0;61iG`EbFT?F{6Rsc$z`f1}przo=S-(5>&^V!80GP%h-wIh*P>d5}%Xd#_SA^tDU^gDCFcRqXmsB zf}^r)Uj&6ITpX*k(ug+2V1< z2x*+UxI)D{L(-T^%jF4v^Osj3&gjp|7tnaS~*%dF%S?CH`2C%00054 zNklA~5@-0B^qwm(OZbfpUEWtj(dZ$w@VVgrSAigaWc&SO64vrT}W2LST9&Lj_&ylY(); z@2Dte$S!9vpR@bo{8Y)Yu_=TdP`KZjyfM0G2NYM*6gaH(nXz7&JU!;hJ1@vRRT~u+ zNtz^*wK;8kY;%1J^0TZ$^aRTDQ{&wG$`;`vR&6W}wM`*atGD-+FnQxkp`I{j3nT5K zLUx5iWwk=NyO5F+h4Pb?pHQwxWimrKk$Eby^|ks3W*jQq?suGL-8|2`|CY2v{f?}I k`Zl|T_6+312Y+_H0nnIsz*d}YLjV8(07*qoM6N<$f{Ug8VgLXD literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/corphish.png b/graphics/object_events/pics/pokemon/corphish.png new file mode 100644 index 0000000000000000000000000000000000000000..15ed71cf204d9603f7e73828f83669619146ceae GIT binary patch literal 785 zcmV+s1Md8ZP)@g8%>k-|xD<0007< zNkl3NSIa)fxV_j<4Yr;0cDudANF&TrQ19Rdl9IbHnFeB?MR zyO)oja1=NXH2Ok7f9$$?zUvC*-`h=z7sMfurUNL7%*mV;2?v3^90aq#A&`Xqg{~%D ztuFX+rRMvYuCB&FegZ}AWX=LfxWBlXopt*lIO}@iNeE=2EWebMSg0BEY#vR;tjmINV?g|$*BwXT@y;yDBkLOcmTv?F_AZEBQd`^da% zE6-yf2@9pvRO-@i3qrq z1=e2=FNDO;ZMI}W!qdHJ@sBJlaHSb|OhWkfKthP0CNXYpViLl(1&oXXCm{kgoQ?@t zVoZVD&DNT}Ol+L#BMY?0^$#0cqz0K?YT!r>BcuT80Gc%ZVGZDrVlyU+T-fS)wYDxY zT4Gn)xI!8MGa(*{O&Qlnt{e%S83l5K7U@$PXHfLeY&RH%6i5sv1>ml(`y{lQ*kzl5 z+Ctw)p?K~qtRAa0gU+s3*2EWjAnt4yV2r^eJY~_B&7_^{XfhhB1Xvvm@;cgO&({j#r`8e~*t1ka9HUO-()>><=^{>?~cvpYGt)KtuPZz#s8IaaDla_p2 ztZt_!F6K>>RPx3rO8qXeu^nqR@`cHdg)E9jj$*rBtD6A0=-5Tg%C>#2W+5ompW0H* zi$>wj5pIi#gVF}5T)W%8tHRh#Bw^AgMhIJ+ICO+f?Fi3-Z0ajoW1nH{>;Mcx;ot;r z@tVcL2to0N_{`_PGY(Cwtnk9qrsdhpT4RhuVa{ygn?S|WG)lP<_9`OAUK(L6GBiR; z9NC~kR3WC?Wy}lbBk76hGD2V@JIB-nc@Y@lt}cngm$^ljhZu(1?E1t`;3TASgj-IW zI6{FzVugt&&iZVg&?3?cUb`Gt?lCtx35(jpB&0wqWLH7sg&5`r#`c2BY{|rKAix#( zxDTXc-X+^)6w9o00BRxmw^q(yBvOKAH(-A&(GhiaLKBp+dX(0;Pd?vo(_JN zzrP-&(@{sF!Zi(1WKt zaI+5tDLJh^Zi+lK^nBVC^P9XYK~oo0-V^6{o|yxHpFYmg4L~zl@bkx6M(j+wYam*K zAcc(<^dT)8mUAJd$}m8g17vX{*ySpEGvyfcgcwM03=Rc}Z#lnh4e}*W?6YP_%XYeA zeCcd@Z_EZ`*;WONU^4*l@tm>23=QWgJ(H;wG;H-5i_So$MsUI?X0q)|BWMe>)fuCW zeXggx&+rKMXfzu*24g+^(lO`?O0JnJyJQ83AU`(QV7O_#p3Y`5$hc1ESA3?RESdpE zupU5sv0yB`w@mwiNV`(AN)0!Sb6p9}pll63lL1Ik8|0Z0tj`+pDr9UiY?uTkP9jpQ z1@->d48|Z_u=9}=)*xhy!9bO*!GU0&;p%=7UJS7@0C?JRKDuiJ12o*U$u(PqjE}Hg z!GiGtM{EoNG=lYj0D~948uE2vS!qF8n7%XIl;}ESgY#$vxp~YM56CA9Y>|ziEjkJc zv_+?KaUQqV8PsgL_D2}5x7xrYY=`TYEg9IeoY#W3uXFirmpmxLbaZz@B=+FGV*VZ1 zkwV*+v?mW`EN$QV=~4^s(~aQ`Quv1HDvsyVQndz$>>)m{#lDQ~-7uy7$E7d_r7K83 zXby#AQ0&S$30lFL?ZGP(DsaBMGVJLE`svQHzDV_z>aY+FlhX5->W>Z0HiEgB7P)K< zXic7c=~?!^mSqmZo?yUQ|KrsoJX+5QmMI8yoJY6nU*Eq~qAP@6un5R*^m_@Q)ugZ%N zK9VvO!+iA-cJyMVmKKY3HOyNn<-ssd7fah$jF}Rpi}E%d=8OgBgFIcYFLZxm5eqR< zzsjv1?b99ZVYL|8GzDVzQ0)5Q>oH7)n?`r%c@~#=ma%@Hd^u~ zI66#$xHaU7{(Jy{Ze$U&U@p}$pmdRFpJ#8#f|@!80}9w6(}pJisW)^A??|w_HxaWS zoG1W$f??>p%z|)N=I39*0$t6Crr(Y;XXpg!^~^xcT~Bh`vS~xs04Hhh5O&xJ zo_{L86o6oft!ddC=3L;kld|CV>8E4#hVGgmY-apMQ3nn!;6_-H&^ zZ&()AI6;A~X;UR^V8A*<9*I(@xOCRej0zo-pvlkgN@HrbVNznl-q0WzCm0UVdN$Zh zd2^ujjL&LS%tIj!Oo9|9FDx`0Xd;dqLy?de@=>&B7_&T3X${8UjqVB-0<$1RvLRy2 zZ9+tQ`2qU|%vc43EKBnOYGeH$hATjww=C*oOLN#UAg+(YOeSjaRtG_WmO0#+L~C7f z9{OliZGkYbNYKtjPmm0WvHO>{RqLDn$17rPE-5%)6M_m3Mb~8|FbRSQGIx5^5_bJP p!>oh-4Os2q-o;-%9O3`D{s5aD`Um8e8U_FW002ovPDHLkV1gw!l0^Uj literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/crobat.png b/graphics/object_events/pics/pokemon/crobat.png new file mode 100644 index 0000000000000000000000000000000000000000..c64aa16c733cfafa84381ab2a62d1d6404539e8f GIT binary patch literal 958 zcmV;v13~sgS|sv zV0Z*UNT+5IfZT*$Pyj|jLLr#> z>gEP*7t9tR?j82x-cXA=+#xD=r_>8kpn(8DgTmeq?lj>6VB-;B<0Lgy(<%VODe#Ot zgjiwi1)w>Fl`)`=(?kt`ddaO8wQsVElf+Oa0Bi-cCrxHobSv-%ptmNhok2DL=2ZkN z#sPyN0&bknu-7nev;%<2-Lzjo;Q&@!03CW{?$orh8%Mb~mYNu1eI6h{7BJ@ykPBev z*wgb8;9_vp&7iqfHow^tB{sdb{+USyOj<>1i1h^kyF+B=03>hW{4KCE!Q9?0)#E!T z&Xn>Cq(;9&U$}-$Zluw?W{Dx2R=44nyuX8@)bXIS@-w{oQf|Y7&gfk{Hl0TQ)~m^- zG`g%jV26gXj(*+aN&!m`VyExF>fle=pj(#2afJA8B8{GbpD~8MJ~Mt`6dRvxGx_cQ zUI#78L6^eMP=!}0<<(}#jD}t%hFV2C`dVTbVuEyo3pRd5Ipw+0WbSgHqQnwf;cCW< zJJemPeNM(uC;8HWp8#ajYPHq=nBs9Vn#`7Vi70a2cbm-ad|GHeXe6;{sMD60T3-kV zHBtS6^jmV}cIDbUbWsyp*%{H09RJA50su1^v|O>oFiQ!2dn<|vSPvhs?1WtSr#f9+ zaa*9(w#1kjU4_%!w~D7tBJx4RZSe$9ee(0Q12~;IfX^GxbM(AbS#p~ZKofw=a9EJ9 z<5PWB4KF7D;I*Ge04MtZ`aoseSUma2*OzfswINSOp6qY`f*J$p8=CIi#9*DYayAAS ze}`x8>F$SAxXZ?VM$z>)itmRxP)OptxS@qayj0$5J7TN~G?4FCWD07*qoM6N<$g1ytl_5c6? literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/croconaw.png b/graphics/object_events/pics/pokemon/croconaw.png new file mode 100644 index 0000000000000000000000000000000000000000..15838c2992b91b7577e91d7edb564dd8fede16d9 GIT binary patch literal 778 zcmV+l1NHogP)AbS7+|Eya7S|H6S7<&K!|K?)mv{IaN2oMku&TozX0007& zNkl(Xv*m#Giqtt84Z<2*Zj zZ0^1R42`A$%^sLdNWTYg5*kf?JoE9?=%@$%7*18`R!wL>a^1clM!(zyzA`$7!=JI; zR=2fkIp6^fm&Jgx8O1hw%;+$9yNB2wn@reu7oc@z_LW?5*K8_3uMvL@4JPcX-}6rj z0Tt7w44kiwCKu%32jZu($@Ecv9W2#d<(YMW0DL!lp$ng7Zt5yvkMnCpmXz$U#M<_7 z@0J|gU|#vuesUf_(RK*gv-JX=?CDEjDF0@?kEP)s-Aa>sDXFY`Js=NwZO@m zb*gwn3%sjN8;h2;=$vt#W)0N=w*p7p+Ql^fxWoZz@%l!1GU-JQPqf^GI zm1hhmCDY1|`pb%?LDXuMcN9NXA#-fPFM5~6Io(KxAgQ}dTw2r*r1AlET3}}N998`o z{OmyWdW(T;p>9y4*zX@0PxsD4ykItZvX%Q07*qoM6N<$f@mEG6aWAK literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/cyndaquil.png b/graphics/object_events/pics/pokemon/cyndaquil.png new file mode 100644 index 0000000000000000000000000000000000000000..dd9b2006af39e560939a64191db9cbbf834b6ead GIT binary patch literal 654 zcmV;90&)F`P)jnO7={_nnTq%iK2_}&35IluE(2=2fl?uL2vUASI`}q*OBJ^JHJR{9 zU2d|GkSeCb|KZfT1cp|`qyc}<)lFJ;sdO*XRWT>wM-enAV|(I4fbVkJZfScruU`0+$L6F(sv<*P*%sv|!cZYU6($Sy)V z)Dw2|;M5h1BATmGMWcx2Ah0Y;I1wu1IEEaBIRcK7kyV0#vk2p82?9ILfkFONz==>U zjsc@n{89$SI+sEW9WPys$7h9+OP=RERuh%Hs`%h%eZUw`mdfv*uPXr#$Q7&(?66>* zbD^-3NR{EK+RvMuc>uy&@5tQ5T}#cp znQs*b9fJm(Eg?Rf&?h7q>LXvCNK>6J(*Oj>wcz{&;K9~Efpx2G&tc#}+iGQN^w!bX o4{k^L4y!f7v+BY;ln?C;`!#?1Hk)9e@kUhB19s#^0)3;){SXe=yVwgC(? zPhW`k-q|Y~%Eo^;q=nHSrEkTxQ z8=}kz;0v{Pv>M0WQGC|r2WB2nOLw^e4vYZT6Sir&zk2^%QVkhWFf&yzV1r_K|-ra$$5i_?w6D*frc*z1gv6Sf3JpNQSu-TXKi^_ zF9d)f;tMGY8Vsv(7_LuiZFzVv1b`rB%x4)*#CxA$ep<2O_{38H(*rcar)8EM zA7jwqn8lBi>a=3Tg5`!SW5*{YK)3zrniQlrlXiA_ENnTX*V&enr&w{#YD17P@=XcQ z?IN@*4yZj6?$Tl)GzOIx2-DB5JX#RaH9TaISZ1o62?|Fka zSTht8l67~5NLw5Y({o4B+S;pUA&oc1EH>?Lqzi;(`5`MwxiVn4Ty3uF#XXb^?|9YXF@_w7hrFi(zKWgyd`w?@4-4!s5g=zr6=KnaK$Lb>k6b4{+22RJ+f$LOC50I@_V2RWUTb?@kSsWmad<8EIk%?ZxQO$!2 zSL#ryQWzqA1iv3JB#b@UqdnTA{aMpy&s@h(^J|Bm^Es|WAZo_bTs7ec1p!asivDF;{;WFsDg|$s* zZPncm0sJM7n5&KjkFPdu$=zE4-g?L$FooX^-tRdqX?Z^QHU+FUU*;2z0MqsWZ&zaq zJcfc~$4WDS@YdMdcDvo(TcDHJTc@^wX|+sKL=)aBnQ>|7#{ovU5`&JfhD|CVzHWD zq$$o(6HAv}6jV1<^tUUT76=6maSZ6lc#h~iIr#jB(q|U|5#LFHYlmdVLO}yPwFstx z>}rr_SNGcS;xCA01?K!aF&mxt7>)UWqT08P|JyzRho$W_$Zyhp00000NkvXXu0mjf Dh?xcW literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/deoxys.png b/graphics/object_events/pics/pokemon/deoxys.png index 9aa8dc2188562b852ef96f047141f94f2443d134..a7726213aecadd8f4d36a93fe02560504d5d70bc 100644 GIT binary patch literal 728 zcmV;}0w?{6P)n;cwv7G0007G zNkl8nu5C`z{=8cs)#2X=caDWa(DxhoMB>|kS$`EOzz0{uSXX)Y&eW;T3 zAOQh-J$+fEY$kv`6|J@(W&Tehk21jj>z}z8UgtOS4=G+_DyUzzP1BG13e$juSIpk0 zY057*uu;LWaZVGYzSwY}z;_Tb!@GJy@)<);8q0ubWJ!U}nv8r%@8+MDX_BV;tgT1{ zO-O_|ZwlN$q{1!W+vJ&8F7J~((?QpPAp^WTKP2cB7?~koEccI+W5`iFPel|m1uiow z-2x*6R?qvw>D&{?LI@uA%i~VQHf)B!zwW;whHZpM!iLG0Uovw7$F_V{{-}7YgGMV5 zqmW^u*4!&FvXxbSQ()f|D13uW49Ca_9C=uznTd@1?eLAXUz?j<6t`!S329sdiz99# zoNc?nqu0Y>M)bc;u30RRIwIm_`^fY@yT-X__t`FrHF=vCO&|_7$Ae&{|1orJWVNy% zehNL!o6~P`1&z0Pb69XutgLtv8uL1kiNUHbFtJLz1w32aQfGgst}dTs-GbGsbG4Cm zV6GX@BE_MsXR*b$H>!RY#s!#HfL?%>46UBlfmRmKnJLu-4z3H(;L&{_u!VJ(h*oiM z{lu2vZe`pBA_cSt>;wDz^%K+J(bxwnbid~J3&%DowN4sBW9-)dQomV%(S&OZW1jf$z5W0~1RY{PM}!do0000< KMNUMnLSTXkb5qR# literal 547 zcmV+;0^I$HP)OV&BaoKdmuqM#f$EgQmg;~000000000=N=pC#{{R30^AuMO00055 zNklsbvFruajd$EC$5WBQn)f6jYLLi!oscF?Fe*jpS_<7yf zfwmyA5Mnzm^dqp~#k#xqIiK$ifd4ws`6FK4T2`zAF2>ex05mZ+om>ENZrYy7xswB& z6kSsY(<+y8047}f{L!-n-3$OoQo)^P5oa?10B3LKcNdiB0MhmO@$md@t^iVS{P8gT z@y!(gp!oFW{u=T;07b*yAb4eT?ur%g9UlaJ+??T^K_-a13gB_5?P$B}mN70`S9KlV z>nfmB^R-}PgmB+-D|J?r2)YbH4IFh;3M7meu*MSwtTsd;KrJ6AfYWFwA4M%J`m@Gu zvjh(ZX^v6L4>KU@mz1C-`U&UBmJ=xfHvAI}M8j&DqRBCfVAI*->YaK3f1Nn64#=PGFJ->J4i*A!+wAZP#p002ovPDHLkV1mBg=a2vZ diff --git a/graphics/object_events/pics/pokemon/dewgong.png b/graphics/object_events/pics/pokemon/dewgong.png new file mode 100644 index 0000000000000000000000000000000000000000..e3804d75c77aa3b246aa9c527dd544e85f45be8b GIT binary patch literal 750 zcmVU=dwUQN5dZ)GY2+k30007c zNkldycR)jH%Lv-+-6QV-967bmurs_NN_LBsOZR)>`*;jw zhvC2dx6d@;*7k#QpXFO<1x`&L6&P#i^?iOXKshysU{x=0 zsMpuIKd?Rvi*9KKpl(lHAV~c>o76kjhUsfYEb@L_>Ls*7+A{#TzRX63-Y%YH%B2|Z z(pcCFVC;m3fOQ?TnQFqXM}YJnQ_eyjfT{*`LZKL_Uu6^5L!bTG!-J~@k1oo$|_xJZzfau<3b6^#R{>kKaE5!9W4JY_G) zISP4zwjf;v=!ApS66&i(bzQPhG#q9&cxlN3bzbtN+2c+)SR<#VOdFxEDaCUR->MuL zPSX}orSe@6<}AK9(C}R*u(2>_0aG{>hijAbgK|}Lcg>uES1+tHDg!x-t7hSxUj%1v z41}~JF=G_ciZ`UTWuU#WFlS+DZdAE04WENhr58cWsu9F2u?V1nFEpE1uz0}|@(6f_e5iC6 zM?{Nd0d!Mm?r{!71`u^gKmxFk00F4?gS+pK06ZT<$l^@IQQ?I6mH6~t%WL8jQ13jY zg#c4HlOg2zzXoB(!*?&hBM*-&knpH}$LOhelz&VZbDli7{1Am)5zdv g540!$XYuda571BHJ;M1& literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/diglett.png b/graphics/object_events/pics/pokemon/diglett.png new file mode 100644 index 0000000000000000000000000000000000000000..149d1b8c9d1615dc2532f8bf445fd03d472ee775 GIT binary patch literal 419 zcmV;U0bKrxP)OwCnqxbEaVAT4sGVpe@XZ;W1)?4o>Mg_JP8vEHw_-mB5wxHvyk57IP{;&B#uH?r-SCf+7{17 z*}X6p&CFzQ;5~FZ#9caY3Wg)X(|Hg(#74Qq(}OMzxDKIFM2HGqjp-KvDob7|k?sFuz5%J)%moE12>t*7 N002ovPDHLkV1jK$w}1cu literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/ditto.png b/graphics/object_events/pics/pokemon/ditto.png new file mode 100644 index 0000000000000000000000000000000000000000..190ca1614e9621bcb0d5a466c9067dbec53603db GIT binary patch literal 333 zcmeAS@N?(olHy`uVBq!ia0vp^2Y^_Cg&9b0+m^KrNErn9gt%V4x|iYqe>nPf^xeBT zSFaW?*%H)TtQiFt2Qmx|4gdfD-{f@sBv9`SPZ!6KiaBp581fx9;Bc*F>gzPFG?{(; z%dB~i&ZcWD3E~aO6)_D8Jy~C^xJO>-&>1jze@Xkx`)BjT6_)E>3oc&F?6d8@KEtt| zuSf21G6wd?i%acqczQ-A&^+gir}&RnW;VeDsoq1soZ=by9c5z#W+$oN@tDzeNYvq8 z%tNI^ro3u>N$NRA_&esQcTU)}Yl8iZO?n+lXPhOx-|Oxdza&>`sAnF;x>WKRtKceD zeTzqzt{pwcds^JV*%rxpFeCqp?Pod0Fo&;K&O#<|Z3L3pV z#?!#bYfWfI%aLtbVN;aHccAks#xGgx33mmf)jck1u|9isX6aIhyKmsvTAH3JY2HnP$9}G=ZOjl zD0CbWbO?;58D8`5bL_wR$|YBQUUOJg$xtB*_Ru2@2?M(X9FPm_Mh(LF^B{nRA#b&+ ze1*Oo7~StRzmOpT1&)0J{_g_AYZTVN-RIbUrCmcL$U)GJH#c0p*8CNEG-VJ5_JS?( zfm(MnSg(1~3!wjDmw!v-Q1I&V?1GDOn9r2`*o%_-g+ifYFJxN~U?BCgfI=n&y!Jxu zFK6>BA%}twyVvm_h%?K+>c3r=yAav}7E(Zf)A+XBI3*dzl(wWh1rW?~0?1gPF zBs=(MOYK(CTFz7uA_t+%0Us$^d#-|z0DB>w!@up`R=r8y?4J{c3f{=|$&`ZkW zzpF07*qoM6N<$ Ef*dvj_r{{a7DVqy>w5dZ)GsDas+0004w zNkl?4P}5~KtTsDh-18(_;E=wv zA7=y4NQ0vNDwW(13-D01-|$u{VRlR-rFqeQEO6XQl{*ih4f_qHTz?kX|MpmSn#-K` z7k$Tuiv^Csz~>DDENrc>bI~m@0o-Vif8*K^C0Q*a&m7$~C1iAuCP`}=vWTMjTwT#b zw64XfhU`Sd`13SmA%#u{57zom&RFt9-JP20oIXY4Q8_0A3Z;S#9Ck{lbF*F>F#GbLap7002ovPDHLk FV1mQk@YDbR literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/donphan.png b/graphics/object_events/pics/pokemon/donphan.png new file mode 100644 index 0000000000000000000000000000000000000000..57c5dab527d1867cc57dcaa657ff870df308e50c GIT binary patch literal 658 zcmV;D0&V??P)^R)H{9-7R(!{l(KkrjC95ofUM-tD{IWGR=zn33VZoG%o2NxL;%3Q;ut^e_ zUC|WLBe#q|gPk~y&c0u9_C@mx#S9UeI0VkDE$&HP2_4aflAGvc#R-~{xo3~j0up3b zGM6+(c>w5A+y$q8N3LkD**)23XUqorbD3M6DOzqoFREnyf=+gn@El53$yxi1r%PhV zYK4wh8xsy?^@n#xc4RgSPL-wekpqqMpvnE!3~vdH2}Nrk!MGnz0xyR& zGxx05QWb4G2F%TYd?Ys$Osu_ajmh%T5einS{nE;o*WcEvXpZ8tB91LuJ80eMtCzq~ zFb6)?vgPjQIKj-Y>sP#qMRVYxtIdh?#tC{G941JwwXC>%9X`alAy!~*nohuV5}#mj zhW4S}Nq)7R*o@}N=FhH)@OBm4dc_lPRXxGB>~I(uh*qM@Lo7@G*7_$ypHQ5k+md0;mwx6rt1^LmG-S@YIE71(>Z&l9 s|E0Qe5>op6-^QuGb#6LzA>{+M-=;(6`@9_Iod5s;07*qoM6N<$g6Xk3X8-^I literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/dragonair.png b/graphics/object_events/pics/pokemon/dragonair.png new file mode 100644 index 0000000000000000000000000000000000000000..89f0fa5bb713178951eebf7b4ef87393e76ad7cc GIT binary patch literal 1034 zcmV+l1oiugP)y&uZI15XLu9vIu&xE;WJNOQ8?ZLrDnDW0)19I!F+-s8-*>hG3({eS@A# zX$Y%Jp-2dg&n3{jOK1OTr8JQCR;q)|C(r)Anc3CIg#4FRp+1B3uK{$WzP1kmGxhuW z@di^MJyO8=L%?iBIsYSr2@o~ssc$d_rbnfyi& zUWjf!0Jx}A;u+ATXbJW71W2--5cT>&U`kQ90}*B2RjUD53ISE+RWt>Xxe(X0p@Io; zqUnVYH|uaP;BSPe!XvK&2jq`4$U)Ri>I}lSVmyUU`5|kpF9gGbOu+Vq2@_JrpsWY4aiPEkmlwo$EiqtXrTag`jh8}RISJ9-M zLqwe67>GInXae?5t7ym=9WU4;Q46?JdnA zS+Q4vtlqRJhdA2j8-T^i>h3PzFp!37<8yY|-*^>xS|$`W5$$V?D>Wc%BCC+mA3m72OI|#$hzLTt`da`VA6~+EBy;}9v z)2bsZKF1r0d031F#&pMm1k*vFjh|?WV=hRbIWhGnoGAU;J$fl)NrE^F)VgS#0R#9J zhAw`h5yneA0GH;*26(ZP+8d|10t%*EDvv-S8@OTixy=~@y?6LTUnX*x#uqDRsC41t z18L9__mZU2ASHo&Y2tYy`AF_RZDRq@0{;)z#i}b8`?75dZ)G6(CKp0007= zNkl)@*l6$167JGa>n0S(clW}4-{|;a>j)1-0hia zCAd~oChFkay_~bNTZemQi*xSdVafyn5#*F9s*T4z6B6!GJ=iHzNQ+MyAqYa{mPbK} zCwM~HYf||80%Ac+mE7={5O*9ncvuxOuaB^R$)OGt0R|_9k_ENlF5r%@E*W^U`pn#b zA!K%-X9D*Cf`OMKum0K5yuls7oiL{CQeC)2#2hpMC^>{Gz-$W#lfd!pNA3w2^Y$2b zWE41O6V!!En#sASznm2Vn@c90r~yAh7BB;gKIh?LULT_u%Z&-i0X;U(MF_47nFf{O_)rOM~(AeYD0v=fFT*f+$l^oUuXkBn=>QpiRp zgXh<^W`(N(@tBH=P^Kq~XKn`}@4(Tt9wz3)DUO=lA$rl9Ubq<$nq8>Y!W?`_!`5Sf zN#L!HS7P2zVd`o;h8#~dN1bkW+(00Nbf!{Ep zOHP5e+bFSf0|Ooa4%qs>XI26n1hyOv9PdRetTzlPV(0=}Caw&coiSa?xzaPn5|NrP zQ99j2{W{(=Ne1I+?b$2!<6ZT)(4JpZbm(8?jN>ajj>+(f{mM32ujVY{_>(!OQ52hR zj2*N07_9#}<$S-4_FtH2Z?ADW&dkpF_IJaJy3RM(EdeU8^UZbZ)9T-?Pw-N_B6%*I Qm;e9(07*qoM6N<$f`CYHdjJ3c literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/dratini.png b/graphics/object_events/pics/pokemon/dratini.png new file mode 100644 index 0000000000000000000000000000000000000000..2715d80d409add2e80a56d563c0483132611b9bb GIT binary patch literal 635 zcmV->0)+jEP)$?wE*|J*S-Exss5)P=f4)#9e`Hj{HH+2Svg8Wp>wyH z_XoX8Xn=D26%P;sT@~Fe7X9GR9z5~C7hB)a03q0G#BMdtvR_qLbUJd2xC0s>1S(O8 zb$n;ZgFrRK4HedFq2nnWKGfqTVF3f7H^x)$h2w#Gp-;Ob z37GrB8x|mh>f6Kojef}%(Gr${-Io()F+jt2d@0#?A%*E;v80??TiyuN=XE%zk$uyj zQyL(IaDJE{XhUOdPWwe5gsGSG+$#}q5t7^F=-e|4ForV^1ogGp(aWf3b{q9VN5;}5 z%QIbXLIT~PZ+M`Z6}jEU=j*_&jRuv$v?Y5AJfZ90Ee%lKS{_)>Y->$Uxv^#3vHlr^ zWc|X|^lxng~sLU2aS!-(U~SKVX$Yk{rgk7n=0x zx*7%$irxR8$&w94GMt%Ta4$?(^w|5O;r)7_JasoXNIZ(dPIZ0#Ip@NA*v5%IAs_x zYAy0?1Bh)H()K9>crr9HkHnqGHN|-=GQf&9Y-FBkV2fC}(TYqXk*vfs4U~ttm67;V zL4L+L7ZqV^1wP&0fxxj+wQ;Dn7g^B;CGm)DHqn&hhKEt9?yeVk67Y27^NZ*!>?=0W zl;g<$5%JwviR(H#Dy;<`+x*Cg>0+;y*(>$wF9yYtQ-C^13+$^cZmKk4WVhlIgKyV} zLuHZyv1kbQM}9kZ+=Z~hIz5vv#DQuSFq&NmJAZlXz9mk9g(p9Lgc+CpOZ@V@?m3&p zvGN&v)cZ?eG{h;ebi}Tg7#f3}V!xW^HF(Yo=XCAda|$HhGsA;KhGrQC#{+1YF?dat zOTdDtW?$m4{2tKo4x2158Z;S08A9NOUdKY8uXDp;nXf~w*MT8~Sb&Lg!|CeGdLH*v b;s5Fj1}X{2sCGjr00000NkvXXu0mjfm!|t+ literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/dugtrio.png b/graphics/object_events/pics/pokemon/dugtrio.png new file mode 100644 index 0000000000000000000000000000000000000000..4204b2aa69def8f0de96c16a47e145673fe97fdb GIT binary patch literal 688 zcmV;h0#E&kP)3oM=td($(aAY#5HbjyQjg(JIJQv>Rcwcy2 zNhx0!corutbu1*#0#|Z1=9X<|{ab(G9ZbjrD+|?PrkiYWETD-(H9FBmxH*5RWPMf6 zggh`D&%#*X2}$td17YK(bRz*1&H}@Y+p=zkxUFOYCfw2p+_O9kBbo|lf#Jq&JGnC! z$T*C^QKb*$LLTVO5038Xdf+MrmLCXRH-bUHg*?#FjbG$SZl?kZ#ckoHWdbf70)Hl^ z8^1hTXcA|(7j%WJnsWH&53$08i6I0QA<%Rjo)vI@@Er?f!NtIfNh~KEzWKPxabe^P zOZs1iz+)(6y5q(-$F9LRLhub(9UJzxXN(OSPrios{2mFfyw>QUbe`sfVQ85`2wc=< zWRc~k^5g-PK@$b|EwPR)fCk`8k|0Du;a$ghcL1gH(EPQ=G$P#Laj$cu`Vr-zQ6ZHf zH4qWG}}PwI_!;LfBsuGL#kj0oM#sC}o5O8J4wh&siEchY;MGzInzJ48dibm!En z_Xc&|@fwbF7!!V?-=GYi;IiJ&DCmJDZPsz-n}{I=7aY3#sB~Rm^<6i0006~ zNklBjE6vt(5xQ-U>*nS5W+2BDc6sLHxhYW`)*!~PDj!^`P7O(CUM97lw zQqGVLm!UYq8SYIX7%%z^)mhTrNkK9c4;}orpLF;B@Ba7R8OAA2af&Rg5~J3U1)Nes zv_7(cO-lmo$VYH^F(Cq4vGO0oek^)|7##NqPN`x9{I~*W*)8xpdr|yvS+#sHEJn48 z@r7Vl%Vz`EGnP5sRGr>MLx7%I5o{Cg$7+W&0hnkNlsVmG6y^!50&#p95%RQOv5)yS z;mxZQK;Hl$>KRp>IM%|uks2Sto+vOC#AKUPGB3jyi`F$W!Ag&89S8c-LhR1g0An}bfP`UBiNFHZ ziZ`+Uljk;yGwGvSbhy)z76#-7 zD9ppD6o?3H;@Hn#$c#f@4p)PSwmX*z%Z#s*x9VA1IKP`QXm7kw3XEV9g;SsEyt^IC z;cb8zoIgsS%q)4U2EU}9OMyFs2dOxmTu+!6`aPXTmrPDd!xeMz!>Hr|Wo`CV<1Rf@ zjLrv}F?(=VEu9%#sayRt06uIQmHdG%m#a!f@2xXxvz1xFq9mJ)KN~gtkukG|4YS!W t%^Eh^R=ZWlrR8t0w~m3uf4=>}0w^IN3UqV%v*YUANRBr4ZtlEngp&wDw|F*{7AnYXk-h;=!| zLjTm?pU(uxoLh&-N#;|_DZ{wx3lAOlttK&oD1PsYF;kH$wLg|q96Gi<0Zupj$!%yDiA7&;a}6oLoF7+46HIxT+0uO3gEbYH;``Ahb;i~qNHidm_Gk!=+m<6I$T#PqO$lc1 zh8;8K_>fgnNuV=9%d%Cl4z(l#c~9*CRV=`4oM1q^`$djez}mP4>mQDXD?9p@82Xw~ ze*;@V%eDJ~9mZT#F!bPZY{(*Zf+ABU-WLVR)IAck+dA$9Z56qmb(TH4kXu2^*?qgG zl_9VWVTrCw9&TGfNiB;f1>6w`I@&%tL2heiNQYNRQ~-_2(ryb@(DK2(3A5!b8scAO z-9cK007R&lEsK%_N*e-y^@1!P8z<wBE$NKl@jjI600000NkvXXu0mjf DrQL}m literal 640 zcmV-`0)PF9P)x_HVh9i*)pMkzL32_dLDkjOi;I*&K~n$!{{R30E*dwM0006D zNklr;|^1v;n)FYu3NB>)xb+fyre1v;n)TcQC(H1OIe8~d`cJDXl9-Z=L(qb-&y;vu{D}Di zR7g&!CBK3#jTiA*By&(H5DxqtXtaR~P#_8?)PpUJ57{|vjzt@7(YnRwu#Ud;lw2SV zC)9&2(MZ3}(#Sb9!i41QhDNsn6liKtYXopw3uxU$ny8CR2gHcN=^!%&a&!D*lN6vp zlExzfV!bs2ctnE<1&u#q$sy@V(mrgsfR`N;Si-hjR4bqmdXC58oQn&tD?8By+yX$X zWGQLI310Y6aUO{Yk4|{XD1fE2CcYiL^$q`fUi2d%!&E@ynMztM^LcD(jN|e{^$O?@ zO*7-^hV%MJ8&t&3;3|lvmo&P$zRxW?SO3+{k)Ff#UXKw{3wc#&Cg;pwhOKSR-Tv6z ayT1Wy{ diff --git a/graphics/object_events/pics/pokemon/duskull.png b/graphics/object_events/pics/pokemon/duskull.png new file mode 100644 index 0000000000000000000000000000000000000000..79ecd0fa1dbbe26f02f5341a49e64a4a024423c4 GIT binary patch literal 474 zcmV<00VV#4P)yRNA*lLE}3QHLf150UDG4KYI+t7PnkPUj;k<%80Y)r8J5k`= z2CaImp#n;OV~r-RpYb;$$~#?Pr!xc}dlYvZ7DY4?cZP@^PH#MmLB zXr=rH>}6SruF1nbm;HLM03=)K-P}FZvJ(%@cNIODe2=@_gjwFNQrX&g<3aRb_Y4pm zGVbFJh_6>}U>lf|3QP@=!ABcTHBjw=qUGj+X18GqEP-!`&3_=RAI$%aALq5Nh^|n4 Q0ssI207*qoM6N<$f|DNA1ONa4 literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/dustox.png b/graphics/object_events/pics/pokemon/dustox.png new file mode 100644 index 0000000000000000000000000000000000000000..9e66a5f81958a7e05042ce1dbd7248bee5cd3859 GIT binary patch literal 734 zcmV<40wMj0P)OAhg@uCmv|kgm2cP;ch2+$~=&6?! z8gkAzbY#uQj@d(L7kX%PSoUd{HzQe*lzNQE_tkYN>k}z^_lQ8?*DgE+=h2^V@><1f#DL!&}fXFbg0(M7-<+SO{ylEtC zc9ihku+VG{Bl`han8!G9e28&3aF5!aI#~B2TyhXv`qu*s&Gy^K=F9~K2)`nqm0V!^ zeTP_T&Ey8i@_UE`IuC9AZZ9ms+$Z0ju|40Rd`3R7( zh9F!;p>lYOe2Ez(96b3&Nb$|9(nHO09X>v6>m(GGf)1}Qpt27gCwNmuMk_+>UE3$2 zLEN}KBJYq6-9UXwTOtfxfP~!<>`{cuUn5@`Nr({sNIWDPyj2l1IyPB|!#%Ilsq(j? zfTCDk<)hS*<=h2fg-NK*4FlH~jyKuK0o*`@%!U^bmh3vPpITWmz{rj>g3x+zM5w{6 zi2=pvKJG|pP=vx#P=oc(0;NdDJ~IFILmaKCW^wAppv0B#EYO&Qk*jHo99+TvgmjrO z3x;l+mby+801d5AP+3?}%hujAs5Bfrg{hRFUEt|S(sXZWm_1S6(S_Me46CO*;gU(< z{9K^D^YbT9yBzMGz$}M3D!-cDoo}$F>-YW*h5QcHyx%u@@dhvXG5+EB1?2g_D$VE! Q@Bjb+07*qoM6N<$f(=AonE(I) literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/eevee.png b/graphics/object_events/pics/pokemon/eevee.png new file mode 100644 index 0000000000000000000000000000000000000000..127edea860f2717fc1dea8b3738ee4e97bddbc46 GIT binary patch literal 493 zcmVb>k6b9foGjNnH-l|-~OVn^Sq>2S$4$*8DX3J6;WHs`FFlQ){DjDoP zW$9G;ca{(Gp0U9IM~)mha^&wqIc^#NG?_?3{4-j!bS?rmxa0UUJN!u1!;Zm|GL?d~xh|rp>8$j-k%G zmd`EV1~D(^@&=cA=H>j|cIn1S3tt+7WL1Ga7ia9zQP&Mck|lv^2B}yA<&@PGP#2JT j^7(uosK*GG@IUem({YH+DdsBg00000NkvXXu0mjf(}3iv literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/ekans.png b/graphics/object_events/pics/pokemon/ekans.png new file mode 100644 index 0000000000000000000000000000000000000000..b23c27347b5f111cc446eeb441b9b245b6ba73d8 GIT binary patch literal 601 zcmV-f0;c_mP)N=b>wEP z8Ev|5p*<9KZl9$2exLQnLR{)nm%7xyDi!13Z7Am_=MH}aC>vG`m2>Wi&c}GR{j_1l z@Etw!cF#ZXHw>5#sHw%oWm?XFCk<rA$?%^{7sK<{0*Y`xvK=mub zq@O9kUDrJUxUU8px?YU~I~CQ>z?UUNVJL)w83% zJ$s-bdnZ!YbPJ?4nrdrxMVE(tWo^A(68{875)us=Kml;A>o(?usC$Kv`8Z$(qcv=o z#HLR`vw1T=2o+*JWYjnSdlu2b&L8rg2G>vcFE|buc*Rp}m&67Vuz8bmbC^7Yd>|VR zOf~rtFJ|7;$)V1hd{vKl4ZF>8`l^noms9@|J;0a`&2V6<9j*vtK8GoFKs*je4WO$r zXGGmqi!`^rrGZPJm>){_N}fW}cMUB6RI7E>l1NEs18KLy5@0005c zNklr3`HZY+vR7V1tH-!{`sVJnn_E(VVz+@oM_?c&0A@ku_!oPxHpL* z81t!5ed?bTtoLjT{)Exk^^PSE{7=}f7H>G;E)U?lEQT?V9&*RlL$DEeeUl~9d#?jJ zww|oDs0_ZxVz}>CuUW@nWlCIE?Yk_I%uPVg#36B5-)3MAp6=MO9R8Z0b;)Mnnd2TW z*@j`}WvFZ1^I>?&#!eZ-H3ze~RR?tZRRGRIW7spWhY9o&bi6kyhHSqB0aEW?J%UM_lB0iO$m|W;*KY_aPU|H zAFW>QAN3j_D(ZL($PxFj&4+;<52iDaP}mo}aM7iHEqSjUkrpQ8vpb!x;#hOz6}LtKAM}nKmJozW_{b ziYJR9MM|nkFRp>;lzy^qqf8s?e+)chQcN*7Lcq&G5#%|NL53_xoZ=4*C9mRCB?iIa zXX$isPvLWq7`phB4z{e=&d}xV$bb6@<^M^EV}MI8x#a)J;EX?=o2!2R^#caD?)7Iw zbs_CB(6WR+pG*Er?eeVKkn@KOdVF@k`B|0opIjcgYY8{UqvDl9hItTqk4Aa0-8(7$Rm>=%#s z_iJN-WtuRtVqdEpQBQlER^ACA5ToBo)NV)?ui^UDuL^BLvKJz$X_?$S2_KQ+bJl9T zfg$% zsj-7jm1H#)sMstlVigl(J5hRuQKvzguLd`U`bRk)!8A dep>QR<`1-Q8fzt0++qL#002ovPDHLkV1n494ZHvV literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/electrode.png b/graphics/object_events/pics/pokemon/electrode.png new file mode 100644 index 0000000000000000000000000000000000000000..6ef9a1aed703893275fca195bc3eca1c1a1d0d01 GIT binary patch literal 386 zcmV-|0e$|7P)VXdY?@`tS_V0lPRY*lqfz;b$CS`e;|{z+&F@dDpk+-~HgFuZ4!;A-=lXz@yWC*1lvI z#2Z?6ket&(*1lvdfG6@y+y)*Ull4o{Fe9Mf>;$xua}%B?XW*k`V2(#=eabrJx%EIP zSr=Tox@o1yvSFOlQtOqPyWyO29ZIlIhgQ7p#T5?07*qoM6N<$g7t8^#{d8T literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/elekid.png b/graphics/object_events/pics/pokemon/elekid.png new file mode 100644 index 0000000000000000000000000000000000000000..10ef20de850f405ab15c71deea8e389d953bc5bf GIT binary patch literal 515 zcmV+e0{s1nP)L|%2?RX`|bJYLbn2u@;bu5R4Dsp#R8mGJX zwvQLyL&6h)Ew*BQ zju!iu2DU(HHdu% zpisAyTi~b$@k;)7T2TLtj^2WEA7d!sM>xOCeqZ6Q#wTof0=>O5IcWd@002ovPDHLk FV1h1t=otV2 literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/entei.png b/graphics/object_events/pics/pokemon/entei.png new file mode 100644 index 0000000000000000000000000000000000000000..249d282fee512eb6d193f9af35ff46c5466b9af1 GIT binary patch literal 1013 zcmVgJK|3IRO8ADds5voB#m-=9K@<0M(QL)z#IktgK>UVh|7zb=_Z3000Ak zNkl#%v==Vm#qyh1{;p^)BJ3}RVpMkkCK#r zGz<{NcmPiGvk_7evG!w<^%B4UI~Ql#^ENn3b9sK8v*IbDG%CI?74JkA zu$C)+kMR?w%gkUgg{d;w1>CJlZxiOnc|Dd%#TMaGaT1AxsTiGC_qg|ZMqByiz%j4rs|*Mo>-8Et^Vr2 z!VVd|sSOk-wAa)(Gw*quc){S0RfpqxoJ?aY&m# z0Px%7!|c=hN!bW=dCiE}RT`>#D> z%Y=k%PAO66U-AojqZozTcf9l?pEL$7o7oT)~D02K=XV>{g!vz zV&JCi@wQ(ls^%t*puc^(q1&P@6&)50Y!y8i)znXEid#lfkg;Tu)i-U+ORHJMVEgp2 z+HQ2M>2P8D{meE>g^RNXqHi3IH_o_Z8?VE;y4sPqD|cLV|HSA5pNU1)f(0gggK;|m z4jfTiMG?;x2cm&H?FSp~<$SD?MhxKNoO>J9k4k%x8-mg>=eEtYLEv(sPg(;WxTT|K z%pD?rJJ5#2&0(M~lrb3tqy?oRKxC}zb14RZl8|Nu%0;heYz1K72Bx4ilx-?}QQu8L zX$Y~tR3O=FacNVB5JyBC08yAt!Tmee-AMKug3=IhuKWA@lr1v7OIhAD>M#Tk-rF`q ju-jiVGDjR2`5WU06I`@9QmIdw00000NkvXXu0mjf&S>PM literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/espeon.png b/graphics/object_events/pics/pokemon/espeon.png new file mode 100644 index 0000000000000000000000000000000000000000..599e9b8f3010fedf59ecb848c1772ede03c12851 GIT binary patch literal 739 zcmV<90v!E`P)h(#HV=NK0007R zNklJZ8AsnYSGenyKiH*T;?q`1jbLfPZjJSZlV_hI@!(@h@DDuF9*Q~<#&6BWq=-Q;MfdQNjD zc$ER)`r!R|bBjk;E|77oDUO1o#)84etZBNr#c}$&;n{`BdCs0|imu6OEIDee`L|R= zGiTylQ6Scs@q8Nayt8GGsBy;J0^@bPB&-?7#UhrKkqq`y#IH3Bh4t`yS)pc_I(D-p z%*@qD{H0<^p6yqdaj~EH_m-m}eAr%6(hRnat97ZubsSIp=LzC$>O4y33QS9)ZCwM@ zug`OWiqXZj+NG75t9{{8YyYYMw$FebNiqy!uF>z!PW4N5TDn*>d%W%BaaDHCiLF}1)7LfTqLlM#$2{x{Eop?aAb@tFD z1Y*ttlu@r)^th812iIjUQ8BspaFl%5I~kA#ccnW@ZgXx!zmxO#p_k_`xuTQ_L%Fdk zfT4abKC-q661lHX3NldkNwy|PJdq~oF2WNF^-4ap*8+j`wPWH VbVv#2JJA3D002ovPDHLkV1n<#Y32X` literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/exeggcute.png b/graphics/object_events/pics/pokemon/exeggcute.png new file mode 100644 index 0000000000000000000000000000000000000000..7350d289d2f859ad533e042119403ae7df47796a GIT binary patch literal 824 zcmV-81IPS{P)G3n4g}-cj4mb*n;>~4G zDAycrp7|g&Q=xwXblbz#Q7EjRb>_eVr&GZ@pM=Vfg&x|WPxo(bItU{JH2eDl90Cq} z7FMuK+Cw|0`{24FOezT@FAyE-`HE@RT}Xk%si!OqLpw&kg?7}z`#k{K*}d#S;T8XI z&+N0Fu;MleIgohuX&22M`);?RX?9J{)bI|gztz#Feh! zpvnU`79sU1KaVq(qj_yE@dujIobf}YmEMP}C1uWApURIp3e!~w??EF@2i|Kb_5@J|o?-`6{H$4O0(p~nXR0000w5dZ)Gkv0?L0007> zNkl0^IsbUDDY5?$@_y=?u% zirQ;{_9=&F-KMq2clswJv(3Hcne1tlwkdgB5)?U%s@h{PG8Z>#Y>TcevhI*-kHKJ7 zs8NBn#~_dc)fIW%N=c{{=I2bd`Fb?UpnAK1U@FT3TU}AYxZJ%!G3SDu%+GS33 z=+NkvgVhf6OD{656t(hP(Ke8jsx#_(Du(9g$quG4DV9$6nG5VHM3lMPlK<8G#E05x z=&nI90GoO*-IOeYVJRe7c4J-p3lh@zjYg2nHXcPApwa0K=Mz7&< z2|j~(X~Hmi@fx;q5>Fnmeq#sMKA=rFdCDRW)S@5}^dMze> z!I{?(EUAf?ev1X)5zp>;<#nGZ9&BhCnnfHZH*bC0yZ-z-Y$i$kk()lz&BT#Cv23po z3W(iqcS8vFLkrq%Zwoe)-JXW)o52S0aGjfW+Yr|T*YM#}>(`$J@5Dbl{s3sf!j0Fb R4VeG{002ovPDHLkV1o33h`0a% literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/exploud.png b/graphics/object_events/pics/pokemon/exploud.png new file mode 100644 index 0000000000000000000000000000000000000000..347d3140f18cb4b58cca130b649449bc9a8462c3 GIT binary patch literal 1096 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 Hu0mjf#cK2^ literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/feraligatr.png b/graphics/object_events/pics/pokemon/feraligatr.png new file mode 100644 index 0000000000000000000000000000000000000000..c4556981e35656c01e6295e58bff2387f2a71731 GIT binary patch literal 980 zcmV;_11tQAP)tU;V}2oMku@!1>t000AD zNkly&rTaL5XKjwy+lGjlyj>>`vC1Y7o>_Jk1t4Q6V^rosYIyZ%+vG`E=3BL z$-^8TkaIOv^rh81ik^txq%Sq7+Pjl1ix z`Ox`X!Da&QotFg494?y`hZP(mz7_zy_wY2Et|s5cH@ccH&5o`rc$dR>MS@e8l36wr zmR=#gEUa*r74M&OUBRREtvhW5lc(7vZ7D|43>y_3YA`9Q=W)xoW7Z;wn z9bkmMq09u$Hx`(l`eRdUeHdp3B@U5GBtb5npaRDfuuFanR;Ww)6s9cdn57tHG{Bu3 zsce@*ZP^+ylnq5W=kzJ9p<|7aQ`AbvLdt**J!{UDXVO)AaHSdwQiGU#P7PUG(vWS$ zMu^rR=M$f077H#V%Wmlj2UMP8t`W6D8H&0Q02x|#hWA5aYSevf;%(`eBHrL0I7-br ziQB?QKva%NP}vEsRdfF^{z9jWIyIzyQk(=tV=pz_Ys4vIBR}YOf>iiH$JG{F1zNRZ z5=5kfM-!T6%j}49lXA4`Ecr+F1OXp!I#b zxWlv+1xf+KrB^hyQNb{soFwG|zjZ8VY&f6)UHb*9b@emUc5T}L0000UlF literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/flaaffy.png b/graphics/object_events/pics/pokemon/flaaffy.png new file mode 100644 index 0000000000000000000000000000000000000000..6ed234f52388d3e3a64e53a019a69a452e62fd67 GIT binary patch literal 741 zcmVzwfc=hg<%udb;S@{#tnTLgqF}$(H9%Q)Yo-A zEIgf?X)tYIT?>Vl>WJnN2o18?sMocqNSMyO!x)o@#BS74XB(6Zvtv{dKZinpO6nPC00;bX8!wI-nEmDgK5%ma>bizK&-u_ zL6(quvUr{*?CXeccJutn6>o@VL{mcP;?idgklz>k1eMj@BH`JSQQCmEC@uwgL22}g zb22lsNp?EYDBJ&R$VX5+rDSznB&4>^!n9y;O21y3*jKReGpi`;S0Wp2}ZIt~Vmq1JLbl(`#f z?S~HS(zuwRwa2~C7pu+ekAc!hZoNliwm!%!gP1k6R|aguc?!3I&;EmTzTfX2{I~H7 XF9KQP)D0007W zNkl%)OWoQ!>r`cBP z2Hh)i!jnds=a5$}?q4$7TcFL$2J8}T&haU4wig+?wfh|>0+aJ z?X`CMAknLNW}X7L)~Pezq6SOu?A!FepZ3hb9Ss-;juSI)T2vvxIb|8|oBnL> z=BDNV3uav9kdq?lA#qY^>+&{_%iA*Jb%^U~ZnIm9I&!`d^cA{Y2H2iQnZXWv@N zrFUvKEnzY*IlVp?41+^K8;ys6maLasVT>ibL(|5Lf&)-;LmYI0v*f1CAqr>hX$P>3?-tY^8t&5Lr_6AM3!uT*LRROgr&VZ|D2>N!h5>m a3)>&NOgQN(!+L7~0000TK}}P=5uq+F);uD0RR90S5&7h0009p zNkl{$3B6s)m-U`(XgT zgxd>)-E5!ztqA?p#^HLag!Lbm;IfC*#*-@+*w}HRD6+B3CV`bx&(2ZL%FZO+a=67Z zVQS&MuqPb{JGm0vsA!ubFH9{QrW3hdh)r(C!_vF5@w(gfceA_nSkFP2Y;ZdeV;;+P zFv=a&m61858LGLloL~O*=9802Wv(t^E-T{MQd)^S$b21IpB`wCeu1G3elw1n(a$y|SY!U#h7L>*V zfF^-rlK^!G*I(mV35&V_&4TNSWDDZ*+o$g5@}3%jn(P1hEx@c_|1Puv_Y`0rm;`S* z{|YB10NG@nP__V)yXTbLNr&eLYN$gh#`=%}0H4mWeCYfgOvGH^1D$|MZ*y|kBzR<` z*5l`Lr+_%Q2Ut{_I)jzsoMSDArQlG=M=hy%C004E=beJAK8(rX3C=3P79Ulttj)-@ zdQ=L7Tg_a1?9_sWZXn44&+g$|k4#B1R3^0GBjfsO#ei`!%5lHeN3!XPWzX+So0VXu zp`?&-+)w&I&Ahxj5+Uyfe6_*oh-ib(^!xiCL8mUcjA5qu6~MU`MM_W~D!Pe*^b_&0 z4+}Hz6!*o@i>60pgQMJB2X2Xq^*7fNsZr#V@GatU_1nTu1pM}SgJJ?)jC@bdCquwvKVU3%epb7D0>GLijCK zlESyK8}3CmE`*qF@U+-qwZ*q`ckhXfQQ&4aRzsPc|JwKoP`uNNTsyE$00000NkvXX Hu0mjf1v1OE literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/forretress.png b/graphics/object_events/pics/pokemon/forretress.png new file mode 100644 index 0000000000000000000000000000000000000000..896b8774a10965fc4800bf0ead6c59af58f5ddab GIT binary patch literal 523 zcmV+m0`&cfP)h59<_wF~WW z$Y7R-IlSrt<51^grzz-|ym8picd`|rh8SQ}Un)d=Rq)1Ye#SYVh7wYBuZ2}0-sysv zO90MSxIvI)ItrqoK>X7Igj+jC4Mft2&}8o-uG)frfw(Md9|Y#{$y=s}W$K@_&#i;b zLhgx_0x`_fO1bO`Uia~Ot#r?f z0%tJXd$XIH>?S)TB=3B@&z$)^~cRuYXUxHEL)?H~n@_e*oAEu`?=+ zh|X*EPAkA~0N)uix|I4EKbo1a6;FeQ9vW2CHhb2t-#WSnFIpNJSjagz`^kZ=)}r! z)ef|*Vu!E&zFJphPJk&62nis=h{y~Tj}l*iR^e(uwXV)#VgNU27*T*3k*xvsnm2(~ z9xA^YU}q+9yFo*LTRCoZM736cw+lH%4V}Ysd)J1KvuAH0zn=&oy<*I8t_;(wim29V zQ}-7$qJ0gpjOy(gw)j%r^Rz;DxHK3t!k8b=-mk@Og)Mx5c1N4gGsV_<( zUYv`Rm-^z^-c?3KTZakfd`I+*^FgK6mM`_zvwyg8EsF@9Lm81aM|-Fl*6Wf!7k<(NO686thyZXTEwl z=S}UMN6fvo=uW>htxi_&IC`DcWcp|;RC>;0VEpm{sizv z2@s4kMgR@%tR&v-TbmX_8wyx}UXcz*V#r6}LwS=Aeb%o}#jB3Z+@n*)v`Q77(Dmbx zhfq!!@gPzAN!jHRu%Smj08PEbn?9bm>MpoG_zOQNhrq%`4VAWv!^kbjjGG!#*WD1n zRcZP`1AuW(YPtZq&KBj2XU9U40lnL?puZKD1d^DxqfSV>WiRqP4U7sy_D&!Fd41N7 j`3^f6-{{&Hw-Z|IPobl;)Iky>l^pN)Qkb`XQs!0006k zNklAAj&Z_L>Ti^=L43lkZvh0fr5rjt8XE+f(3H4%<7C?_t=d36m-R z+40!x4s;< z-tul!`%AVBN>6zEtUWid40zuKHcL6|e`!$o0jCWN14aQai|4T%b{D8xvjMeU^ZeoZ z`eQB~*3ae3viupK%lfugicH8hE5$>Cw4rJJV7^k-VTLZNs#5wdT?VzEBj>_t!0)jL z$+K;lDY0Bu=XZl`U=n#w&bO@-n>mgc_wU}086d-P3-LwJE9m@qo{-obcKArjJChZF z&1Yrg+3o^=sPiV}d+ojR9IxEs)qtwA@(25Nq%jI4DhLO7nwEKpd>o{8V zfvl398Qp|*L0+EPS#wK?S5ZBo1y^A`Apu@E4X3>s9!={Zjc{dnJ~zCcH4#0qjudsO z1H%ymBvEv0`Gyp*Bv#>qdWO_>5{HR&8@%LhN~i24lWJWB47%123Kci?uaBFIfNDJ&w*b{Xe-nG}+n4W9tTm3Hh& zs>G=F1AaURN?N7f?Y}nN@B8s@HGus}dU$wU{#APGaAU66Z`=l_R~77R-v~|(n_S2= z6VrbEHve#tKerC92MK$vR{>#an|_C*gT(YhiL+J0V8&kc)ZjC!O9cSdg-ZpH9DNEi zZaPpLT9)q80G&*Qp~B1!d_T{6$_*yZ)s49vuPin+qJcQT%#0zSH+|A3mh+4`E@v1L z=Uu0Q{>-v;h#m4%XyZUUl3z@$53=?W*Lf{N;$D~MrURNQeZv$AR1OykY!VV%er`)# zm*)@&$GKWs%Y*d}R~1Zb58@gceRo2{QS^l+Avu__Nf@@A^_DNGqrfwAfy7mVF*vX! zXpB5C4~gxTS+BqacKqg|OARMZ2oCS%2D>~T#T70dX*pzrFW&K3zHOerMdlYX7c6nz zuyPANkF*}L!Jkj~`Rl^pCKtIX5O=!B0EtCU_aBH>X5FxI>v#9`LlS85{44^ux^QHP zN0zwx@@b^Ayk_Pcd8!;lTfy5{(XTsNZ?K`4k9U>hnlE&|!HUk83*BHvbXltty_tImN)QkbS`o7S0005< zNklJn+TJQ<%9Q!kyq_RjMFWOk`I>h>TW-MlnZeQrr6%KL zg`*uJ@(oJ%lrSmd`}vxMREz8vb!)CU`VEMMf5Ad2FXf_4mF1=yli|?2z)o;t0o(fC zRJidw&oyoq(94aLeCB5cZY$Z0H5PK1q{AvdGw2YcQoTOniH{OREN8_k#{`-=61v3W z5!U@=2hcg5IWLGO*39tC9c+e20%lHOdbAoW$P}M457|&j;C*@KslS7aW5|Yy_Z0%P z?iCDL<#=MqUEqOa*$GPSB-}p(d;)O0p-r3&o3Ls-S=8R74HJj?Fr;M7Hz-(uzyE^o zzab}t#6DMufLdGaay;>I1wYM~SaFqueS61u{C2cu;-f;eHdvN$<`3Ohkn9A+S|aNr z`=cf4xyJNm@hiHf#-eTCu zDvUonGl*@#3qS{kakuf~1oUkNM-@K|tq#aope+o$jhR7MLvbaDG{gT5EFFj^V4UCv zq{6__1UHCl=IiH8E3V^t;{3%dCiuj;%Y-jF99HE4NJPqz`!W(>EaktG3V`+yAxX!1X_F(RR8DbH9Yibh~!Cd zWMX*E7V~qb_1d*XtG~6@{g!x>=2j@N3j(@y=6+7C?|j!&nY!PVH~kA4r!8N|@KTw5#iWP!k{X;J@jH5kmpF7Gep^YNK*USi*b4O|J=7IHbP-?21DG~W}U^Iv2nrSc-QOse?rM5OX3uG(@WYU;m53mxY2KIRdAzvb2e zebMmQ%);!!`&_tI@kw+Dyy{k{*k3m@e0If_b@wi^e3%kae7WO=&~d{pI`{sp|1qbI Z;ex97L(PTVS-{|B@O1TaS?83{1OSIKw1NNt literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/girafarig.png b/graphics/object_events/pics/pokemon/girafarig.png new file mode 100644 index 0000000000000000000000000000000000000000..6e290b85a9f0a1ca871d628e45ce2932f127626b GIT binary patch literal 695 zcmV;o0!aOdP)j&wGkTi-tJZmtNrWu z7Z64P!w4t7UuN$x0k~s?<6SS#>~6)=4(!^rAbTy(bWTUpPMdl*3o#|6BZSSEJh*+W z0o|xfcZBqU#OA|#KuEOM*t{bTd_{$^El?*YPp^5AFY6HgwJ*0GPAni za)efo2&rJ8X@mwPAxUKSkZ)gL)4Flp?h)*_G40=`I)qH&DKgEgid!wZyRZEC+ypju z(%E&1^M#P_eHCCD^W|ADAVgz)>a;mKR?pW!<>BJ-y2y#Xod&RgVKfv%I~E=b@}}Bp zB?C7y@NfxKE{FbY7l-9}0|QKB7HIEg!PFtf)vEr@MP9uID(Am%i=48m64-(1I#9db z?Rt%mvCGqdv+x?&SQO1BysFB<7MIuDo z$f*`6gk~xPEKtO*pkr6{R6KbUP`=%=Z5S}QOj&KN-(RwFPn!U|-DANW8&fz_-^~Qh d%v(O@_zSzRH}j-frS1R#002ovPDHLkV1j3qQTYG> literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/glalie.png b/graphics/object_events/pics/pokemon/glalie.png new file mode 100644 index 0000000000000000000000000000000000000000..e05f72dea1d64fc182b8d56041febe987cc32198 GIT binary patch literal 530 zcmV+t0`2{YP)jV20<UU~VD%)1K;G`e)p^vD_i1lK*rk zD1+b%7BXN_3IQcAylge*qQ@PtD6}h>$2@e1?e#`(4xB9JlBETPbZ*>x-4@W}(z}vn z2ak9?YjQ)koal|MuSh7%_7YT9itQy<)}g)ml0Klxh$V5dZ)G_hi^R000AP zNklr=lT%R+8f6XULEuX?d~m1KfoM2!9kc|NO%-jnMD$d;E_EC8vz(07#gg zXB?*I834-@0gRY9QuNkO&olbo`005@C>h2x9Oqsz(kOZjd-rb{1=xv$Bo2z*ltc<1COec&`*%F|u&q&7gK5>^ty^J-^4O}llI*qC6$@$q1>yu3v;9SB_B5=_l@OgfX{w1xy#L#-pny(0>K zBK1;Dz~K%P>&S6%gm89QAE{?okVv#3uzs@!fsGc{k!S0Or4ta?PL&Zbh3-_~P$hP& z>TXao!-ahvMKTvysi{&mhOgFZCEyhJ?Okl-W)(hUR{>mXES=@Xw0v9wcdd}#TGrVJh z%2Zhaa1@vm7x2S7C1lzJ0mC^z^mws)IN-;}=;!L8cl2p#Sy!t&Cm=V>n`9DhClYy6 zhj|2y`7s`ZxL$^MhO_ICFc@ksG%JqzP-GY%6QX;O-W?ee!)RC%k@6)v<)J=Y7_vOa ztt`+vj${#&Q>IULoc0F<=FbCje?YI_hdS`ZKr$LenF0004J zNklb;z7zN;e&X632smwtgS%?^O37C5brm{FvCoG|!pz1v;InD(_kV*z4 zIe(o{f@8^{7zwFT-uAtR>_7k*GGxe*$HcqhyR%6=n)JB7(xAW+vxGs?e*i2;p|31FIt;)P%oSX}PEft|cMOu=m}a9#7OTAK0<q?910}ir5Vxg}AtnUNN2=xoeiMIit8AQE7 zu7#dh1RSp2>?}wYdlbTazzJmtJ{u$!dW$Qng`SuLF28IQT9Olck_(uI%fYDU8#P*) zSm>3tx0-d8SUjS=RUtSpSq1>!k25+pu%n^g*HThYH-0`N)(JpKk?pA_M`a61n%!*y6ZeytW z-FKkU=gq)n=A*FDJuwIDel9Vf_^`wg*_;*`@P4?f<&z)RM*-^Y@DBpMWbmj||M;H2 gtHuB0fc(GWH!dn9+&U?P)+di43ZJqRDO-C_gErV3poztYRRPu`&fAc z*(}+;;`|JeSF&s?cRoT$x6^%+_5Y*MNJi)y*SN+I_jC3>&q~ zi-93bBgi3q+mQb{(&-YPmqV)+;=b2>!w})9mf>WD&+qM^g}mCP!ErR?Vmlflw2mqf zO;Yx`kG`gy&l%e)kdvsT=tje+s%zm4b;Ut!Kn>G$;ORNxjQ3lgu};-yL8|V&8$Tvp z&x0Z6B|x=-#OB9h%b(M66Ww!`>6244#*jD`J2$7#*s$Fni}s*P0*N&FG$Rjdx^5Fy z4|F{YSjL;gR*OKS&9D)~0X1Bh4L7kC6k4!0>zlyxgEMIE0K|^21N9o?(AE?iK@8L| zvj%}KiRPp*f&?rxR{$dQNUYWg^*A2{gHMGMWRPF@n3|Fhpsn6fpsXMXkzwo%3eXW9 zWt-2r%X$SClxe^USQWO$@!qg4i5A4GbC;t*P+3Oq*cv!!!Sk-5b51Xf$m0D+c>MZ7 z3!02imZj|@h0Bwa9UleBS=O$rb+oZ~f~=IGnzQL5-4*gFh9CQ(D@bX$w97HO-HNS9 zUEAZekW!4d;O72TK(Ios?V6DlUA&hTf)`f+pD{CU(;(;@B6MhZ_NcFoZ4=8Oa_=R{4&PUkntDuBqjMXd63_5b zh3CG&m`*rN#(C6zncU=8m^9Nf^$agjK!Uu1nZn`QeA;L44>mV6IV*nv{Y(7aFY_8p Z@f%jL4{^`wT~q)7002ovPDHLkV1jvTWmEtF literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/golduck.png b/graphics/object_events/pics/pokemon/golduck.png new file mode 100644 index 0000000000000000000000000000000000000000..82757bcf69649bb5cebc1612400a87e30e4e30d3 GIT binary patch literal 581 zcmV-L0=oT)P)a}fUk|E%8sl(f}ad#o{1Y7h_*#W~I(0005d zNklc#16b9f2bjc8qSLu>5Ko8I%7wBCAbjgswSL%=<14-uqB1Ire29omF zK{QL!f%GWnS%5PY@bmOh;!m2Eo&hd(sY`tn%b%}!wVZYKD_$vPU2ry>?ZaTOq?vN2 z3+imwI4>+|CY=&qov_#XgaLTeBG6`?lfoI&;JuLE(uPsU5CUx{a#`9wQ=Tv{_lqs* z)dkjE1GhWcT^Z=lHpHJfZ*NKSSMeED`q8*J810d1+3a}XQ5j%OK=p32S3=46 z>H15x!!MF_dlU#xVdsGUexq?fv74P+lM=(Ur&Rrp7wE;dX$_-@vvXhUK^-h0)wTAYhHT1pWA0RMx7gAfo9X2s9E0006! zNklyxZ%18 zQAx>C5+^CzbZQYH2>e9z(UE9Hh{t%0$M|ms?r`@vTp;d$#R#fuclUFlp*b~PFhEP6 zySdZ~QFk|4{0Irn{$6&v2hi0`E)^(^Ra@W76_tY))eRPa)bu5T*< z1!-IUl=UJ^+rDPuprHgwKPo-|Cf=`j9mgz`&>Z_}&6J>O?`dKRGlNYW1w#ueCTw@t zxIn3-lnPZXt}zKE9$@Qq4I!cL7FMxf-%8{Jt-`7nCmiEj>PabkSQ>N9Bt$a;%xHSc zg3%-nf@17YBjpg=YYbrN$6^w$nT37FLNL!EVR}g%3r^J54K0es!!_>Vlcn`Q*{IN$ zYi40nKg0G#w(g1f$t~Q4g5`v=qN4$%GGW(!=3!>xmycHVt)oSYD;C&hW}!A8;Ol3N zWtcHV;!sfdLTlbOonD+mM#hp0mh)tB1cx%7e}QQW6SEM_JkB%b7bS7IJi^Rpi#&-3 zHa4QC4VkC_E<$E5fce061_|jq2@)?i41~0*Nk|2e*$qqFJA9kSm-4;)Hd2dZ76*#a zO)d#Z&WuBPb3@M@g~A1|_yE|_WhES`mQaTX`z=Hz)p1>Btfr7fP-#qY=c#nk1@zdC*b X)S&x|>tqx<00000NkvXXu0mjfH}^E_ literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/gorebyss.png b/graphics/object_events/pics/pokemon/gorebyss.png new file mode 100644 index 0000000000000000000000000000000000000000..7c4257998f0f0eaa5c5628daf2987b6b32c45ce4 GIT binary patch literal 806 zcmV+>1KIqEP)_^tH~Z zfB^0Hu>v<=#;?okt`tm){J5wDQ43&0-ZBbZHUa`X6ijsy`2E}pc+XCVWs7R3Z(6ZT zKDkFw7+3l6P#^%@OXnEuU7i)d34k@Ytt)PtvFwrK)CjALWfW+>@Cbmc8I*U2`}t!B z8ly2OiDM~;Rkp$^qksZ&FJ7zx;^%#b;ZdLw8Y2;ylBx8CE^{AfHoM8{Q~^19OwOvD z2f(qPEzbb?kOvf%1WhNnT={}V5(wC5fQADGLVjILs)K_lI zM(~Bqz!#=j=NcpxWF)U1#B(~@t>wqm_K23!U(@YUcCVBp4&atdAP{cSPDeU{5n}F@ zqdIJoObE?zm9V%@P#7P2pm-tE`%xrg5_aKZNQ?@(lhG6kJ*3Rm&FQ8N*@5jxj-~6MU(JW){de{G>aQ!y_tyWn2c@>6i{H>Re(@FJq+^LZ^Vs>fc6k88a3jRw2os@oI1We_AhN#v;U8Ha2n2U8fpca7H0?Hkb~>VAJ2V(Y z{882~Wu1}0IkQj{JQc<9tHBSw;b~REFFNmPeZzK@B20I5lV`lz6#}3T$45=x8_u4K zwSz$ktZz88Qx}j*Qeeg}2tTB}fp|1k6o&EJV>X=_;Y8chObmgrk8UhoMh{ zM^l5w@K8=ZKn&C$d6;hGV7MWtLmh5;X}MD)KlVTuNi%e{^|OdOzT(N(fgE{kXQKG! zYB^~2%yJq~=_k)k(LQ42_=p^~Km zd%Oa=33=ADp7pGMSlDJ*+P`fu%iMssKY#bfWlg47_9+5&h?x6(F4~;W{bM2RvMnQp zJy8L+T!7;)NJ-#g9(TR@u8`2!Z&yC*-EW9f#%%wL04 z`dkK{qM=_>50WJV&zi>F33dZtd=s=HG83C%?fC{K^ilD^uX<0|!BBTH8F(J!$O?vH z=1Rk|3VOr9D3ES~$_pw`VTp?uSZ{_-0xN(KQXtQ~Oa3Duh*_+H-Y{@n;RLx41bhu$ z^c!!6{z}d@H2psGz?F^ug!MwSJID02 z=XX%*9i|H|V6E|j$(w%R`u;j)to5FdbRVt$XycK6<3b5HGXwI1NjbilMW%4qtV9LOD4sll zB@H|Aq3<3SrP*(lrHuYY-zl>E4~H^F@+xyda;{(X3;GEE=lTL~=m6RqM-WW_0000< KMNUMnLSTYASud3U literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/grimer.png b/graphics/object_events/pics/pokemon/grimer.png new file mode 100644 index 0000000000000000000000000000000000000000..c29dcc683ad92ff204b2bb2b5c189e54fdab7119 GIT binary patch literal 541 zcmV+&0^5d*41iA^lACyjC<9}j0+mdChKRwJDHFmsp{N7glxJj!pcBtfAB6iO zq(i5wc>509pY4RPHP%>TjeivC`uaOpzpGc-+0O_Hcon}iDEOfs_HceBtg={m5B^3x zgP=YT)&&&cyo5qdpM`WE{EezTfIGlUSPAqJ=0bsmTM=wj0RXxj3I!#&4Q4{nVIP8x zctQQV`asA}F`Qzj0JYFL32hVzXd^oT7fg_`Srqca1`pdZ5L#v}^>bGWggk5X$W{;t zS-so9Zfg_jL1;Njsa~XZrBP`4^NntXW}=7CvY?v@DN4hG&@hYgcYp-V$o(jERuBph zbHk(1aHT&hRa~wU4?@HIj(LiR(?5@=523lTQoca>!d6PksH@9y;z4M*PIP<3ww!nr zw$qKcR4sIvE^$;M8L+#{i3g$K8V5uE(L6X$&}9}KZ%}k8$_3_kU7vj5?Kyu@vtj6~ z;lyS7jmn}Ysa#;LlZngbIY%9ivB3Ihy^}v@rL)U^k)wWS*)K8UwU<9*)>Ak*V`@q9 fn!|jL|8jf-T@g5RJHd4~00000NkvXXu0mjfqj&jr literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/groudon.png b/graphics/object_events/pics/pokemon/groudon.png index 3d14c5ac9ef670f03bcf7a4b73a74ba7ffb70a48..5e18f5954f9b21dc5d53a31537a6fc9c4fb2a581 100644 GIT binary patch literal 1698 zcmV;T23`4yP) zIZCXQq?~(;ds<@udxLu*DgPiTtSLGF%`wHr&Hw-Z|GmAOYB4!EIS>#KGmH36000Ip zNklUg2cXeUW}qu?B<;~Inz32eim#$X-)K7)1KmfC{1(I2;AXLY>N zC_#feM~7Q-Wg^V5h|T$<|^rh%(!c&Bd{F2k7(jX;nCjD+C! zXt%p_NZne;OPRCmLz<-G}?7> zeT)Cug10(1Q$&$32=g`;M}j0zg~-qSJL`BQJJtVu(D`5bYDQ+Tmd|XF;nY5sV}6s5 zm))+`(KsS1Y|V|1L>{U@_Xb>K(gZ}X1~zgwoyEB`X!w*I!7#`Cetesc<*5WN7XH&K zu8_wG!Pjq?L>&7ZkKT|oq?X%bC=6-{j6jgLqxAPo{CzxCpkty-SNsGy9|ya9ORwPS zWdyJE8%-Lhv4Rlv=n3i=@nO}%96Yg1Fp^Fcygkxp!QoVO4l4H z-UiLfISx9Zcyh}hZY)=m$%KE+&D2^DV?V{WT$8*I-kaO`V36fGIZ6yWK*=?yw=?*A zA<*K`=TUOY9|pj_zIruO$vhkNu#Wv2yXCt;ai`9wuFY3NYX`Zu)TV=3U2%KaB^qV> z3l4A5=d&d>hu|*v9=;mbD4okukAom)=q=YIN69B*$F2q_Yr9?IlFROH#dUAIbMA5e zR96cX;F9IXcaM7kGRwq8M@H5FE*JjW3(gA8DUJb*g;))gQgb~LiU`0gj$q~ZAQ$7r z4*<-~6fxT0yTd*1VYHZ{OAC_>fNb^1J444c&2_A@nZg9Wwqo4#tCU4gL~0zz%as37 z(za(-6&W69*YACYaG#R~p_{@$f|c&+%zB*V8@O343V(y)o>4>_V$oPF4+dp~3x9~% z*_p=b#TlaE`s}?I0Kd_kaeVVwtfOY_p7()5>`)#ghX0DbOI zCD^5yTu1J3`uP@cuLH%&3oeS_O(Epj(A`dR76UK*J=ZbSrzdPzywf*QX@L&irJRe024}J4$P4!b*C6?e!appi{gM$lfG=DPfFuoq!A_5l z$A7@zi?HM_Cx<{;qs&bJ(Zd}B!$r*KFvkGExD4Tr_F-^NxO`PS6u>G=a-HjRj^BQM z0OAf0o_%EzmWhcoh-Ksz>1P*UnClqU0YnL9P{iv1Vmg3Wr@75-Vt@|dmWKntVdm=k zSM^)pdRgq8w-mN`Ff?aUVhb>?%4JMVAxu1X+=3))1PvBvpIBuPwGaYS+>qPx(jx|k z0nGlqo(U?89k)gWct@2p12d`UB34jcps25Q24IUO!!?;8# s@pQg)5tv)|A4A{!o&JCP{{NN!1#kE=Kjq(=egFUf07*qoM6N<$f+g5XbN~PV literal 1052 zcmV+%1mpXOP)!OFtG1lB4ce5V+-xBe5VL zRvuN>dFCcjAu$^)slT>zhe|(j@!`Ynf((K#!jgm2IOFRV7yM6fm}O!48@{faDf7j= zL)4sQb@>}^X@f2{|LLg4G%L!>9HLD((?TB}UvLy+nx+|EW}@1rSg3sebmyo%6(C7S z`7$%6H2}r&_}o!`q7Y)1W@iqL9Fp_{fN^5Z9mU7>0ZEk%sl3FYBmh8BP4xKO(cV%J zTvcG&fsdR9(Wsk(ulTT+BCw(7dmvFWoN1 z{L%A=Dl5A?h5x?G@0Qpn>>N2VI_@_uv_OxPrH@1wcOJh9ew~e&wOM*P`p;k zV3WiTT9tc8xJlGjYtF=RvO(tIXgFdnHkojJ^&vA$+6NszB2JKJEA$_Yxsj1hCMnN{ zUcdtO6=8Rb2gY7Nws8#*r>J~FH$IJqVghnL^7`Nt0bGnDJ{4H(-g~VE1-47*;#y`= z!`csD6v^!U@Chy9A{xKue*JB(ax&uH7HY@mubqd0OjJf$-;N5$pwmhr|DFe2F`;R!;Ktlj^)nzwj5! Wi3Dpb31zwf0000)va#zAC)m<9-qCYVnj1+gV=cafv?zut}}0q z=NQXOdELvL`-(l>>8#AlA!l{gs->GHm)xhGDb^!ib(05C4mnF!Q}w_akSk`Y+(c=+gRjZ7|E$Qa-V{fR@{Aw_iSf0!0f;9YXrVtIDIIxvmo01FlvI?}M4gK`agi{;S< zE?fiO_IiJVp(FjWo6mRy&tiF6(7!jK&j)6Kp(*g~W%jAWkQ0pn=mJAi;0)%C7&49g z0eEdjjOe}Af#cQelO5=Xsak+y%p1hRh(GYv`{jkEk;(LV%oHE$0<&_^U9n!bI~OpwuKM;xecJNl_xxU4_YJAi`y6Xy zntn<8#C#5%EL^~G>NVVJt&~yyiPN(mU4!G44%xBKBNW=%21@zfx`5)Zl&+x-+-t>d znXq;ZDbS!+k_{M|mn`sOyWQ}B!*=`J@@FJ<6|u5r*GI85dBGn_SGAsvX}y512>;Po xy9@KN5&mmMCy4xt{lF&r<$O4F;fjB>z5x0-TkFrZH>&^u002ovPDHLkV1m)mDfs{Z literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/growlithe.png b/graphics/object_events/pics/pokemon/growlithe.png new file mode 100644 index 0000000000000000000000000000000000000000..e0cb9cd5ae869986a45294d714844126fda82384 GIT binary patch literal 597 zcmV-b0;>IqP)uoEaMr@H4gL{*yu z8~k%d6EX)`(G~l)L+K0^-LrNaAvQhY7%-Q`MEB?Wn(ze{GA69|0vEhS8!#`vjrh<4HLDT;|H~kng zTQrJvV8lx3%@IDUhXLUI?^k8H z|Bd*3H-yaik^qpS%_ji46`WywY*bNE(6z`EKFK~w_t>Xe6U zmt6JDJcOO9wWD3ormTCVrl1+i)|zq(TePLDXaUb=K~ySimd^Eylfatp0O#UDFQRp} zo9j-XCOu4biex^ECS%+d8I#dd)3>If1+D4t=aFUF88F&^p+@89->+eWaOP_voR_0{ j`;Y;L--!k zl$3jWdtzc@N=i!qwAJp5tkr6R=B)0`i`BGqy?auNoJwN$&Hn%Z0RR90r}Y5G0005~ zNklU4;Ds7 zn<58@Y-g+|vl@~zFs~T+B>8``7@4t0J?c@9`n!TE{(fTq$4$m-6)6+TvVsakl`$8q z4;im{`+n4uK-G>nfZhAb? zP=*HX&6urwQ;{QBY@?kC70njM^`|e!^kB1Q#YcGJW2|nLi(`P?1+ER_`eM*OjVF0K zvk~;`iUa-)|I28y^>4l4d!Q;V9!`l`ZHc*oX zaPiiVaW}n~bY6dT2Zh(_>USH#U5r1N2bnE82s zerHnLGEM`bXLNaJ;5{`DOd4=azD!Gp{XiPXZ92F2e*Ipb4g9zD8#T6?QK!&E7ytkO M07*qoM6N<$f&kYkiU0rr literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/gulpin.png b/graphics/object_events/pics/pokemon/gulpin.png new file mode 100644 index 0000000000000000000000000000000000000000..1a3e0506028df42e39e052929eb0a004b4f03f31 GIT binary patch literal 515 zcmV+e0{s1nP)U?;h!fKl$o#B*ULG3h z^R`M>h>I36zrEF%k0_8()k)Pp-&)L_Mwo3EM;u`Bg1A*x_Z#C*Bh0f@rRy-W#5NQ` z<~vm+>T&4k*$b>xna;y3GCQ!WL(F3(r5A~EXQ)c>22vJa2SOcU1F4iTxCe{(>EC<6cc81!MMwp2Na)4r3QE7QF>>|frV8(lPhJ4qRgRDc$*j1;^^2sx_TzCaW=jhcYY#>>A z8?iU7+~9A4L3p+NyRMP)CSq(MPy|NoTD&4X%cTGfkU%`q{QAOHXW0RR90Lt~Xj000E3 zNklCS(0PWQGb72e?@dZ6RFK7IX@1|)nLkPt{V$jM2lf}M;Ynus z^Mc#@F!Y#1$awq|=L;9raXq+qB)ru*jGti|0wBguFoU$wUta75$3m^f*@cXrWXe!U zs>Bn_7BZQP&ibm4g>iN=N}R}9tq*u8aJoqZuRqL~mt@nu{#a-xXN$y`oMnspfLkFd z;nwOV<@pDh%_R0q?Wg=$s1mi{nT&dYbIp)3;*$$$^{gLq$Sj2f3z~NCcPxxk3Y^)9 zy=-hw9hxQ5a}d}#XXZ>u&HEM|@*+v3<67JNP}p%BXlnM-C>#=-S;CEH62_AzSB|U1 zn$Qvy9&oI@+tHl9|*%vrdARm8G?OUwwNr%fMxPoYMyDgvgyB z1U}}B(*Wn$mXA3JVThh8{!k)P-g_^{g4%!nwq zjgy&dtV2d&%%_uhmLwByeIN;SV6YCT&BYH~O+_L#^MX!@1ppR242;J(r&6abGntmH zkaH39B;gPOy|80QNO1Z2V#3G5VnKdg1tGU}5cGj%731b(E^WkQW-^ORLdA3Zp#f%fUbJu-pCdutg5SwT%o; zYSjjk(6dmL>I7TthMt-*zGV`I64@6pqvUUVNxoOI8k9YYmg zQ=slguvD%|YPYw@{ykh33!FKo36lEvA^Jr)(jC+0)7glbu6di&p=J zp@bafR00l(4{FMd&p7($I&os3<&40I%;p8NH zqnp!=Q`9N`=J%(kn4Ay1Q|x)4hW*uXR%_o^N4YokkPoJ7<_Grt{_-f3949p57-tc$ z{Jz{f^)V}mSrr6LYF+M4iD8JlMSk`DV3~Ly^GLBjg3m17 zy5%{((aV9X(afZAIg2dUS!@-(pZxx0d)EmZ@TX?_zMkbGM7xK9l?KVkpyO zJ*hS{^a!Pu(mWneok)bQgPgH%=XC_FKm?Yh&9ge=Ipgagrh#cB+h;=Kr|lx=FPre* z2necqC$2(0VmrB&EU6|Lv@yYdVR*E10^|H^`T4u#R*^*eEbAyZs~Hn06?xGdeOXFSOEefzE5?)5cBeGyuh1KVF~#H zAX^ro4WfZ^Ay~@G7o9Z(ezojQDsGFM(CxNt%(nIf<)eqY(lU`CVON$IVF0??p#8{j z9T|suyLRZVoS1{9;;~`rk`jjr`Vf?yC0Zb&N(RA`W1@;8h8UhZ0nNqSF8GyW#$nn& zu0CcRbtr_JF(<*0O=zdqLmHaRzWFO=n3V|X@4fAN}GfsUt6;4! zDwE|*wj8(Y3{MvtQa zvrJ5#?+l`#-YR;d2{sZK%^{c~ADfLf(S^aD62Z!K6yOmz0H~;_u07*qoM6N<$f`%Iq1poj5 literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/haunter.png b/graphics/object_events/pics/pokemon/haunter.png new file mode 100644 index 0000000000000000000000000000000000000000..9529676ee0e95aa313197adb0138edbc28428b86 GIT binary patch literal 540 zcmV+%0^|LOP)tQd9cdZLl@*yOS6q58f`V(#u!D_lOm>kR!*+4gksUJl?c^ zTv;YRkGc6l&uRqHm1oo>WLbz2GU$P0iQWKMhj)(AYHg5XTA}kAngWij0E!{3D^IM! zTjM}8ObHwEYYXTYi<<%Dc^1oJ)EXcQmeXe``Fmh_F=Sa<4Hs~cW1&90*6tEn_QlWL zIi{9>UD|*hQ%VnOZY;})B*IOd}fYf!wRCA_)Gw%Ua zcA@LMS}dCQLBU#idJ|Ak=`B_a@~$HMh27GQ8syP_Bl_$HK}Dv*9$| z=?v}35Ng1MYrv&x-6(3g7}A2+3==Ml3+FO6Qz)&;Yd|s48>#_kzbx7cWQfhMn+;3j zHp6us$Ne>>xR+nH)vyIDhEQ_a19%sjas8`ducw{Ef^zL(qI58bw@SIAVLHZpgSy&P e|Ft{ypZWn^8TaEDPu9=?0000i6;h literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/heracross.png b/graphics/object_events/pics/pokemon/heracross.png new file mode 100644 index 0000000000000000000000000000000000000000..14f61aba512dda72f4f473fd51f863c66b045fde GIT binary patch literal 753 zcmVjb0007f zNkll+s=O=+jpy>-T-r5_ z!C)u?YfnXve)QvM$AdqshDkRdW6U;Lc^;!q>5=W&Ql=Uvx<>(MPOLpwV9K)dj`@Mg zmT^yxBc*ul&G#7CZO_ex!3ZvdmU8Z3WpZkWEj2MwD7G9Q=Cpc^z>g~C<@MCI()0MsP{J?A zgBHm_u7L^wxMFI$26MYQpH~JTu5#OR1EO#Y1VyP9u1`Cbyfnnz8QR5HubrRlvhyZl z^TePyy|6v{&A7v$0knvx{OnWm`?(=@mT<~Bl_cGRZ0++RN2bf;(Neb=pR}F=wM`>- zb!s?R;2j0IJ!Q#x6L8S3Y+${F!WNt`Ccdp7PhJzTiT&a(=X+Wip)(a;Y)2@0*V(wh zY;3Ft5nyW|C+7eH4g|!84aetLGEKKY;zlQUza3upmV`h|{z_){{c57E6A)l)ASdhM zZ-5B~{6=iO(1pX)i`?gqzil2(^RXc=7GR=_`FR(@v*Q!%AW&6hU_CdFZa3|6p8OCm j47{>Py{L=Vq?Dv{VsrnLTIOOoy)h7rAOQaW|L)bC&9r-@i&AP*5D*X$j=(rEOd0Z+;%7cTjNd7P1~L0j_=zPkgQY3Jg&%H zSNP?3lz47?xGF@xB8Na=4DbY*i5+6c_%8c2exL2z0Y6xqFu{0w2z-422*2wBqu<5} zNEM9&rY6r+orriz50NvALg9D-ga!<#z37!wv9gKB2GHl8LoG!b%HJ-hX!Q~%- z$~HP1CzRn1nI`a)@qGB^fob5ZR>o&XZbbag`T*F9;rtyGBX$4)002ovPDHLkV1lv^ B49)-m literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/hitmonlee.png b/graphics/object_events/pics/pokemon/hitmonlee.png new file mode 100644 index 0000000000000000000000000000000000000000..2e466c065f6311819e298c2d731e6831e088296e GIT binary patch literal 540 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 Wz4$Zjf)-o=0000JuqQoTVrV(xQ6tU)v*-0004; zNkl1aKSZ0~k1~9RqGd z;5h;^@`*(bl}%6PdB3DR%;=HPX`&}{fUAy@D8%zXB8TqAmx9q>haNOTff67wg}8Tz z77l`epCJ&ZgxD6PB(Hktp7y}DVE(xN=^>VNsGvj;Cznwb_C13Vf4)~0XjY7DYb0{o zqO!rjwmj^YltlqON&=i{3->(~&T8S9bdCWf9`;m)M76t-LVsNi0fV#P>DuGWS3qaK zmBM)6Q2??9XFHC*UPNsxg|VwveSZMHt`5M9-nCno!cesU?GZcAWpDWCMDJ46r7#qV zZ*m+^l0vppKjNlHQj!#AI98&T;$z#|vVp6Q2ZamU`j|w=*&@4=E5O49d;q-5p0005b zNklDSqbzRAlZ<4SX0V>Kr zI4%a9A?~`$+gKll_Z}n$;Gu^edg$Lo+2fYC#nfHCT&?I_;_U+7FsrlT%Sj=!)49kS z1^kFg>4w?aHjTWf5^ojoVe*s(teBB*nwC_NHwpms?Zu=4YbI(Mq9QYoen6ENn4hh` zL6Jd|ZmBJEKN*TLKeaw`UuM>gM9!!Z!`oz-ELgL?o@tqx8;FK67!uBm;gHy2GTg-i zD+Y4~_Gom&F*ZstSi!1!dymjZHT8$XO;+{Q8zJQVrybR#U=gtO_m2koH+yn@~f5t{IA0NY8;U7xlQ@dM)r-mm+vMv zf|+9h-Vr5+K9IRH@x;8Lg$dc0x_(y6j|wvf(mP51yTe!j{l6sn41m>N zIhUBSz=Q$b>-rT+>4j;Yxv+N_lzh)vzFL;D>HF+`Cxl43a(GPn z30>OX?@3mfp*q^^Mwc>QfTPW?XO=DhWB_tQCReX-3*>(J@=pdfwNcvEa{4fx3v6Kf)OQw`^SB8-VDf#s<8N zr99w0v&ESVkS^rwoq>zOE`J1WnFX-b`KNh+O5UXPXsZU(oD8_Kw(}I15#m~+4+2bBa(LuF9P)b>!3`IEJXqkMkc9ahrrYj7#;$Xlh4$nXb2)rIz!bC6{XmM zw|4N~o<;G~CTW0OyLRpRFABh;a@%=9ic98Ef)8kY7`O6*p_;I8U}J@YC(?$-=q)xi$plPlz@*VeSuzvd#XvzZ_hHF)4Fx2$Q~~jKi;=HlM`>2tz;E7N>B@ zl_3N(7!lA-ct@P`IdrVwn@nYVZP-OdE1D7mA?RsfG~$B z4X*JfQGG-wha~M)v6&FY!Z6)9aQ0OsLNAR4}{14F(vGd{gVJ&Z!otiTy|*;#@FQUbnG%1J?yl< zu>GaQyE>B9!g|S@+)ym3)^ZpO27L$PPqyBZWmyJzj_3F{u}B{e-TvEPRSD3mwjm#m z10z&}O2V#+Wx(+CaayP5JE#Mg#a(*h>4!)yBTyYsT12s%ydxWkJ z7N}KBa~U=;VIEoh!Fa|oY{u0vYZ6koP0JbQ+)m&bE)g*enjMYi)8=_=+399PZ%*7P za1FB!Q5y2erz6gj=B!S-Y$BSxdoh`|{eAZa+hW}hIfdhwJZb9H>n=AP)HnEkYbEf# z5rr;8{skXjanaP>e8&CWCE4X*Qz z3>tP~aCxy4i~_Eci%MAEwr`Cnats^tEn!)Tpc#$Igdk{>&`i1v+PoAzN2}$DQJ-pi zj(z9TJ9Mra7hpw>_h0Rj1)hJly-F5Sdl?pQmt)JUDsJqArr^!WT1BRSnGUkHrwBz< zSOrM1v9rz-ChYB2XJ98}<|D|hDKs5YbJ!(LgH1+E*afIv0DHR$n}Ta+JAN3f7EXh< wcQbGkx_SsFA!Y8x{r%Q&vT1PtqW^9D2GOvEGq$%qr~m)}07*qoM6N<$f?&5uG5`Po literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/houndour.png b/graphics/object_events/pics/pokemon/houndour.png new file mode 100644 index 0000000000000000000000000000000000000000..4397d968ecd044c427ee4777a78e692800d3e096 GIT binary patch literal 549 zcmV+=0^0qFP)*cf2x)b9p#EhY(4SvZ_B z^v>nzT&cJHE`IOX@gIO=9qU-fI-Iik{|xtgc#nM)pGCRM0G$z61l)i^h@8k(jdiuf z9geVMh9N^`KjP-v$(-s`(|~}-@sb&a3^tA9UXqJkYOVV-kXXf&C6c_5edl5v-=;F} z2`J94kS-`>za`(^@be!YXieA5IWjBM3orqz=@eJbWQ_GgEcjr z7-Rv~0X01a4 z|Nri^V&0ShoN7U|?(Ur4_It(NN}RMYVtW7p0RMxO&2yBLIa<}l)ue-z<_VQw000AS zNkl4HIYH>(jp%P1gy(-)&`#VMK{^oTtj%hJ zoybzO6GsFrz*{GWlQzFj^jguHZ_yQrYf84xHU_gczZua|G!o0%v)y>V;9CZ*aAZ1| zie_SjX2A_uj{E&C+-q~Opn8k_14Fiki5VLP9nDF4yR5TN#ZGbRX z&L(15V`On@>F}jd^Q6mHK+#I94B$u!sgJAP9b|;mVc02}S9^+N*o#_F(MpUkFo+PQ zgbei)*(?Uj@Ny^1V#IZJ_0W%jBIagd%v-dcl!>9B>J7_4tffJ+)_nC8tAuNyx7_d` zHksD-lZhEsqga87OV0tTvCNfVPc!}+8!Q)WohJrfNWr=dRpLy_`F^<}{dRMnQ9lg) zTJTCKGOmxrpVTdH*b>w{DEF(xmtE@50>58Y%w<9D`?uqYrR79qa^VxxJ4AjC7?szC z4w@4ctScZBUv}sI?Jz3^aWD_^xxXP5OF<%teDRyKEJ8{q53m#j^wzU-S}IF`nEMcUxKcpN4% z=G6vvB*LJJIBx``rw|YO*%T~}1iy6|A>0Ay4aqn$e^2p9h{y4Mwglyn_ny{2nV2UI z6y)3ierjyl3w=rM_Oc~dia^Am9ObNmXxo+Rox8pKO7M4w`Wp!U3flZ%k6%{nGqSJl R2ZjIu002ovPDHLkV1mGJ+yejr literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/hypno.png b/graphics/object_events/pics/pokemon/hypno.png new file mode 100644 index 0000000000000000000000000000000000000000..b1de4cd3c79006601d128b93b8767e8999a478b1 GIT binary patch literal 582 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 literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/jolteon.png b/graphics/object_events/pics/pokemon/jolteon.png new file mode 100644 index 0000000000000000000000000000000000000000..bdd51d2e979c4b3e5fb64f688de63f1a46214cb1 GIT binary patch literal 671 zcmV;Q0$}}#P)oQpYXQXu~T|GhCWY5)NL0RR60|K8r_iA6*N#9N8H|#{E zO+v$SZ+mc1^h-5yl1!=)?|8>MoX6q>Nt)XPwQO)@fJ5T_s$l4D| zIvOu_Pl$xU0Ewjr;5iXFKXSIgzKSi~nzW;0+=hv{!K_w?Ddp6H03DH)NVArk`=YJJ zIZn(CP1BelgVYKN0^VC{J!|o;{Gx5fDM>Aw?%G}VBIjQKCFq*e^06^ei|>yuz}8Fy zBsSg298Z^h&OH>cF@q|qM`@%M@`HDUZl{#J)#T=6V0HYn&zbYxm{x-ZnzfLX-xX8o zre1vUnruwY5|%vYgXSJ8#_!bTtD>TaeIjE`|JEKer}r7Jg2;w$#2u z%vun3*K_H{rqqj$O1uRFB$in3>S&E(3wi6#eE8IqF&7Tq;zEinsidI{jta(r!BMgJ zeRgG~>(INZoc3YcT(2e=z_8oEvbIBbw#m{`c!Lsq!-YHS>|}=ldD6@w>Oh+|xO%@w zhaEEFdpOUU<-}~*KtuGA^roN257+OPDQ@_eKL!7B`~}Duhx4-LwYC5N002ovPDHLk FV1jQGN!|be literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/jumpluff.png b/graphics/object_events/pics/pokemon/jumpluff.png new file mode 100644 index 0000000000000000000000000000000000000000..56bf7a444e3a0e7b1a26242f27574117e287b334 GIT binary patch literal 568 zcmV-80>}M{P)$JKIWe3uq{dUdJ4hG*#vnEKDQC*m}lu)pr_oiZ2gp7 z=it!xlDU{qk!L3Ih_Pop;~C!;89Zhv?mMd#JYrC9#XYl1DOId@Mtoz-{`vx(7SwgU zyV1?E8P`hb>w0%aDbp;Qaig^w*1K26=w{ipVw7#xn_H!mdjFVhdTVXF-kdlbmd!SK zZ}H^;qaEa7(HR^?jzZMo?o19l;NmO`zc9H88R{KM*vA63_~cGq#2B5QEcos0uY2Zy z_oJOnmLbDYh&&xz@-7yjp}vZnxaEGdx%d1^rR11z*ZI3u%`TFJT{`&A;Tv(SukcH3 zOFfS^?Um&4N@e~4<=Y!m%>U@!IbPQKCOVT0e(k#TN6d{G0BR`dITbKQlEW*n)WH4) zsDZhFcPy|Kz1DH8>TOQlhBNAID*>SG=h3FUqv=QCXA$OM?{TcLwb8^*MDDjlcX$#bKdJ*apAsQR!kdSfF zo-TQ85S=kefHIlV(P#YR&4HcnnRfH$ju}h)|DT`nbMY6prULGHq&)us0000{#X%Tz5CH%7tpDC>)toVdK>z>%0RR90v$ns<00088 zNkl z9b(4;cD`u21III8%djQTa2!vAsNi(&yui88vKt1Tdpd^5K6APqHr$OU=z7N2YF9NL zufKlH))S^3dn{yIE zQ*KeEAvq3=gkkkd@%moJY^Gl~o9Lj)P6Xj<<=wH>v=rauqU4PXMEJ!h5`It4pGv+e zDL)E&mGQc-K~WTo&pr`v62W~r;v^7F*O5@I7fYV11)~CKnZ@!zgXsS4x04fcnF^K> zt3cfD^L2l4r_LWoJWem5Ku*O~d8k1Uo?cpVqqu`PR| zj;HpP0E-35{)pxRVNOUZJGTh2GIJzo*hnvNX_GAh93irl4}3V^4utsv8rv%pd;fQA j3;$q_bH2v}|4;n}5b?i#D-TZ700000NkvXXu0mjfk?M3e literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/kabuto.png b/graphics/object_events/pics/pokemon/kabuto.png new file mode 100644 index 0000000000000000000000000000000000000000..8f20a1577c33b24451daaeea80db838a2fb7f685 GIT binary patch literal 403 zcmV;E0c`$>P)d5D*X$F1@&Z0003V zNkl@Y1Wc2+_biM`JE^SYv?Z0EK5BAPT=wmR=+#<7SaN&i2URA)_ygojG z@5EfQX>jkvH7++V;-tJ{ieWVkoIaBx)Xi^d3joe5xRaW}hdgh$2J)QwO^u&8^I0cu xOBW~~e08^x6LojX<=vy>f{yY*e;3UL80006v zNkl8;QH#Tr93KO^`m(;_0%y@w<2Z&n=U zj~JiXV1dllZ~^3l8R4!B=26(*ivj-fh%I2{&{zd%3&Em&X-FclWzL4efsk2h{7QU_ zg)te*!v5nUwvSesEj1Rw{aBu>-#|kW0h_rP3NsNgnQAbwJdtG&)FK9!>~$rO0VunR zoYlZ&J`D{^fHLQ5FmTq`a9CP#X*-n;Abc(|r&DlZK#ds9D@FBcTn*xlsoy^(D|~Vm z)SrPz7C1RoQ3QhsQfDx*8ayaaHwC!$EZu-@6vxwGW=S|plJl(L{C$qOmlod=sSo(S7wNyYm)l^51F2#n@0H z<8l91v$9bnRzv7MH1+NTL1zzLKvEVv8rX5aK3%@t_V2&DEf3-}guhexq3ti|_;!nK SgC9Zw0000J_CYb#v{I~tDT`tdVle>T-rlsdwEzEm|L!T(v;d1@01yxmia~|x0006{ zNkl3L>LBq1utr2hJdb+Rq3LK z=%OCF5acQ*M8Oops~lS&R_iXZYl$E*Kjgf>=1GbHZsRs?<9``keS-XYt5JC+r`|OH zU4Fd*2%F}4-sQvRS_70>1M?;?hl-2syp!JXtO0P-9bn$%o{BoTn{|*RLL}*|A=n&5 z1b^{D2vJA#roGcy!%2uYx1ewJh3{U0iRGmrZRQN0R^q`e=v%In_p7y2z&BMbq4N$_ zs$-e6V9%=H*VSrI+mU3nDL^g-V{^8(&Aj;bA`VdHQ``B7N>R&HAKfw=Y<8JTij-mw z`P4daC-y3_6+b3!Oknw>da|a+a9r{+9IOKg%lLtEwjBd}!|tt7yV40Uu?;-lVUbYY zqHbY3SO*46)(Kp)=!<6)u%R@?#0Gc{@Lin5NuZlb(!n|qP!+7tSvv+0&robqEVuSQ z@J$-TMTCvi^P|nCKjOU*(V6P`(XkF7ybD+;g??bL6Nnh%G2(J;iLCa=i}gI^OLcL$ zK2|clxX|_bCNwQCXc13r0*lu@hS9k)dw|f}6p(55z@E~r-J^>$=cbVi+mM=LGg=1{ zgcF`hdou`r>}?Bj8ZJ`j$1m$`7Sul?;(~@Yu&XQORtHvCeTdoC&(H5&8ZWhC z{jXe>s|sm!n^CBPwiTJ2H$_0AP(AA+h=*E5DQ_BX_2KiJ$*x%Z&gW7Y#4 zTsv-TozJZNqhp1%q0=n;CA+U3U}qGPcsS|fkIm~E)$X49w@3EEx^*s0kB_$`K428e zc=Ltr-8SAOpAaoZXz|E=`V z=d~!vab(F_z&+2#I3wYhkp|FJqMZz*+F@ zw{^yjIL7OYLKfj7yzUj^{{;D+cB{zwR!)y!bb#vxpL!+h^1Kz9llz1E(^vW)+P6&h qR8y3+`IW7O!Lk0%vHu_cWV47nGEetqzcw&d7(8A5T-G@yGywohK*z@b literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/kangaskhan.png b/graphics/object_events/pics/pokemon/kangaskhan.png new file mode 100644 index 0000000000000000000000000000000000000000..62579ff85b7f86fc9c1fc1e5b1b41a9eb138b8a6 GIT binary patch literal 698 zcmV;r0!96aP)iUfhfUpB7EY*P|aw7J6^)brLYQxLbfRxY(8a z@$siIUmveZ)?}RZNrKFxdeHmUUpGZNZH#v%S48x569eYvCHWG`KlK<87h06eyM{GU z4}Hmk9PythSb_fxUiT#nfw&=B0hC-T$IJEwYbQTAIL*|VxuwbiDjS-bTcC0X&c*`f zt~eXWq(zzef*mVTF+px}fc&pu-jc0%K31H&Rp*?n$f{%|>TrMw!V^Kc1IYpG( zC0mvoy(THiYxuoMYD54p@$gO!!C{+uBs|zS1i2BY>xO}pn*umH8K(p_(9{wN3Fa1J zNgWpv15S=J;_T3^pNDSsG6mRfCWnOJ$vNprPlHht+bZ@c!E((h)u|_JblwGz0YQ80 zeCV;B91?Osv=%7TI9e$P33-#g>z5y%AbbY)m#vQW8kf)OPw7EBI3(mqJW`5IhhLNB zLE}8(`70V*M2V$@XhFomuxx(Uam#(lV(5_j7?0NQ4S43FZ(BZ^kS0JrsQde9-tbvL zbB|*~NxVZ>DfzCb;16AzAlt*8l(j07*qoM6N<$g6DirO#lD@ literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/kecleon.png b/graphics/object_events/pics/pokemon/kecleon.png index 47ae584b796f4dbac3b533b9c317858b983ac75c..d429ee38a6822671f8a56c70eaf7c10e49c7e75d 100644 GIT binary patch literal 664 zcmV;J0%!e+P)?K=4z#~cw6m? z2QOxbl|A-lvC>PGG?U=Pjgw{rHJL0Ag}oGt&tc$~XY!xCO#lvcs6+iP72OZid$fUQ zObN_8^!^NwGm!b5X@EO?M;LTH)a4#ww5y?x18;ZPYtEU5<4TM12s0@sW|#r=-Q6zI zP}8aXqq&;SFcWLIX@-{;<~VR>>!VMopLY4PW|?;|6RR6tgqDRF$QN#Z9?enH>$TJ3 z?g%ppO0$b;QD6qLHqQrF5o-EjHGXZoJQt7fkA~cKmsc8QfQoZp8fw4sv*Vt6n2#pT`r6zAW`HL$ z&I@o;^JT|;g_=wpr*8_>@d;hmS@$ykn#5_Ju$ooN?0uGa&+zL+_D^-x@kzY+ve1U@3mf**H)T` ysuLg==;gY?Q2WAAXV3?6`GmhzKHx#%Kdaw~e7CVXV$zoY0000b>!3`IHX7@piL8MGump0dzNr)Dt;4??|&L=TW7#66CCfs*pzE)@to ziu@Em1OVFNpkcpvYH`rBljAeh+@B6w9a8}ay%$n33L7CzJ>uXK-8A}a#kUX4#?;}h zcw<96TSIO{7lwdo8+`zlZ5q#(30+xQd}zD diff --git a/graphics/object_events/pics/pokemon/kingdra.png b/graphics/object_events/pics/pokemon/kingdra.png new file mode 100644 index 0000000000000000000000000000000000000000..39c9613bc0fb705da66f6459a4681ffd8ae96025 GIT binary patch literal 745 zcmV|CK6bEn`Yd#EXnOKPBMQ7CNCd;S1k8s^hnp{eTCUzNNM(GaU;VKba z*}Kf749(6@@cs7@!XorFzQ(7FHu(6sFQ|4kJtt|R5n@$cMVu`jBEF2K3Nw5sDHaGB zwFT^)CA0m2z)L~a(x@9Yzo3h#VKzj4c{WTfRL5>HO*N~ja+~Um{%?LQsDY?sKUP4- zl0fpZ7DS8PU$J)c>GAw!+vq^-lS3zu6()A5i;f$#v`H2X3ER3^Q`<1lp`;krS z{NU`qug%QwX(`Iex7pl$n+TD=-MPljYeC#M=Uz5bA2G6<^$39}^f-b7w@vEq)ua zC$-)8I|FVC&K1OLpCAT|n=EGhrrDEsQ(d`e&GQZ0u7CC&Y%N{+JJUb>^?NsEDQ+3T zpI&z01^f!lULUl-o}IhUWdpa2&$5+MUwVO|?WP7D**On6t)^{>6LX!-=3qQQU;}pru?qdK`F#L}aKUy_MaI71hv(t; b{O66oji)DU)#f4{00000NkvXXu0mjf4nS*i literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/kingler.png b/graphics/object_events/pics/pokemon/kingler.png new file mode 100644 index 0000000000000000000000000000000000000000..387a5acc8998094edc7dc394a02ebfa6b2fbb649 GIT binary patch literal 769 zcmV+c1OEJpP)5dZ)GCT~wW0007v zNklpUwlTl~g_BV7-{D#m`x|${ZW5kOsF6ZWSH(yth{NI|s)Fwa`$z$Em3TD0Z> zuJM{0Z=KNTCg8Y7$I?e(cShb*{dy(gqST}X4`Y`meK1Ome2YTggl|MxJEkc7+*seC z3P&OF7fI2^=OIM+#!Jea0%HrL-my|W)yTB_%ASSqifm&`m79>SGM5A!3a7x>cKY)3 zdnZh+Z5Lp_{`f@eQ)Z#hLT%zP$zThkDEF6_SX8e~=Jof<|n#}ddwggm9nC;=jvhuLdh<`DK`Sgkd8Q}d*? zYsc~)vXHw+Hg(N17!%3_GV@W@1zK3{sPSMnjRWjU6y8E!Gd~`?SV9fIiMEB%fP0N<0~=;#t+&5S|E?Eh2Sj(Oq@mx;G@ng zw{DoY{!*7ddH#JG`_elac}6&%9sIQPziYn$S6DP6Ry>$W00000NkvXXu0mjf2(5EC literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/kirlia.png b/graphics/object_events/pics/pokemon/kirlia.png index bac74a9ccb0c3ddca0031d49393edf4b97cd3f92..4212c7b7ce90722682074b3cbd2259255218a2d5 100644 GIT binary patch literal 467 zcmV;^0WAKBP)l^pN)Qkb#Q^(u0004A zNkl7xV5C`yEV64@pVlcSx+Ol4 zh*-?k>CoDaY=k>i%72LTi{m@lu?*0qOP4M`;W6{q-)D*&aCGZCK5|CXpJA#2`ka$p z-}7;yrKp#fY5-ERmEFK|y%L3x3rsbzVz#vRq~*B~Le7&7`jb0*;+t_ZVLMMYoVIU* zRM=X42UE>TqpAuTbZMsO62orlg>4GzQdVIrp$nm<3cE?rrl8c)Y2aDOypXw7pylS& z1Z|d7-^#-N$*!5En^T=>3fruRf;MlmOq}dv>6&TW-w)6#&@xpjY?D1X4SW;QdV_>v zKMw9jVFUDDgw2-O^?sMdydDlW5yLK{QOrOGr=joO_-Q_3iGUR1;0Csr4{D?gSU0GQQ1>l`CIV83g8>FReAFX)Ws#0G zLQjv@Ljg!34hEP88pGCR2(V$RArGVw2LntW+~(^6#16Vou4pI$Qiy}TG_X4TL^qV@ z9cs3sFGc`|IOq#mp7--MwMjjsi?e1M5+H>*=nK$mUmthl_WIozU=RmGA+z=_uCP0R z6aQYtU?@F_tfm4=tN<+2e&37IR$teHU;Y!KLHfDU`g;^rjl2H>AOolhChTD500000 LNkvXXu0mjfBc{lN diff --git a/graphics/object_events/pics/pokemon/koffing.png b/graphics/object_events/pics/pokemon/koffing.png new file mode 100644 index 0000000000000000000000000000000000000000..d4510c2cbfc18a2629e42dedf49f95749b477a23 GIT binary patch literal 534 zcmV+x0_pvUP)ToQ5QV))2=35*)GM<_+#rg?8bK>{8wNN)jG}JSv>hAU87A>WN>`Qg z6bU}R`LT^+EA`Yy+i_t$VF689lSkA~ou8Jhp;H)F{>3wI5b>`X zG%h|Z$oOoGB_J^gGi@OIs&T$=P!`^I4Un^b!Z$yY+VQg1w2^(I*>L4%o;Ys&mK7?~ zFiau3Wt`seu^t$%8K-`r#(1C^$Sq^p?>mrK9RL&Hjd0&~E0%rTqAjq}Heq<2ZNWI- zC}3tRHCXu>^j)vxi~}|SCc?m2_WN!SSmp4sF~4J!7sWW!FCwcmY(L?33uBZI=9@)1 zgVV+o46N6T35&)kn+5AA=fi$S<2mD!_wzjO$QE#xwZq}6o%Qn)pzIxdaMi#FyR5kzEv_Hg=1tg>EQj${Xj*Up! z+CB^Im=1wNH(X%>SEEK-w!*nvAU*F}xOu?^Z1+MNz5;Tsp}>Lyv{oyj?-t0bT8(2h zEunSO*beAL$UncJSf1H-wL?Ij@sGFT(nSGFx4^opE1?=UF!J7ZFPwn-Jph`n0Smwk zAb}C0Zh=}?3KG{l;I_{~lkB88L%^w{TV+h~>kbKmZh+cECHD=}&UG&|A#C9I%t>xK zEFB6}9`Plc&gM=B2Q2-7?}(U}eTRS%>3WFg@96$NBQ(>OcOvgee25QXxC2Sq+nx%vWZD)Ih=)G{1e}C;p}8ag7Eyl( ft?N-Z?N##)m)cWA3O|1-00000NkvXXu0mjfsYvw* literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/kyogre.png b/graphics/object_events/pics/pokemon/kyogre.png index 32f67aafa2c7399296e29c63dc751fd8fd4dc7f4..728a5ad3772a30ac6ab65500edeb18544e8baeda 100644 GIT binary patch literal 1763 zcmV<91|0c`P)^!(&5&000JV zNkl5jn7{}+7TQt|6@+I~XjN^QjoI);1K0_&(pCo zph1HM4H`6P(4aws1`QhYKi7RA1U~)OF77P2@7sg~;U~EB5SkE+FX3M#-_mRqK(O$_ zI}SmwrqiSN?!5m7vFwJvy$&Gg3ZSpWt`4Tty`#HxB56#ts53;FI$U(}(AGSMkkncP ze(MFjEk;dc(CoZ_FPA)ZXu`TKpj-$Mb@C--FjpUu`e>@Z#lpg1d-%8Dsjd9!&=mmA zAR)Rrg*nV=yo6=@6?p(O-Vnf_ra7IO=7%nWeO&pIx*v6Mt%pkhSkCcZ`$P$?%yX9W z)QY_J9Lg)xJlHeMqmGHz$BC3OOMKC7u!mC_`sz=%mq=Ae@vaJyWMbw@Chg<*a4L~G zQbb+%@8N_zeWFDG+2Y>Q4*ncNK>I&;@Wi}Q{*KJ905)=pOVplu2(n|6_Hop+3C>`g zz{zeG4;A;@IF&L^Oj{WY%!&He7QmXfjgDIcPLM-L##XDr25)YO376nmAbD2?xePta zZ{b>$aPA~0g~7u~%K0Q~j(^Qt2G^#AL4Rzm*1)>K1{YA}d0!=-?Qw1e){0Fac>pD^ON-7K=i~Vpf|ElVX3H7p>{YDA6F2pOC~q+ZN=8D!i^U2V51vnyUbGNOvkXU^B)`&e@pN zhu2P~Qv(g!W3^03vh-^Pn;gI|bD$ZK3;Ke-^7zRix6We?zh*`ygL%zMext?C9)pW5 zNUH@RDK|~Scyp)>X27LfLT$rp@T@vTw5|8R#>5V zM>=lf;GSZNumEqb@1bokRR!kPTvcFxTuC7v=dg6 z*lFCK@G&~r`r+CDwwOD%O76|{YKzf*N9y3ywZS+9SEgHK0HdX9F|p=Cwb;D6N>Db& zNy3jGtqej`Uq)NF;AIic3~;dmBK&B4|Jr!#3#@<+#&r*?78|=fTl0wPvs#PE3j_QG zNeY7#qJ>~QuBmb93+t{Fq1{Z{h-?$|M#{N9-RL2Dd|O zQJ0k&P%VZPve!Jo3e{SST)tHun?NqLjfju$E4NSgmoE4v4?&-AIn@B@X!ikHwBWfi z7=esx>wJ@AmMa5@Vs@7wteqrqTl6??;cLFkzcvq3vN$WX9QUc=#8oa+qj8wP2g=WAFz*~HZyH>2mszs7 zRm*u%V>)gZ++_`Cn!w`w*_ub{ThqVFKW4bK2I_8#2X?{Rq9nM%qQQ8TjHW?JJ+&IQ z{BjlIH%x6*>|x7sR>Sd1j>qMOeJmi>7dJfoXu_O_T&9lXemhqVHXAH>=OZ&AzdlpD z#qNW<@%s=$oH`Wz_BStq2)vla)Ut)$#&2P8>AK8qEAUFuSGd&9zHT0*Z^iLxlPiN9 zpF3Lvh=V|#qHLRX1<+@3sk<(G`@WOY2zNV{b-%aS$ny;2MO_&V;h@-3(qlHo)k7rY{_B^1qqiBE$Kie8Ua;3{p9g zqs{MDMdLB%*8CP3?o+=(Nj4_u+0R5_7JzYYPAX002ovPDHLk FV1lzWTqOVi literal 1037 zcmV+o1oHcdP)x_HVh9i*)pMkzL32_dLDkjOi;I*&K~n$!{{R30E*dwM000A+ zNkl>O2!%tDgNCia#P&&Y%Ex=E#VFnrJa+h=fkiYuCn+y!lo+?SJK+1r2&=~`;Ghjxq(ee=h z1?`e2OhH0~SV9GJ&T%&A#gG7HHS^&H5YejzBv@96GQ!XS2EBN)XEGpQvFsCqRinUm z)6}4%C_PdKXnUOz;O>c`N+3#2^6ERwxNbn%G6e=JdnlONLl4?s^AS9*NQS6Fl^e`| z`$&43Hk4Ecu=@%JK&Ks`+cX=Z!pjecn6H!AkPfA-?6g}1=dN#Nz2+lWBD$2_iiLlu zYs`1J#Cuwz19WSIJ)qYNNIB*8C!iHuauojY?X;#O4BpezrcAy22habh@7x=m^K3j~ zMgZ%`_tS#~5L&sr5NVs^cTu{#5H(K6tZm9PQe*(7>>rN@iBuz;%gWvbF`qcYda7B+ zi(b!~!m}w$24IcScINRwZGzQqPUlO3Qb&_dZ1{U!3Mxz43_2#wDVMd8lyj9J=a`vF z5NzKjd>2NbqlD`UufkHmX#~xnV>ofjdjSHgJgvIIFA@y~3q@rtyphmRU$#={(QT;rruEv}a)UbIeUvnIasrpp?Hk?55miylCm z@+u4XqD^I&M45`$*UOit?R6HvW`LLKS_`UR(D$woF2G0f@Fy6$PBcHAr|`?e!(Y(S zb>i#4$l${RFGxEOp(*&Mp$C8q(70>`${klauTY<_mu-ylch+wzY|d8)pkAnL3ElOh zfHs-yKhy0D?DFMR_|HAvzh@J9hu3B$DegSPIQ>st3u;^Sr_lA+3Ih>rfF1)YXQ?FO6UR%KC=l$jeFxgY6QzM$C zjz{I*{;g@}{wCkc!B2lWlijg;LL`Usyk|7}#qIb0xC8zJ0efB}kMMV<00000NkvXX Hu0mjf-?r%o diff --git a/graphics/object_events/pics/pokemon/lairon.png b/graphics/object_events/pics/pokemon/lairon.png new file mode 100644 index 0000000000000000000000000000000000000000..fd8ccf14b12ef9910381e1a3d2eae4056f0d3b60 GIT binary patch literal 822 zcmV-61Ihe}P)&CUP+|ExJm-fC+9gM(_l{{R30T)@xq0008P zNklm596bEpFlsT9yQp%DhG!mT{&@EjeDj3=Y!qpOG$!8%~Br8jFr(ljW9^`lKNJ_>*V*B?5rY`mBFdl@eD=Tv}S~xZ7vPT~-wh z9(A>C9(8GH?RM>mtF760^N33eVlJ3R7lA*+kF&L9a)UzZ86A}iGxK5bF3VGlof#fM)kqV2vcSoMc zvojF6u*m%o2N-L3#SS`c*!HneT;QX7H_y{M(i=!T;TsCDiSa5M%B}(RN$6uj=6W`v zhOlU8EzRlpVqu9~ILbFnyyoxN!=8_$1LilZ3BnusLZ|OuMM%?d?Z_E&q!tHjqsw| zTsX@o8VNDB8E(T(!(9Wga%~cl7kivH*t72Q9XEseK`S`zhi%B#UdP(^<^-+FlV-Q$ z=C7S9EKcBFrX#a;k?WbWT?Go(r0Frk^xgUt7xmd#kV zb1QN;bDqO5UCVI{1nUkmM_W6>e5U>3s(%&h?+qb0|5nVr&!}m!_XVwu6OpTI1;?EL zn)(pcgxB%bV9a7>c8U#$+%a2?GLIQ`9TyeyLF#P|kU^9F5G8%PVCv|?O2Q%*6&uFf zETQ@RilYO%lha6r2#8{;kx*p3iWS*PACAyi|0*11qZbXchf(-<-Q?Sb>4G0}9^S%{ z!Y^UkYw&}lABEa!xK~GW#&`*i{?3M%>Yu1|L%ML=2F$PTC|HfgHi|(5D@=!0JH!AgvIE^0008^ zNklt3I?R>KotH5 zD!8E$l_C*WG{XPO*@>OJq(2bS4R_Lc`-J%WdC$0ydfxx__bk8=AAEgtv>-vDzzzk% zc==}q^}uL0IWiw;`~kch7^O!GI#}Sp5!3>qzdTmJ;}787K)5+F-;-5=sC}$z5BBvJ z-mLnqkQ~+Yi;HRt`}tZ`e9@%BZvz|iWhH;ZBo>JMGd93=uxjEC+fj&F#jwYLnqLCL z#XI}^H4BP28bR_D;+vYZH>AlhU#<`<%3cP=c8CpsGaVJzU01lKX(?FHD8x54p@bw@ zzzCrQt3)NDJfd{r8}_gup&Os#0J>iz21+Sor4eY7=tq_zQ2L3=NY5LX%?nOSLDH)T zShrUbBvk<`1?kDuQ~r0BCC1t}j~zP!P}U_)9MJ9d5X)R3O3nn9(_jk3^k^r*>(p~x z3eLMLf(6YeL@f3BQPC*{zE)7jFpjsnJkwDofY`GPt_GP0q6%BH`4+JjbP_CJekt%2 zw6j2_k2?P*EQ5PR`X&$uv;xGiFg)|m+28=l7y*vA>`^CoW16Al+8I(b15k)QyG3O0007- zNkl3xrP*=}3fA zX7D^Qc$^qa1*Z`w?vlInI%5quCOuRESM>BicrN(CXR#)Rx31W2Utr6*YRYQxKk+>f zPA*>X5<|L}7TkA|vL@ega#E*^k_Tw=B9{FZC(KOY1y5zjYFhXlpUUBJQ}CiGkE@&{ z8!qpgU3p$)Cih*@DiI9#@Weq>y&=<0xhw0!h5%U4#Nd$0s=4LoWi}<;We+lh#AMIC zVT>>Kq-0 zlZ0GKaf-};@_J~^!4<^Y_l04%3 zLAaRZLkn8AQg>{PZ8+!F*--SJkAvV3<*&g{dNz~pWVMOyVuL5kwy|BL&W+B^m@#&y z{fo8F5OxXV#L<1KydC)m+l5Sr5dSdxV#b;-3^tC?e+Inav*v#qzX9Li`v87hu+snl N002ovPDHLkV1i8`aiahL literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/larvitar.png b/graphics/object_events/pics/pokemon/larvitar.png new file mode 100644 index 0000000000000000000000000000000000000000..f727916e4b7f33fc91252d4920ea665d68780192 GIT binary patch literal 429 zcmV;e0aE^nP)~?ouheIUs5v0RI60{{a8R#l>P`Vh|7zmvFp&0003v zNkl@C?cL!!+Xw)**kX$<{!WOs_R9uqR=QpGuMg0J?$@{~8h&w$ZL`J$V!vP*8f?3^2Yqkr3buP zB*Qv3e8&A*@;=TDd8_@IhZkk@T!Zcf8q7@+NP+;|;qP?};R9p-!)(N*m19N!@9c4Ve8| z2e^=uGP$$K3)DeJjKfd3Nj XYn4K@boSgE`O30009` zNkl6L+hNdme zQb^4YrrH?WGM1TDDkOYM>7Oy7+myfs3N5=|lBGA;#Q*~bL(L9E?^lv6ncI|On|ZT! z3CkUNN9nsAs(eE05ZLPbmUYB$xa~-2QRZNXTTWi?R}Vz^;ihMiSz~-czUwGmBQYej z4vww9OITobLw-?q-#|8AFLB%x-OOj}Za(Y7F~-NpTOU!E9QKs1KvW@NW|y#dV2u2} zD+GtWQ70S>t)l#c%xC0Tyy@5kHi5C=94G}LxKCJ>k*m@!5&iap-Mle+1Ck3h=E2ad z@j$HWGTp-oYhH`n*Y*>Bm@;zZT7by2zi%(E=mL6>YRtjVD|8iOJ-&^#+|u+ZPr;}%A#hh z&Vnd#O5_yZ>{pQ9iYe=6-8WsIkLiRFuWgAmTLk7Kg95H?M}#`%Y8&8KcB}n5(qk4* z(O$PSIWU|UaAS0y5}1|2@yOh}!Lq@Gp*Dh>Ite1~I45$UT?dn3Vi_1!-9Mk#Wt#Aa zo5G%lKC^O+M+SINyE_&I2gciURhMXY$me{@RuHQbLB}Wc)s0Sqku$ny`Fb>b!apvr kHFBLS0ISnqQ~qDqcY4H7V;%H(ga7~l07*qoM6N<$f=u+t$N&HU literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/latios.png b/graphics/object_events/pics/pokemon/latios.png new file mode 100644 index 0000000000000000000000000000000000000000..69160cf1817bea36650f35b132a9e1d84054d28c GIT binary patch literal 1055 zcmV+)1mOFLP) z&CRT=tdxtCb82(m-rj>sO8;tV)k;#F&Hw-Z|5~K~N`uuoVze^Qt}+K000B3 zNkl@@W|0TT27)n_02_IMyhDnu^DJ7#)e-3j zuwtj@9+Fa4X=sk9YzzdDsmYluFR@&vNe%=;-{{Q$&zTz)1pmjs8Da56Bdd>7zhm2d z$S$fui_TzqN0T*A8f-7rb8|SxK_IkrB?hdY`>w(DlND`vEd=8iu64*kuu{??W<55B zEWK{?_HjL|NR`R>mh%Iz-L$mq1;^UJ&yi(q*nm%DkdujQ`$?)OQA0lC{9FyVG`XH_ zgpm@g5Q{EbLsNp3rT{{1sF?v(R8rFJg!Acyx+KQHu{Rh?Z6F403>%V_%cUgkTw!|c zcpv9vLM5<>^N6%dsLjr>>~_*>GO2^Gas?Rnh9OG!VY&RJmO6o9>^Ma&nvozy9aLn- z616CXgV0Qw+)bur;AhCPGi3PCpb(f}qE2sG))fH_TL~5nXpLA(4u(lTRy{uB(+65{ zfp)}}Tf^$15uA(sGP4yq)(QI*l6n_K6IMb@iw-~zib)^zdhJj6!-blWEYSj%y3kHUE`UnE0fhO8 z9t)u=*!=u%^CBX%7&EnMju&KT3?A>sz&WfQ?~LBk@zS30#t7!t@A1a);!giwUj6vZ zi|9)z5%tD&EXYt8!R_fQ&fl*OMvy%^zOx2Q%?6;mQdncy-dZC6sCMlbNl)|`#jO#P zr(aynzF$i#$Q=7is!@WuqktV!fOzYFmU10MFUjD;ZJ+N!PZ6uPoA<9S4(&~C*b4?m z&|{d=4$9)9O$fzT(QBl_iXNw#VfN==06%@#-l_u*K?#BvEMvOIvNQ=gv3mP0-a}S& zxdfZiT)!!kPkTQHLmmi*fDK}ft)psOSJ@3DJzi$^DDUCZ*T201|K=I+P%xAP)FitG zLWp}WXjt6edcgzYwrkMie+aT%aqs;tATB~LXqZ;Q(&zB;_aENEufY)}!7A$rGO1X0 z48oUy9YM=JST+ueRaGBlnG4YqltOggtQ3Esc#hXZ;`BHNQh%NaCZA>X=Ij2C8uEWS Z{syD5S`cF71$moI8)HXs~sph~$fO{NM zIML%G)hsfT@0n8QltRsetZRfT@M3^e2~XP{#TgX)YzlT@rB|wUj(HPjL^Xo)W(dk!Y4Vnsd&9>MM7It*opP3-&@ zIo{yUSAcWzD*o9S%>0gUTg_jvbpA#3P?~mke^h=Gvf4+2c)GFkRS{vD6Fu+YM8FrnXbQy zFrBLoo6R+|nGt5VCBg{#lt@m=OjnGH6u(fY3sQW+6CJ-~L|h+T9!*jmz`5cLHx&~b z;0q}$=A0vQUi$I!o?M*oB#<1KfF)xu%@5x{wqBSCP^|A`n@!1YtT-XeYyk;C|A|by zna5eewh1Jg``l);mu7hRwY4b)icP?h%?5Zx&X?Qyk}C;DbCPZ6D;5TL;)sWbCqc?J zYc>_|BwIn2+Ps`!@NR;pV7b4uX9e$!uQ~ywb&RK`j^PZOY00008r zNklB*66vw@IjVYzuK|e!Lyd89iv=y3SJ=!6}A445VrYq+u_n{7xML1s} zHav}kw%6$ctk6tw!kA_0&@d1P0Xj-r!Y*TFycH0q9<6W}#X$%e zv7C{nMG53BTbEHoNUKFaLLLfP5+(7#2|0D#r(wz)ArP zmJtHf3DHiG`JfiqhV2+<&|(~tW~mK$0^qo!KEOy|fD)DC@ochiLIyycFvhd8jA!Sz zkYAHD2puzA(!lbokZ^ZS$Qg`gVu67|mNm(@Q&DLMagN3P0CSt+w4@#I<902D$cCMDFugo3u5@A$2|Kxb$-`NM`euF9XeTFmp+c}_B5^^tk*!y??O9!ZTYm zJjK9;7ry_{x;O|}8vf;2y_63o0Lr>$uj0uDu0#+N>|!-JYvVMmcxIDWcrS~NBs zS{BQ9BixrYzKY87N7zB6?k>y>r4D)81nj|Vc@zS=40GH0RR8ZwEv`o?rKuaQZbYe01yxm0r&HY0005q zNkl8nu5XbohAxBZL|aw=4Q%6!Xbdf zp3It})JQJkseo_$-N*k(9z`*Bvzy)QX8&xazK$ zIDVWtVOq~K+xG?am8|BOuX{)FVfKRAJYN*V%$Rh6Px*PcSyN^L?*KkYHqRPTy~IET za-GjGIcRD&E|_pZODbeoP~&-sKT<(jgt^xG3L6oKhwDIZo@ zG8`$>J?}z8ZYz{!$KGeL0hi!wjwt=ugliHBHZT>G#VW(yAW%xkV{VmgRX4}Z@%vxW z7FdOZ`-FPxz(Re2{ByvbH`|z{Y7Uj0WxBXO6KvIR23q!xfnR=XwkmE=ZMI*d$E-DK zcZlzO&+&UL096~kpS&SQ7scIJ@a4NZy13q%M#T*))5LMA_*RYHXHJe$!bEWVH}M&Z gap8^^9RIET24w4(9w6e!L;wH)07*qoM6N<$f@7*02><{9 literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/lileep.png b/graphics/object_events/pics/pokemon/lileep.png new file mode 100644 index 0000000000000000000000000000000000000000..f72722fe14e6943a9a0efe623608ff39d2c1feb7 GIT binary patch literal 582 zcmV-M0=fN(P)B*66bEn()mncT*;8p$ur!rc0_%;9K4j^1aQPC~>2SN$({ZvP_8L{8 zG?reXltK%4khg??B!179ED>_5Q=RHxEg*#IBjd&J0pQUb1QtRQqmF=$+7fw?ih+zW z4;J+mspAGINVTzrhH@7lgG7Q$tN>B~Ufu8@lY%h8~WI(u+ zV1%6;Ado<-#X_kQyK8wTuT_@HA_KSmyZDOYqtk)pn3-jF>SiaO{2)`KU)k2fHn6`wF5914rRaU<~7G4tQG6xgN8ve za_9PJMhb4TtCFS9f;T8nE&T`1z0w4 UZ*}6CDgXcg07*qoM6N<$f{t()wKWi_Bm36dyC%xthE2d&HwKIeAZ!b0005v zNkl8nu6otu!OBQLdMW9PLSk{zRQZi5!GS!1^0bRUU)MyWu?rUUdk+B`p zv9DChkolLADc~ZL4l1s?gqGN6z zUjrOc=s!D5bzny8qRz|;pM68zDc))1tmd1|24J;t`4Wg`HC4yXIQUFNSHKq(V3P0P z!~mdWrNhG%s7e3@SjTR5W~(C@I#{CsKPoSw9y$3LX62>j>d1O)<{snmZ(tE%@^XBE ze*FKb0mJ$(lIK1@ezQj4u-dG?fqs#Atmk$Alc|fT{F1-%x%PXxyni(T{LGjB)Ie4Y zR&5eszW&8>skHN0>VSvWqFMa782XH9x|D3GM>cV#m-9+)W14#K|JzEN=jYh8rS$&A%*c-i)8S*I^#?0(8R^mkzwzg?Nhs`Ol zm5>k%_LgExf`P7>h)M??ClnX#Jo08D4wW?qnFCX41zGLmcx3+U%6sc6_QR5ykU5aG zR5{?ylnT;f!fPvi7fNQ@J7jjHWy8=@D#$Vc$DYoCXn*n0iv>(t2njI7H!_I!JBz%i4~wUvy|jXYylzbC{VS?SO5W`;w~L!Wb*?gc?B{d7M( z-S^ntFbo~GO2^(1wrU=B^37-bvuy`#{o~>5EfI9g$m4g(xoM9X>&Gugq5?WzjeaLx z){?c)!=jxQWbTV%WwGCRR8St_@%M6+28Q1`T8vY6#28{=1rzbx?^z36#mW0BqTn)e|&rVQR2UiU%kYpf#Au43;+NC07*qoM6N<$g4Qw(TL1t6 literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/lotad.png b/graphics/object_events/pics/pokemon/lotad.png new file mode 100644 index 0000000000000000000000000000000000000000..8e59c518367cd35029e628f22306552a03d88fc2 GIT binary patch literal 469 zcmV;`0V@89P)7x(-XbnQP!h14 z5b~2XcqlYy*r7X-xznr(5#t%_J;ss}%X*XFe?7O)Ik zA`xp4v(o+4WL^YZg#2h@lF5!Uh(%gjJD-%CDJ@&)f-&q!wgO8P>w&c|Ps#{iQ*y+`}_9Z)H{8^4?bd_)Ej+?WESHSKjYS zrK%O{?ak*#DI59j9wNYTQ!PJqz?BPcal5Y6Y8?6Q4&Zvn^VM~!16I{i_1rqwJs%W~ zYwUSkD~vk3=5?@be*tH|JGK|~)@rW~!n5$Fe~;(CC78d#zrdv#DU`xGGrRL+x3NNRg}%d(&wH8gci!9CMd&W>;x2AaK<63` zz^yl74L;R5CLO!pgq7e?UN!JJc>1k{5GLcb<&4{}<*$JBqUEgj%t=-;@Hsf{M*#eJ z?`S#W-L~R39V};^J5z`H2P;8BS``DI@tZBhZ5S+PwI#mj`vx_>I6NbSEXJ9h8_q13 z^*_6@WY)`yhug7i6&ShbdjqR7&M?!095*|v*fNarLJ+eJ$&?3FNiIUe$lR2G5OFBH z1}e;2Xh8{S(hL)25Ifd}ix4rIBtzQ4g+XMvFw_SoYXE*jKF6(qJ*ITM3Bf{lAPg6V zizr~5Lz+;)q1q!Hmj?LLI^lWO8q}DHe5Y|A8jrZ3+90&74Mmj02BjMz7y3{F4Ci5K zFlwxxHC+caW+9v>thv1>pnO9uYeSg^*i1sXa=qPgseuoMtAa+{8dNy|asFU0O&*H8 z_&+x+zzQbYBdK51bHiXHE)RxWL|^SQs4>SoPiC_p&)f-0#-*UPaB|2nHbYo>HKHJF z{R*?`yVLRP?c53!{Jm4M98x!}8Yp%{pG}mY>!8kT`ei(xq*k!b(je{bJHa}m>0|`l zyQY#upYim=>Gx+EcNT@GFNFS6u0R1*4|;|a!U zSUB_QI7h-W%p_x9@!lFomAI0q2`-82>v{IS#BGhgO6YG;%v&Sw00000NkvXXu0mjf D+>K`D literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/ludicolo.png b/graphics/object_events/pics/pokemon/ludicolo.png new file mode 100644 index 0000000000000000000000000000000000000000..8d23d8716cb5bb4b94cad7b344f645eb241b6580 GIT binary patch literal 713 zcmV;)0yh1LP)c#16aY}&fbrxhGQbS&6awa69j0>;c;XZr=mmTr!|)lh)I*UNY6nlD zBnpTM1m^FjY>E^utFbc`EeFBxll&hbMN?7qzx^wX~df4RebY<%ya$51;v<*4|1 z_vPEmr_m|zWZgE0jKtdZtNHxa1g=gvDt0fgtGkW;w;`~%EkKI(RLbrBh#lrz+wsf! z=MR`KzUnq6e12UlRvVt|UGkmrlP##K^@9-ClNswaS*&(K4APM;uvk9&#)LZizSNNL z=Aam7wxFse>*3^nX#YQn^`QW6dLk!j+^jjCWZx!X43OdZ*cTXct^rb85SK`Z$xsNl zM+e(o)~W;{Wz(B(EO5oZEfJ*HZ42Ti59=jqHZ?RBphH{|&*0l6jMG@UO_s(@ z!HA?!arzv)*D~~&vq9<^3$_fmm{I<4fxVkMOiN?g^oJ&8QsH~$&H)yTJx4?%Q+LOO z#xoqrR!mly6K4%(H5nU_WaYY#F~YNUppIikXN%;kdu` vU7}dC0Nr literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/lugia.png b/graphics/object_events/pics/pokemon/lugia.png index 1dfc6858b90f830a7433edd0333e1d548ce231e0..cf531ebd96a260df04b795df8b6be0c46302a2cd 100644 GIT binary patch literal 1592 zcmV-82FLk{P)w5D*X$#_CKZ000HU zNkl8<;5LUy&4Ig44E$l`QLD;x12ncygbq8#HxWHYCR8C_o0vtAJ@@xWO zW1U9Na5EfHI#@Gu5@4}cXo|o#f9Cr>4rfRv%VwKxw%KNzZMNBFn{Bq)W}9uc*=GBV zW}E5n*M1*t`)dJc7Ru@G*M9G93%4Kh{6PSUS?KyF;sKg>`MER$e)|~)J%HYk0zg@r zHjPgJ1GKUqW!_{+z!$QMww+*Bj|rT_jzRQq!Cw+6M5ON^;Btw8sQ{o*_lGIQA>akR z?f38|Dcck10g40`O#mqEcM$_CYyk3dJTfEvXxbVe?+#Z|xXq=`=SO%xh~qoFi2yPZ z#xD*;;4BeH3L^ms#YiN>_|+A#a1$N(3R^fzYi*H$@N;H-Brqt91PX}&p%4iqg(HD- zww4`u~*oj{K1V0xUk&6Hp0jbK;HRF3L_#X5|A*Q`P9YWoFIQ4eABxRS+DNawQF^%J{SsyZJ^FD7C0pmt>;YxU&jJCG9w%ssfDLNZrzSa%Wh~or?e&ry=Upm6L;%X9a8LkPE>t3d=(r?> zg9^d=;$i6vjX`v)Mjtc$2Dy?<2|&#XpHu+*CxF#noZdtRBtXP3dciI(*N-$f_)k6h zB7rXt-@4(WKqde+D}2%b)DJ{pDc=+#15#MUkMXs7SU#zTVheGwd=(-K%peBGxw*W# zQ8i?RgW|%h9`LNNUp~nIObe_qC|4&gQdDR)0yMZ}{8Fk2dB@;3TRi?V3N*ZxvBKJI z%){{vaJW%ppk;*>1yP|u?WMW|vHYAhh2x<&M+S6psH8OCCWRFQNZ<|NRVToCLc6y6 zxJBY7Q6`{7`c+prTihW57qoue;a3_QX>RLh;dWq3 zQaGp)TDtpC{>+0GC7uZ4_ROCjy04 z!)$TqU`k=SxE0!AiU6>}au2$0uiM?OU8^x{SYfS-K~rJ$R2!W@_JR{kC`{8=%5g3d zV1;D@qHl@rfH!<55@|M zP5(h{v;*%X0Y{+EPpbow$v;nE^6{M&7MtvF4yIFaBRc357RM6-Jde|9Jj6GcDG;(* zJxO0TB#_>{y;BGzg+-%>Ci`Z~*M^>dTDT%IAShNt|SuFjL zU;VC|Ex@@e|6rIL-3_(il}S2<N?QN_{{R30pUU_40003c zNklo&!yBvaJXt+lm<0mE#ZF2&L}S31dH&|J)-mNoSTcG*Q879`dX$3?JY*#?i0(1xiA4Uhi0Qy&p#Y~mHBE*7d zxs-Hn6wxqZ96PF(t)%6}nusFCnP_{z;gYUg_MjTR7Kam(wo6x5&f0lvI{d0{8rbO77JtKs3g@3E+V*V*oFJu0D-%TWPINfX}njbu+m7 zAXQl(2InDtV~cv443=DH0GTKU0;NaM;KD+EL&D~~vVL4qKrlT~YmDj0e> z{@n}ujg<&-<;s;S|0tFF$dz-Jvk;@QAGjI-?v{31Y2d+HwVYEQ=$^I^UjR4Ojc#dI zkPEe^oHA;7TF#ADw5#|`8>)NC`Go;S%Q-#IIcTU&M_V}aFqZKMP;-{3TAVy-F;CNc ze4+G`3O#MP_7M?1Wg%j~cq}L#(oAW~rHkL;U06D03%DH%N{0qo+N+zlJ-kO!I`4SB zpZ}n6cq*hVL!SywPdR1(f!#A+Cv=SEl16g4HKp@6Z&7eIr~MR`gUW~MDd(lWI~SCm zaAq8EOxKRK$mil&2jnb+F`cKKmrfJ;vt>NpiC@0Lj`JnY&M=+i60o_#c|=mHyz1qQd2inDQ=40V zTa7y)2nasa3mRSCn!37a=Uq6%ElY~FAF8W>RD<4|&I{eRxv+JIoi5I-G`g5k$2DeuQ*-;Z_82wQJ8E1ci&I LtDnm{r-UW|MR=tT literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/machamp.png b/graphics/object_events/pics/pokemon/machamp.png new file mode 100644 index 0000000000000000000000000000000000000000..63ece511273632e8b4bd5e432a1e1a5de06b1c39 GIT binary patch literal 914 zcmV;D18w|?P)sff5m=}94oCRjMMp^M>^#DWX$cNC_O zCixLkI2*E{T#3lAY+|guR|CO43DCWRXs3oAcQCiNck`eqcTg72h5`3^U00062 zNklKT` z7@xrg43bHrl}!S%j`}jcfd?z(QQge2Y<06#OFAy4zxWKA*cw`2O|v z#|ER?Bq$!{%5b~E#W{+iCd{ZholXmbFS5K7!Z%zqh67{pbAx-sFe6z3h$hSg`Zxsn zqYEI_pXXsF?}p!4n6o}1%ovu2Yew=t2Kdf+kgZ{mahBXb>J?aXtQvSz?Q@uoBMmYl zJ93le-b7aX2NZ>rwqsM3cNuUZ|EXR)B8EkZFLcz0}kmF?DqdJFpF1KP5GX*qDb(s!rslBwE zy*NWwn>S5mY2U5hOUv2x2&iS5zcou%drsi-;ec8g3YZ_uu3)|A_#42Tr&})PMIoj7 z?LPvMbux)2LFn82jw@%7I-U(>5k=C|EjxYa^7!QSW0<*l+l1~Ye&r=6+E&-7>^Ywd zJK71MJiYFD)Ca>S4gM=*ueeFT^ihc2yts}hLrinsQC}a}>EqBBYox#vO@bD3VZek` zK5ImlIwGDvw7K{rm|HO)`)UhAbC@)r*Nw^+*ndE)SQ~y#C(TD6{@eHqO?HHDHZp%2 P00000NkvXXu0mjf1Yjmd literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/machop.png b/graphics/object_events/pics/pokemon/machop.png new file mode 100644 index 0000000000000000000000000000000000000000..482df39fa2f2708d0ab6e643211a5ec1a6835455 GIT binary patch literal 398 zcmV;90df9`P)WrF%S?Ck{*D>0003Q zNkloAQM+R%CDRn}!{$2ZQ z{Q9b_0&TyMVJVUHK(5}gE{N3lWPIQS&2oy!hW%d+Y{YE+YyyBI^Cnwn8zHhS81;>e seUD<-t6;OQ!P|n+YT!#49sFB80We^DMDoBUF#rGn07*qoM6N<$f|R|nj{pDw literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/magby.png b/graphics/object_events/pics/pokemon/magby.png new file mode 100644 index 0000000000000000000000000000000000000000..1a5a5b3b329cac13362b5927317e18db414b6f8a GIT binary patch literal 436 zcmV;l0ZaagP)F(Cf{|NsBA_SHGntN^To0RI60{{a8R#l>@Tdk_#1F{)ql0003$ zNkl=4M`F!$^FKBd}@SHgN?H+%6lv}v5g322-yVqkQ#pDibN}v~|J8H<#Q>ygTCA+BgM))&Vq!r-K@boSnx7>T0007< zNklA^Tc?oEe)0y+^y%vtg$hX6`hnT zPRhv5kKzBAVT>93j_>%&=>M@l|CJAXr91Wv%WTYjq5r5`d=W{F2*?v4GQKHbu0IQ| zO?Q5NTh~lLe_Avby-V}U^{4UE=+?N0)o=pJde)STz{HSenoSvHJI?YmsL!KYXKjHc z^AaR1Yku@w9WsjSdqjNHR@_`^_kgbVfPOX1HDkvUP!@DBb6*^q;y2^iN6oIazt+iu z4UoSmPiNxQvfcNMCcohw8FspleW4mMANASCIt~pSn*^`{^2Y*OW6lfU_^{FJ0QK-N z>P}mC?+Z9S)v9Z?cCk-}K^}($umSSdLeZI6wWFC7MROW8jk&O^gAm82>{=quyX3F6 zc&=3f*Z@(Coz`Ygb0Lc1bn6V7Yw&PFsHSXNJKDKVXbMHrhZzuWR1)3qXj=W;z|9zg zcRvC=zA2hwuPRQFLdXP=0ojex@A@4bW)~y*8H@nRfqCVs zYy5i3LF1wi-g~2_lFS2SR$T}X8-Y88SR^ILfH)P@t|{@mUgsAcl<}2`LrwvV7R+T{ z;=KX|ZZYry=ynZV(Cb~n!9!IUQ^gF(4=%=B%(B1(pj-hN&;c5oTs}T%ne;6HOjV0h zIQbE9$-qH~)i3~4L%Q6AOm;l!)27C~2L(Hud5O3uKOhD4()0FygE==8d# z+Z)Iecl7l2r(H^pLT&yb*?Ver#WwG$YA$J$T!(+~cEw+6j?=TR|Ks=r4kA%$Cu4a` P00000NkvXXu0mjf;No#H literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/magikarp.png b/graphics/object_events/pics/pokemon/magikarp.png new file mode 100644 index 0000000000000000000000000000000000000000..4d4a2be6c6eea640fb6b1d264b22c16ba96b158b GIT binary patch literal 685 zcmV;e0#f~nP)1=$2!VYc6L1fK2A_st*n26o zrQ)R+CwVID5~N?h$vK3wwM zmVST-^-b?jdgFUOCImg?Fppa~84p@Wn82ZC&uIaZK`4goiVgbbsUEVB(~?@2RmW)w z`Ba$E>z+q+?TVK#IObXRO})Fg1-a0P{VG`lS%QE3_{xUVav!q$^%$C#`lhg(Sgowm zsec1<$Drz8k4r9~RL-`w{rqEH&zhDG{t0fzQ;-|Pu&^pit&)P2uv)4O7c{AzA0dD% z+7%;PWYe))BYss*H5nUo0ZNFt8L+EzlH)xlFS3{%x2`d}-zkinQVVPoE98^7Pz-0#`o z&P@S?s;UE?kFivF0LP{Y8lZ%}J$24R8tju7N)^%bsX7|Ggr?(24fCNg^fV+E;73%^ z#fpt}ZFgI=-Vg{Fe}?*EmhU^ zbRKDrD$_l4Lipw(7DJ|lLKb{INm`ta$7KPUKbw=2i$T1j4TtAa5BOMMl6;pSI;M=& zjLo{{t4)~WqcIFwSn61J@7Jym*LzanblpSp^5OSR4_S0`zZKB?le#|Q7H#|m9TR4= TQEs6g00000NkvXXu0mjfkY7bA literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/magmar.png b/graphics/object_events/pics/pokemon/magmar.png new file mode 100644 index 0000000000000000000000000000000000000000..5fc8fbcfef19a971bec95571473c288503064ac1 GIT binary patch literal 724 zcmV;_0xSKAP)|8o%TF#x0x0RI60=9bOf0007C zNkl%I8h1VPDH27z}AgX|BnkC*VQL%YFV!7YyUuRUg*`I!n$rOUjow2^}5ySAAC zVC&c0j4Kp|_H=F=U1qbVc7KCa&z*Vp8RPS82nS|<_hmj+b!bIasza`R=$v;#;3Wuh zUFP@dSRJUyN;&3M&S~W1%pV$X75Y<=74$*h-{3Qc50yFkahVnNfw9c+y6OLDDsmh# zvo12M?gP(Lv}6TZ^Q#sD1B(ixAY}&R1jA3b@8y(EJW7Cb{3?e81G|&}?~pMaBtY+o zP|UFni}sF5aAFv*6UW}F6&{m-yYMs#fE5xNKe3|<9T{DZzm4@4I65;lN*;#PD2_Ku=V}i0d_Af|Jo*j zk<)O&AD#2!FbTj-Z(uaa7PY z4a!XsS=49ksj)MwfwSx1extgPXZz9C&AiXgi1_p{3qC!>T`+SO4Z9)_HHFX%mV)^! zHGBtQsABKzE}~p6q#otvdX-qbum71_6tDIU-z@z;4%&C% z^u2qg!b-!?3%rvb42*-J_k&4Kg+4z$=m(Q95mt@-90n=l;KH%jBY-CT!sIV`8Nf=D zFcFrwoqg-4b{hu+<6yb#lv29AiG5&6Zt&Wxi1F)y!kOI``@$(@O6+%a zU=)U*j>>f=Wh!){={OP2jKcZQ+5k=3K}xJhuk(4eE#A00000NkvXXu0mjfm!Zv? literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/magneton.png b/graphics/object_events/pics/pokemon/magneton.png new file mode 100644 index 0000000000000000000000000000000000000000..7a3b83764c1c624394fc2ba3e4c6d2d87f3595b1 GIT binary patch literal 801 zcmV++1K#|JP))FMW?5(o4xuC)kfsN+Izf)T|2jaSw*(m=`ISb&8}z zh=>E4j{HZOU7Dq(mmZ=8!-pr|PnO3MAzs((`cGDd$5{xp|HKZCv&f+QC-#Ls$|CE{ z%S_K3m_PPGy)~y>|ea-|ja1_Y8 z1k;zGV*L~G$5<~!eFrXQ0mM8o2mrVM11EvZF9GtL)nD>@A--(Er6-=52g(wMCnVGNy*V=t%fh4%^x`7KOUNJk{^Z>i&eX1vB_2PP4m~$3D%mcHt*4=KA z2~6N29vO~W>j5#=Z-`T%5GNaLkZn0I3(U|ND0?QT1N$gY8?W_~s$#tg+@>zd`rQ-% zb|+?m%9pAw#w3_H21+Qd5wBoAGqj1JVCG3c44^knzpw(gvdb5x?CLu-=P_VnSI+U1 zz?X&Nf|)0Q0uP0@UPCbp>%^<^r29slU&hxu^KzGj7o9WxbGPiMPCS*=^hSeF>xmWP z^-xZp@Ao=?X0-&?zUyvB?7Hu(AaW3>8a0M@;?2Ylrq!B8A6?oX>z+Ru>U@26Qtq+NPZXv8m!fyZQ_|#m&6VSK3hzv?IDKg2>g}MbfL@ zx}h1DwvJC9TDd=pD<4Bhw3Z+ZsOlBfoxp9dm{%n zn+Ry0BqV`-tZvpXMK)D!UDd=Ls%rkNd>BZ>MNtL|I0*cWAOs%#*L%5s$=HLvz&{cE f?b-``UB}ih%HqUtx0TA!00000NkvXXu0mjffiio6 literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/makuhita.png b/graphics/object_events/pics/pokemon/makuhita.png new file mode 100644 index 0000000000000000000000000000000000000000..ac8cd38f8e5610f7fbf53e7ad6f3cd7437028d07 GIT binary patch literal 554 zcmV+_0@eMAP)s zoTP(;lv-MIF*#cQ)l%-gG0mJ(|5{4TQbC+jK>z>%|K@vpS~&m!0RR90gpkl90005C zNkl1pw6b4`oo~r8vx*GDZprW@Z^5C&1k5uFqh0whaN)|(fMG?M3hCqgp zyVSB}M|P1*lc|tLmQRY_PozkM-0D`hy4AU&c-mJNi>C~+{akL_&`i0MbWvR4dPih7 zg$s;MQX%GM12^ZvnA&AhjMWJ0SW@T2c~8$1(Z%*mfW9gQjeFi)t0 sV=?q;_}r3V!_nmL^K?A)W8lBmH`?4tx$gMyKmY&$07*qoM6N<$g0Un4!~g&Q literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/manectric.png b/graphics/object_events/pics/pokemon/manectric.png new file mode 100644 index 0000000000000000000000000000000000000000..cd6bd3fc9639273360f5e55f222a5949a03cd0b3 GIT binary patch literal 756 zcmV&Vd|4QEGYP7{_i+e$=AQ0|SY5)KL00030|Nq6s<`@_l8?Qh10007i zNkl!MBmjal~ zXH8Qw>%{_E=Ea<8V&6aZ(g;~9^K`~Ui~`4o5oN`UmkW#rI5ykLES<3sQVD0;RBo-n zvD?6HI%5|CU1!=HXi+fph8i%#Q@%~I9& z5tpK;oGI3~^R+*4?eYzrxQrt-oeb%ae> zXF~7F-!gxF@%s^Zo%@1>`^O&}YtvfuegNJ#{}lr1BU?wv#Pd57=K8k}KR3g%X*%}> ziQt=?&DsPKz5>VQO=D-bPfAr>S7C(g_l7{P7H4Jx?G#!M1?hp`#6utyjBjG^(cDj0 zYIj^kX&ySr&rKEf$EZAOYL3?U&E^mhafq)jaNvPoU3}l8SD7EGkSA$?9EgX~mA)LN|q>?R9Mf%>Z*2!JkJps)hR zCRF+GL0ApD;${UKwg9dXD-ggm4$x#=fLUM5Isme@>0@g+lQmv-Vg=giU6=ifH@fP# m9dziW8gBRh_OH$V+5P~KmM}T@Y6i6c0000F%S?C|J8%utV*3^Onu-Y}gWv}R! z8vcBmNs^bxoNTk#m#S19q0_3;vdtUK)so-X<|^rrN^CJsh?G+0iGZ?i}6oHif;=417S8@HAlEp+mx#8Wa%=nMaGxh_J@5*8*bd=6yl zx6I#SxQq%`+&fG-z#&S76>_Mf6vW@F*)$L8$DiQ*cJDYH;4VWIRGAfeP@SR6TKiwo zpnkamC)=!r+e}zncHyuH8L%-Nme+)KxFziRhMkMn@pheSUUGePW#&FlGRZUdwPG=2 znIjyLW8ckryv}*-=JORL_Xcp5D}0xJkh|f(2marB1uf;?W`Ed&c>n+a07*qoM6N<$ Eg6TaFYXATM literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/mantine.png b/graphics/object_events/pics/pokemon/mantine.png new file mode 100644 index 0000000000000000000000000000000000000000..7a66128a486431834f8f563b4ff56f781afa89d6 GIT binary patch literal 887 zcmV--1Bm>IP)U{@!;R+WAmQuJnAq^N8;SA;qyYV|L2Uq4Haw(P+_XKI& z1rzcTsgfeEaO_?R6U=6$kyg8FUpB_1N(K(@JCEj{8I2?}_TT;`gC21>;P$j-&1iU7 z_0V)N+tKF`GgiwUJ~m!VyAk=iht-TehxiW!&ZcYK#iB*%2806wT-o`UK(9llh{z=> zWdcC#0W!+yjuX{B4VaMv#c`tY=;|fDQe)3KgclweSkBilm;V24wz;TAdbP& z)k>*YhZ&@JKpD_4?ILJBYLLq2LKtNwP?|stv3OTN5+GJ_y>Bab8R^vH$X-C=Vk-p3 zm(&Mb4MG6wd521IC34#ecvi&V_8&CI^%y~8kA2k0)FX_0;`j)^?0iZsYigo_n2&1@ z?iz#+@|6=%$~G>eMq!V=TjW&23B~sX*u>tWktXH?XS&PWpH}SgT)3$ab?7lfhPH%Y zp@3vAVNqkaS#zY^@zjAa0fnb&MG4Nu-sB5WQ;IyX4kfsxr3wW=iVw;O>~lb0OwS)r zVpk!or*A?=rotR@%E+}KGBqjNQ@DknQBX1pO6!k#ZgNqVxb=k(=vfGKDAv2sQ!^8y z3IV-f;5bx1X&PL-6y%xAJ7VasiR8IJ(4*3P%MaD%Uhi@oGpM=AONV zc@1Bpcf*Nw<5%F!<@G5F$Yw_~=;U98Eu#{SKML{wmO8S>(gRDoAdl>!diWl03E3oW zTnvt(iRt*4C98-%T;F5-@@*MC zu4^~hmu0%FCO04M?!NxGpcW_{8H)`9XF2PeS?TtBc2zoCCU#SCb<=U@_vf2!*ihfr z!0pxH2E1pz>wSU>@0K0j<0LG5{+-M1smpKhz_H;2HCZk%x__N0B`?@>tnvzW}njL1Ge0zSIB! N002ovPDHLkV1nBuqrdS<{*^407{eqAZq{K0OqU!w0i)gq@+?(QV?-M!COPn=E2v5s}D|GR>}>^G*~pEjz( z@btETKnv6Pu=Xoo))1<~@LsaHg&Ievb^htoCsuq=^NgFhhuNIQxi4LVl@>;wpM7}Z zED-sO20+WWlM4qvk%rXv!5Z3e8D}FAJn?~%j|7>}`#w{6SP0!7ZMse=o4f-7o;c%x z6h5Ov1Ha*}VwH>cSp#iYyp#u42Rb#vzaXxHXQuf9A8O*UbXLBg7>Sgy0nil8PgV-o zW0t?MKTL$)mqMKfnGXjJ6gI6+CWN)Ca=n=cjD|_I#YR$~vmOxMssYem0W_fQstlXw z03)>%_{!`pd7Z_jg{+~S@88T5%#|cvijl=PQ5kq4WY#w&K;`KGm}rmzck={uWx?!~ z;J(U@s=PF9=Zr-k+*S#Pr?a>Aqh;knasL?ReZ(9gq|{S64R{f#`S>I*ZV{ld5VjZ5Vo?Y*Hm9lcw4^P$|E|X{@Ana>6a{E340IBGzK~zw z1@j(TQHp+eJ%=HlMB~fM*DCk|v#70mcHWQ6dDH9CHe#-D<@%B~gRY#oa(&gMeIGX% zobS#HB<7g!wwSlUdv!k;#h53bNPmJ>cH@mA%+BBj^5W0_H~U;$6Q|XNf4F`C#8Odn TUrL4Q00000NkvXXu0mjf7jsLv literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/marill.png b/graphics/object_events/pics/pokemon/marill.png new file mode 100644 index 0000000000000000000000000000000000000000..d3b8bc2dc45a64a925f0edc8f87a095d03425c7a GIT binary patch literal 562 zcmV-20?qx2P)Y@M~mf_6~gx7DKXD;wVFxNa5n4QkKwU^Ad<(EL-2DXM?e! zBI;U|^YmTL|9^KDVQh&dmRMqme-uVPWSJN(lX>P+7%u0T2`EQ`6XtM&yv}EtrC?7o z%S_xS24ha4q!TVonFG{x@;PQ~v)_((GU4*j3smPDNgW?gVWEmP^(mF}Vt?NYIZ%Dy`#T%c5Sx1)~N#rfdC`rh+#B zrJbOaa9n9_x6tgAxRC=MIzelAaBRW^n*z~K960r_WIkV4tK!JGU#sJb5%ybZsPcvs zylTm9H%MF}9t|H}DTCEhk#vHAwNtdNT(yY%eq1t)+2z)h(4oO*Z4k8{ zMr6DJxQdYIxdW+<*eX>0Wv3Fc+sO-UM27|)i}+LHa=VXF$!#Dbbas_Pxi!>Mwvhq5 zo{f$gWafIF{QEH;*E9L(SL1pcmrO7GO#IpS2A!b!tPMf0H~;_u07*qoM6N<$g2`kC Ae*gdg literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/marowak.png b/graphics/object_events/pics/pokemon/marowak.png new file mode 100644 index 0000000000000000000000000000000000000000..ed8447205bc6862dcb8b1fe768eff7a9c42d7939 GIT binary patch literal 669 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 VmzQ+~nrHw3002ovPDHLkV1mxT$=m<{ diff --git a/graphics/object_events/pics/pokemon/masquerain.png b/graphics/object_events/pics/pokemon/masquerain.png new file mode 100644 index 0000000000000000000000000000000000000000..328aa4263c99febcccfd6eb3b36ea38dabdfc597 GIT binary patch literal 904 zcmV;319$w1P)n;{rSw^0009M zNkl-DnjsX7&lpNN82gbDVv7HTq``A&2a~O1J!CT^qSWMH zaGE7338rgI=}<5k3?94~r^f$+WMS8&HrLagbazsIbT4^>d>=jC_kHi3M1cwaHAd{Js*uPXqRxsd#tZBy<2Gl5Jz`8`o{!me zM`T!NRI%--e0CiSxgTv)@pR=dUU3hs5j@X(vO3{xG^OHRQr}iPwwJuz4hu|V0Y26T zynr`Cp&ri%iryEVUpCYNmmie{p}qB9IqcCrhx(8UEchO59XdgNS+Dqa>|a5FQA-tE z#0o$wcuVd%)VKOR8#io`#_+How4_&O8h3AazPl|}pux+2S6Pq->p#maTXC3%q;RMY z`#u{tLH?-cu>7)XRd~rDKT!nNmffaWU=2F0--~6e&|qM)>&S^vOb;odHuNF zWNS9gJ~M8#Wk;aWJ5aX-iXFSxXbFc2fTD1SR>v;o-+?1z6cX;q2b|AH zy*O)Cw^n;U6M`o8c`7`ZFnwiVA!q=`lyOeHHpbdF{7&gWoK2jW*GMWW1qzgffX}#8 zkb(pg%F}}Ek>O6Wd8H>&rUKb~HLD1KOWCW4g9Xo0_=ObINR{&b3@M6GfXMmgl|1=f z5O7jBDFx}VKv^DT8reyhND4eDHNLh(0S4EG9L68|KK%7M8 ev4@`{5`O_N7I#-o`d&Z)0000oJyQ~IRF3v#l^*>q@;s`gHlpbh5~ZP0006F zNkl|MiQV=hsuDB7WV9vY$0xOi(C9pfv|0faW3^A^=~w6St=9tm^us!Z`nO#^p=&e zyu3Sgcp$29Ws7G6c}ru^E^~=5K_;#+u~bY}LEgSYT9lL8H=*nA@iT1MkH@yxd8^83 z=Q)|$*K=lNstPuIopEBF_pYkh6*S+S+J6*AX}(u_!@|FiLGJT*9roUf0V4Z3bMvjt zLFerne8mPge64sO5PAC-Rt3;JZK;LQ*GuQED(wgC=Gzks{Hk;V^ljk0<(cZSEqDma zCbcs6ZqCYXTAHcFIG}MAv*o;{rFXmi7q<71wK7y%dt{ymh%HWdP+G{J_6%7IBI%YC zGi5D}?i&|~(-(^EI^5r>0bE^SWu+DpK33HSNtCtgkjJK}CCmdv7UIXJyLtdYefW1% zyWrCU0liG0O?r!9)GxqeJ1-h%^cHhS9NE1Narik>yOyyl9~pTXfDT>RLNK|X=D91M z=OiO}!|Mp|k0tnT*M}W6wV;QlvG}^dqHUTJ2fNLmtk2K&Uh;OaR}|&GyF3=!id_*| z;COth#UhI1Q@hymu~_HpMZRqDlAfAME+V_CDBj>#F1xoZIXPW$bzTSw+xmTeb-?|_ cnfkBBF9Zk+0A9V2qyPW_07*qoM6N<$f?bp{bN~PV literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/medicham.png b/graphics/object_events/pics/pokemon/medicham.png new file mode 100644 index 0000000000000000000000000000000000000000..4a98c808a5f5d1d815f51db1f32abcfcc48d2e61 GIT binary patch literal 571 zcmV-B0>u4^P)Qc3^-0Hlj*q@<*SgM$KOYMvg>7~%YmnY$oW{hnCe8pFMRG>M{Lm?*WB)<$9&LSPdDehu1 z<}75i!`Oorh{>3<$ThIOb$5{lxLSn^#KuzRcfEmnrAuvsdF$lzV&sgKFklIkZ7Bv^iRHDM0`L0L9+_i@o+@l+8+WtV&vQquN*X0004L zNklq+>7j{SZ>hHbgJcvSdQ$5R|I3Ug6A4Ij4^~JR>LRiqhR@L zw}*UhVl{BE?9&Id41Gf66?7Q+$ZlCE5H|*x1~krQF^%m0l7(E^-8*XvXK{u}Xti6? z?^_-TZQ`G`bxwR*s`YB`s#H&`;u%{u+uKez0jE58IaIp5c2mfOCO5bX$fmKl@-ddEv3hyVZp literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/meganium.png b/graphics/object_events/pics/pokemon/meganium.png new file mode 100644 index 0000000000000000000000000000000000000000..062fd8d6432084ca819b0ab830712b6d4661aee9 GIT binary patch literal 798 zcmV+(1L6FMP)~Am*$9qs{`600081 zNkllNpjtj&jtBpw@TSW-@8#08rT$0kkcsUy~ zB~Z(bhTuRFWh{lJ8oQ=c1>dCnvcXR(Q0AELir2#W^O|+RRLW_-!5bUQ z=2K}W`ql+wId%eE6RPrt3Fg_Wl2z?n6-XU8!A)Z+X@dDh-LGt$INv%jo=)QlZmN$2 za}{WQU9&3qG>zly32vqXcQHRpH_*2#c&DCPo}h+%9hhV83|s1n2*9ikrXN}xcVkP4 z2rzfXIkd z3%Nj?pQwSo!_{ly`=NU1+o-F+OBFccd7VkKJQkNHU(F25RD3Xo290@#n%BlRz&YIt z`ql>JTCHi2eQw%o>{taxazts{%valLK>Fh2wOY32_ToDSaeQ7?uxs;)sVp)|>;apwHbcOEs~;nUH>L;b c%Kp9MC-C(!x8p&}qW}N^07*qoM6N<$g3bgNL&7=VTb5hk>IS>#K=H}+^oH5ON5R^dx|NpfA=7Z+6L7Zv;;Febn0005? zNkl8nu5CC9q9QZ(mpDBwr4g}@LF!~CeG?hRPq#lC6}i<1J9x*hY%D--060TWMa{6(yUzdCyi6pv_k4! zdB=P)eRjO`#-(p0+!5TAJOSrtNE0|ir( z&CRT=tdxtCb82(m-rj>sO8;tV)k;!>&Hu&T|5~K~N`uuoVze^on~2X00093 zNkl^vP;tQxxL zAQV^*1(M>BLRnUxv-5NkRSoi@e9OK-2**w6GHz-`C`zU;nClb?#& z0PeXD6dZtw%Iltuj)9YxhUo(LQuk=F1xs7N)#Lre#p69*j<${qydIYO!mea^DYBqj zwuOWoCqG<)z4%8gXa$JEOc+D9yWS?HzI}BphU@~f5+EDuo?E@eR4s4vK#^rxs-=I=$4JH-{QqBUfYvL8wmh*!Wee9N9ne|aL@>l^w!y`FRgVXb>!x6G zxvc{_i<<}ryutm)Sm3yB_xxQA&{_OMZ+Jh{IlAepU!i)d|IOnU%`Rf)fE%;500000 LNkvXXu0mjfSWB(O literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/metang.png b/graphics/object_events/pics/pokemon/metang.png new file mode 100644 index 0000000000000000000000000000000000000000..6b078f71a59840a2c33067647bd75c7577a100ef GIT binary patch literal 870 zcmV-s1DX7ZP) z&CRT=tdxtCb82(m-rj>sO8;tV)k;!>&Hw-Z|5~K~N`uuoVze^RRe)=0008< zNkl8A9NSbHKvG7UWjsZ(fC>sQ1 zDIs)Fu>4JuokVurF<9BDx;Q`M{QjRl$#N9EjkobO{@Xy@{gMA^#Onx?WU-4>KmSz$ z1o1_VC&T0+d05;|`q}w>VDu6zrJs`|Ft$0qHcmKy8uYU*#|H-GwOIkRzGQZcjAe&! zvdm(Z5BfQZ>cDf!ZH|HJ)eMp(Z*Iso6V%{Gs zhpYggD*ZH#`q&0$HZKbb2su(uqxY0@PSdNgn^oN5XrJkd-7=Kl>q&Q*Txn``K-0~Q zTi=k0e?osOm2~&^!>EtRgTC90etzAiQ4eEukP_G}fPCCp;TF$~&ujmWirp1fDAHzG zI!soxFF(fWbG;~4$gvY*$+FEz3P2~^>VUU(fPr6%0+X}}Xt5QFd9oR8=l5P%Dt%%l zZGaws0A&Luy`Ea33|Tfa0HzAgfgNWMvK4Z%x}PM1dtoV!Y1ovOr8*42Rh+SRl@-SH z%!V~hwH;r=GSg8HJ0WNKM$uYmAVuRD5$qgenpOyG0`@|!Fy;XZze4dkM9!Wgm>XMP4x#jFqtr#Nlabh2Urdm&cJu9z2+ ze72ux%W70EaxWCfx#4-0IiY=Tk8GP5!R8#ZK&nYtFwlLXyw-mFK;w z18m*43%HBDkf@BVJr^K!U83E#hM$kmk^$%w*FyI~*1`x=F6{MW5@$;3nQ{IV(L1{_pZRMFgD_`?)5?O$~`d5R3U=H`(T*j`pg}n zJt`(HonSTcCrej|!{%dyIP^cTD47ZZNR@*M0y;wX>nNx%7s8XNv7*UXC?v?CmDmwkIt1_8;7rN3incK`qY07*qoM6N<$f|bai#{d8T literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/metapod.png b/graphics/object_events/pics/pokemon/metapod.png new file mode 100644 index 0000000000000000000000000000000000000000..faf8dc6d6105b9e94abc94176717cb62ed80bd53 GIT binary patch literal 463 zcmeAS@N?(olHy`uVBq!ia0vp^2Y^_Cg&9b0+m^KrNErn9gt(qPyXOD@|9k%z&$;SV zyv8snN%KF$e>ggN^r(P<08jxOOnZFkIs*e^l&6bhNX4ADlMM3?8}PX9tvEHKTSUP$ zHB&M3Q&zps}ewrkey?jzqdkNFl~i%kD}KkImW-he_z znzr995{@dIQD);kcc(AK`5f=P?*0N+CXX4Pjr2P`WqQucsoz<7|K`#l10q}^=XAN9fy|foFad3t$>}@qe}vNTHX~Za24NuEV1nA-n*h=UNOueTQ~PK zYUtRsJZzs_zx&oygX?S`vsi%osuCmmCX0ItG{mraIyeB8$UHu@w(9xY`hZHA>Wl(~ z2Mz+)xYLrwFADU0=$7@9aG!O-RxE7W&*Fa_iv`2(&CF01Xno2gQ-8uDA~7{<24lGJ yVgvDW#rzv*Pw+f(v{B>E4ma2SF)1l2?9K`V0005E zNkl*?>bF zxc$P2;tTTe!bs#Jk1Y^I!Y=CeY!Z_dS|2uI+1pxemyN1pKj-X>+)JkbYO>T%T{&V| zgX+hwxpT6`p@!3EOZKD57`&^9Jv`(A4lH#Bth90A6pF z?G37e2GrnYOLesZQgHH`z6qp;@KMUz6_MMypnkm$8=nhK&e*F4wZ^24>$yv$Up66a zZeemxXXFvt!x($Ok_8N|B}N=*z+@KSx{h@e+q>2z>_Z%#`RJ^rGc{WKl*7n%!p=8H z6GziaA!MU93yiJ%QYRdy-kOAk+_lYO~HbFMCYc@19J`r>!O|1}poN uy_F_qQA7n}OUwU+zG{(eMAH9f`Md$n478|#Uu50@0000b3V4C;;{J#@PTZsS9pC11Y%I}P78QzhTqOwHk-ZN%FxWKQmYNqcG z8S8oJ!kFhh&)Xmg3)FJ$lKw{Zg%ZyI8kcLVby?8chAVnlpvt94x}o|UU(GGRRC?}0 z&&{LLje1W*#?aV^6h;vTn>@1xpi)Z z{OX3!Xg_R%E(7Uwb}9rxXK4WiDU<8#N)ou9bQRxiZ9N6;!Z@zCfDJ+5fK}gu;F+-C zX{689zyjC3=PMQ?mG^v1Xu(^g?s6j-FenKWByBmj-5LaQJyIv=bG46tHo`c%E)xjw zpqE8o18DSduE(bYl(jC0;AbO@V}FeTcEbP*w@9}LGKC9sZHhJl;Szo?LicR6+O#l6 z0UQia_jCC=An2_K^BRJN1RTrxF$Ss6bNPZ}ZCW_3D8RNeK;3`+^csMs2=lt0?2tMc zZ(pi5>>e9cJ@ptA1PJ0z)cv>H*A*nx|H!hG@4|H0=zQ=MDJVySCK$MHIpqepmf#V?{Z^fTKqMlFd%_C5wbd- zaWf+bHft(62I3VyHG2~-Bp6*dJ`?X93JvV$&bb=vZhwQD!XROrrptlS9S<=m8rhHp z#{k>5*g1o6o&iH)U}4A%ED%6e&N`8UT33gb?6LCkN7RS;j*M&o;nb}F`BB(SC$bf% zE(79%5X8o0hyr#Jrk&`wofJZf42Y3iBO9WS0D{*sh^pL4GNdsXVu1mvxPthxo%pNg fr**%s$_zgMxIqo;le;3~00000NkvXXu0mjf-EwIE diff --git a/graphics/object_events/pics/pokemon/mewtwo.png b/graphics/object_events/pics/pokemon/mewtwo.png new file mode 100644 index 0000000000000000000000000000000000000000..b77a2939208a459842f17d16ea55c7069be4fc91 GIT binary patch literal 792 zcmV+z1LypSP)wEwh&)r(rJb1{_v0RR60|Nj90{{a900RIpW5dZ)GvFg)@0007` zNklGqo?%+^by(6@89CpD!g~hdoR0)wR1P}geib=k} z90SyEu&T|i#D;ay4;e+%oISq*%rKy@xfbY)=b=B75V;*WzfLfL zm6gt-PLM_9xes(gD729%u&G+0X!-U&Ls3=+zNy0>*$KtoUJ6WPBcL)y&wZft7KyE6 zDYu0mzJHWOQkAjn0-I~r#Be&OZpqm;WG7@vl01Qq+Z8_QhPyx~EGaK5%Im#P#I&>| z%7U^sun9L_Wj0eNQKct6A@=B%8sPjt7i;nz+OeOD?Ap48IwO~B+2b)fK7;W>Cx zby*b3otbk#AS%U(p%o4S9~cVDcXiO=tHN;|1Xxx_S9QD%(00Uq$+s2WZApDSpX#te z&-&KS-pL7r3-*q4V=fS|elRBdO%=I1CP9Dwq>du!2e|C7Hb9mtMx%~z# W1Wwis1vDxE00005D@?W{{R302+E$r0007T zNkles<#`Wipify7);qg%23!=W)()R{vy|GmS% zF#TGSZsbud@(&0w1}Ikj(EhRx!%`Itz8q^-31XYLl~Jtl)guO)#vn5K|#o zawUUxa+M`)0X9&r@rMrNK2VOwYLyTB!*1NIvWUl;d3$8J#Tao@t+5zG-#VUyoG0j( z>nKxjyyaSNBS6^L`-X*MVydy{6Hj~2>d6Jm8-VR0IVkue2Y`AORCpC+ ze6!KL2C!{%P%v4NU@GLC)z|_;tmayG1>-f$vY%txrW_RfzJnK_vBx+_TpAeTy1v?| zrtRClO9BN8ZEKAwV$?`z;?6(e>xIg0I(xKp3ub(eqC)8DTI_^5i$IFJcSJg?z3-k5 zUoJ;#jz@DfDS6)CUjUxk*Q}K+JoP@qlkAaBdk^UGIGtvL7?(Gs%`!WQ3TviI|+Z(hryU?H8h&R{A6^g-K@SX)CLQ_&Pm8ybL)3zS@& zsF|R%(bs8Rs6hT5-K%<=#k2nQ!=6%%OAa7xu&K~`eDXSWNVl(r=98gT?$0|ACz#qw`uTcCJ7Y=jtpCmv8y-Ya3O zIWeSaQr^9s|JAhr=GBy}#f!!N)nY;JgIcswLFR*t|D=OzVte-X?f?J)v-9c3000At zNkl2>$2B~8&^Eb$g<{s}&XVAtQ1^sE=58>(BNppA6n1t1!b zAM$)GXPNHKPT-!>Xw)3{*Iv2)yU0@so5n5j5xg&gc`OfC+9@PT% zD#x2j_`aFW{MS4W$hiPE!eBm%cvSS!Uhe^69wxMSx|nbdM4}iMMrDBRoectGbS{>_ ztC#ZzD1?DEH#kB&f6U%@fR)g^$#+7K=I#}~TPV)l+E>1NcW1+bOf$-w^}6{zSqfky zTv+4iq7qyd&UFV^2}z9cw%M}u-gV#lNC|@Zq!PI9j|5gb-rhy^rri!Po=9LVbQVhF zRVy+IC%WwbE1{F%SyX5BolATlNQJfJGmh_F-@oOB(Y9I=8eIR4r=KNI3XS@iKSEvB z0aijsrJ+)veGR`G`ai8fz}Pk9fAC*Zj{;d^?5-A&2Yh-U0w{#d5ki_7uyF@i2^Wx2 zy=U5L@@DG5$yXTTyrLc@azS0k6_y$ zFJo-`0;psf2<`DgJf_$q_Dt^x+?%A$;=_xJRj6g686$#X;thN6J@DnO2?Fx>B z6dKlrUy8iKld(T3T8$F)&R^)0L=ZZU^Ei+HX2_T4gaJ<4nb-50 zc1MDZRwq2>^znqzpP%)>h8_0E=~&F|9&tLdTLnr{pP+6Ik`M{hYEqb3jgTOu)|9$k zk^mvFBrBUqLdcTXT)dGaLDj^X-Gsq10kK?J42%;(1z3#GGad2jrZ+9QNIQ&5t3|OQ zX0-|&bF-dfqh%}ZwGzAGWmxTyw%QbGHA3md<MULs(aova-MF!zxj1J zw|b}&*~aSh$0rY@X-U&4oqg`Mx8duxJJ{=X z(sqUqT?K6&h_e~S*z4(fytl3+w~cFoO~YgjK>(h2I2JO?U~&cht1@s+VjT7(U0>|o zE4O)r0Y{aa)v#pPUnV)$U32B$LY8%PaeJ{jrkGGQhbUhRVA95snP31xSJ~Bp;-PbU zn_inu+?(k|ib+Uscx>vEa7)A39HVQjI_i~y%2CVn&{iKL=Ue{e&i`rxnkK=N?1HK} z4UAv4eLl+~M+YiTN#r@aoM7nP-)Gfh*zo%RWF^oE1GWnuOq274qygk*V7{309pq&T z&_?FI{9t8T17j?nvb-}82 x^#Kf_a*UWFH2&4B3xmXG-_kH3N0GAiwegA)J%002ovPDHLkV1i9~UH$+7 literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/minun.png b/graphics/object_events/pics/pokemon/minun.png new file mode 100644 index 0000000000000000000000000000000000000000..966389e03c695cd8cfebad68566f0d1a744a99c7 GIT binary patch literal 454 zcmV;%0XhDOP)K3NY#FU?_4=9kz=ck)!~VIUrc8&)R=#b|qZiIOyP9l3uvzFrPFS z8|#X5+UA>u7G|{HuhC|-Ax7NtJ4qTUM7;ckr)VP&Xv0P=z?a@OP!$X$X@Ji$j#1Li zRXvNgp}wBgKw90Jht6Em&KX*awlQ^XnG2-Vt?lhergO|#qH%sPVTX`5n3WK<#zwjm zsm7*QxZ9AnY72Q0Xl%sMgU}cXA@-rhP_dcRI$CKxdQQtwWA$slwiX!>D}tY-2(qMUsy@_$=R#UwEzGB07*qoM6N<$f+zaZQvd(} literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/misdreavus.png b/graphics/object_events/pics/pokemon/misdreavus.png new file mode 100644 index 0000000000000000000000000000000000000000..3b3e61f1de0e526604eae5e981e3b358c59d707e GIT binary patch literal 736 zcmV<60w4W}P)T9p6Q#d{zCy&xF>S}FgOz5oCJ9iTDZ0007O zNkla4?ZD2>ZAUfTK8BiZ}YML-72PKCt~NlhT~)ZyPC135cbM{6A@eT zvxLrKV$Q>cb?fgBVuw>^b`3A=ayMlWQ!a%m#Tr5ub3a{6k%x7Avr{FyM3BSvc8OmBmUnNQ{ z(Hoe~5+OxLoDCr+BW*}aHH8;h0~K}@4H}6+P3;-;N1mBOq!xQyC0MPm=U!-*7Q5@%`F9xo!qY z{Iq`;%*^Y?Lr4TH$eDs5@8-<>S-b!b*vWW1Y&au& zLFS1g!tlISxs&H-d) z_DlT@b_N@VTgYeraVPuz4dy&}IcGV30aEpW}zwIcJKnYR_4KtuD>I zJ>^`v5~nQk-riJu&d}SJ6%vDyIr&Bz0z&-HclVG~!s6v+#bo~=8 zlnK{7;*^UScQZe-yV>{_i>%tAsH$?uu* S|D$vO0000X$M5@EAD;I=g&+L+*uNNR14Z=_^XU*r zBRn=7kC##M0}stqzaCD5mr=Z*jAX;HmOn)~Z@*6gn?JphuiSkj>+^cRhqXIc{7J_K z(G=a>P{_fSz<=B+tf=mQf#Q4m5U+ky z%8R*qC^3+a8zX3Ygsz^p#O1#~ND6w`V_Su%heUitw<|5HFtDP?y&#kreY|{kKHwMi zfLGWt2xeX>5_k##+Xzz3lpvxj)D3guK0Ee*s@_t zu@dZXwa^0P^~ZR*Gkl9*uH%?=gc}}74Eh(vN&F(F>lP`zgZv&^x|f0-Yqt8OXK&;4 zx4~5NoM!8I{!IvI-kV5l1kmEs%gOv6GoCn@*%bVcw?qmO-slo8K4c`z!o>2JUSn!` z5duREUSIRIq)h=8E}3{y{fc3mNkL-fpI*@Jj&|(Q@SK*{OIm?G5|}{`yw?&t`SqCS zZ(jQB}@Y&{gX?U5x!pvD}-k#2j z2n4-ObSw|rA2;400!LErOfJPuI{g9Dk97|q zYk=_SR2&DQ|EKTVHje_WoFl=#GU+2!g>!`3eNN02=Xscl5hl7h2l(4tzndrz36RnQ8AB)2; ha3I*f+;9IregVX35g|PaMg9N)002ovPDHLkV1l9Y{Zs$| literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/mudkip.png b/graphics/object_events/pics/pokemon/mudkip.png new file mode 100644 index 0000000000000000000000000000000000000000..40ebbab895280827b778d3625c535f30b45c3f53 GIT binary patch literal 395 zcmV;60d)R}P)ojZ-hW&6?kfNHkCvcbjNgQPjx?^i>n}-yh(*B+EgSF@tx( zq?nW{ViuKab%JGq*c;y9P@yt0<5i>P4ei%}Npv9$XYq8zBj&(*hb1cB-vxc~zUOSS z63atoSnu>D)V#rs*UA0MBWIc4Rn`47a28p6>21y$#P*P79}ip3(!Skn>40%TSx?dZ!n?i}Y;XH;Z02cwbLHx72RY pD;5P8o#E>II51y9KTG`6d;)}-NdrP;o*n=I002ovPDHLkV1f1>lv}?`-mJ8}gNvL&N?QK_|Nj90{{a900RIpW5dZ)GGYRYJ0006g zNklPbix^_1nWqhkO^A9j&w;Vmva6NxaF9!NvIbgcW(;u+t1p- zw?ff!5!U_i(;MQ3V@4<8kGcZ+0VO}EvIimC1~(dql+#8i*9O23bRfEp&+QJ+ zp%DtICR`ejFlOoz2L%nYxd>Ge&O@O6dYkV}fGWacX^^f2>ph0_EJ1!0-)Bsm?8>Wf zX`oFAVRVp364Ez9;XR~hBY&?#so}JokuW3P;Z&LHEVRpxl}r2qiff^%A0RFve&N>XX>RIdkyo<@)&U8B#fb5@F^pL%Z#N#GCE4+ z1}(F@H5xJ8U3pfSQ++u?66&<8{AXaX;hE5;fv%6(JIp;xdCydlwv1z#9x)GT!rH%Q z(Utd16`8L)9A`|*TF`O7yk|4O#bMxz+;2zrf!-AHsorr8Ff`P zezpm)70Tv(m93nc?O>2R60OfPe5_P@Kdq0p)n=Owk}>p z8^q@on*qS!%N`Rd-XNb)+6>$4{nnQao)Kkl+S?rz^MH%?CH?fILp+nRU;C?lTCX&3 z>SzA}&B0m4r~duHk#xEOa&6}{+e1)%!dvG9gtG*EsL;&sj4PY?P_T1Fa|C1wC&m$~ zdC#(j==^V(^K2X8yH4~Q^L3Nz-k;Zh`SdIbc$5>6qF?k+3Z69l+xP~p0Um-$ZorrT O0000as2N|Zq{Vk!ULLCvf=gJK~6N&w9{0D~z2&CSh}l$26ZQYk4ZL(dC|0003Q zNkl0>8ntHPo zY+5jJu1crKa0cD~e69>< z04hG0g*L3)c%xFqS`cEn;(eM}K4^~x#c4vk?M91Adu&hW?EHc@*W~upo%bD)+h>ZL s1v|Cv{fxjp&~GpFb^-TGZ-Kv@A1-qfgK!I{mH+?%07*qoM6N<$f|5D8Gynhq literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/nidoking.png b/graphics/object_events/pics/pokemon/nidoking.png new file mode 100644 index 0000000000000000000000000000000000000000..d85e68f46621e4e4979741032ec1cbcc0e434e15 GIT binary patch literal 719 zcmV;=0xWKvH0CW}xn&PV&!Pe!3T&i_^oG zjIj|7NIkE!nt?sVRUTAGOSwq6Z-Wx~#P~KWAJtl+ans+26IT z5d5~zxxfZmh@HJ~3(XTEN^@Q}U0`?6itUhdX*K6uyNoH}GfIuql9#3(E7gEfVPNTA zq7*2bZry!TYu$>lqopaK?5Qh;MvNPPcZUL2B5IU4wnd>whc-sJYq`$ZCp=j0_Ftz0 zPwx%|l|)seQgX8LmMXN3b1z26gjZuy;OXV&;HsPUZk)e;_w!hwMC%ix9sl)`kDiVa z#@;r2snt2L*3rfGvbm`?yUSG38Sgv2n-Xg5f%ZMk4|uhX&+6+&#~pg_kaih-!EaSn zrEPe1Sb?L}(yEjBt5tkZ-l|v1h~Wf%Bg$xvFO*QnE?U?c`mvNc%#V%*ioM!e>iuxn z4@4boK~>crle0!v)uD;UGtwTE#hfV&I=V?N+V48Jbb~RMBq1ncjEfJJGZu|b3J``% zOy@fhUHZx?4B+e)M3E+3O!*=IS;KEv=LY`Q_yxgo^!m0>V|xGq002ovPDHLkV1jp} BTb2L- literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/nidoqueen.png b/graphics/object_events/pics/pokemon/nidoqueen.png new file mode 100644 index 0000000000000000000000000000000000000000..44c857fa24bbc5a5352500f785607e7cd8868198 GIT binary patch literal 745 zcmVxwnbkdPRf_O41 z0YNuP>`}Hz$p{T}DLVKd!1!qL|BpxU#MmV+afyEu#q8(rIfSq0nlpBOnD5#%T%X~f zhia}r;|^MDYbV+>EYC1w)@VPmJK^HjeOZBqPddXDluBxV43i#|4$6uCoC~#+0CH<} zh6#qJe4VWYaNGNs@hLOb?*xF@+BU--3?VYSCoA~8iy5CXEwGgkpiG-%9P}{5TtK+N^D2<(>kNmKDiXvt%lp7ponaI9qjZ*o-~#qy(dHS25tw7z z&NnKkvKglM{SM&g+cwJ{QK0Te#;@++!;x=}d_4+w!2p}F=-v#Rw#c40 zAW=1m9W;rH8~ObsEXC94_+$dh(U3J%52{KX*B=a;$-oPgsN%(8%?%jhvEe=K!_}zb z)hl4&Xvh`1s!I)+V=z>chHUiv&LGAPYF;#kXh*?kfFJw#TJZxXLu?Rr66AD?Ds582 zjITY_F$yxip?t_N3aHg;jq%jE8922Hq!HWxVk b^Z$)MJoxZ_RjKDR00000NkvXXu0mjfp2}rn literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/nidorina.png b/graphics/object_events/pics/pokemon/nidorina.png new file mode 100644 index 0000000000000000000000000000000000000000..ba862b238a43d04d2e63ff9bd40f4d0800ab1741 GIT binary patch literal 613 zcmV-r0-F7aP)r%8=L&0%Je~$|eFH^~o5*~9yFs1^eVMOT{ugrbN_-jXF(J)qs71BboXgq z{lLDjP`T#Q^`R0s#|4+4cz7cP_8vNC2l6BP*70?e z`60uy=}?FDJ?|Q>eLs+dydL`Dd?NYyH^blQ#78qfk!{B(@FZa@XdsaAFzORY$aVBc z-)1Q~kPc%;zWKlS8$t{2zny5pV8WM(|91QV39}s9hwc9600000NkvXXu0mjf9~db7 literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/nidorino.png b/graphics/object_events/pics/pokemon/nidorino.png new file mode 100644 index 0000000000000000000000000000000000000000..b91be9b5dc8475114e3b42c6f925c974aea1ba6f GIT binary patch literal 634 zcmV-=0)_pFP)>|K^<4y<)wCDTBqu#e;)`5D=0S00067 zNklJ>>QdH@MGs zEXl6b2GSwJeTL(H^4<5Iq)#H`qKhuN=>Mtx2Y*PMlFSlHS%TlCzjY`CLqq&b@JBnO z0!pWQ0KU(YvNr466k{*FZC4$}Obx&jKDyrL$*W>!PHo-OXF8$%jl=zI4G9lySxM_ ztDGem4YA;=z=}x*sv3qfOEJA_aMO<0p7W6(Jrgc)PrJ|{ANQCCb|8M`!?|b^oZU1H zG>_81pScJfHd=!vDW(#{RX(UCHd`jH8&jd47k-}E`PfNQmO4tIo0tWEfbRoHyU%DS zUUAN^zT<4>+o%AhDhkb-1x%^!mN{*CG}`08W(2cw-1hEqXgpCYHf9W(^PkpZ_U6sXmtP+(FNONUG1k}UKWY@yM{ z2DS#}3!HGqEX5(lkkBgX-6P;?E{CvQkkFUWm#6HvTZ z;sW*R;vuBF{aN>2aOesg2uQ|Uu;}1$CgY1{8QlBoJ7DW!99aE|^6ekC7N1qW0euc1 Ue6p%bx&QzG07*qoM6N<$g1*WmUjP6A literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/nincada.png b/graphics/object_events/pics/pokemon/nincada.png new file mode 100644 index 0000000000000000000000000000000000000000..e14b9d96526adcab4cad719a1b32275465d38169 GIT binary patch literal 571 zcmV-B0>u4^P)d@#F_uA9G#+10RPfJ5!^BMt{__`&ob=^`za?Fy&)+s1R z^;Ax5$#JVv*wcdNlrI+ZYeoQLjWyO-W4)s)_y6{riX~9uY!CB*|L+299yDW<72=w) zfSZ0zAcSozVL>xkq@+{#&mT@EPl!ct!du%SVA~%MGP_$4#ya^JGAq;axPD;)+kR8} zu*zh}JgMwTvi&k(29Gt)>fVI625uLsaJ~!rTfM<)an9RF(^|NRmQ7%9!dt@uF;$;n zApGOFQ8Id`Hk4X#;=`q%-1-}c-K(1p0=g~QBK=kw0AZ} z{8EMAsnoUh4Q-&cbUU`Y)M+YRLmglJ)!jhylE~lCx~|9%09MoJyQx5D*X$kuInP0006? zNklM42F5v0kBFZXjkt5ps@fMWPsS_07Otgl`RsXoAX`&^e()7=#j`5 zpQM!1*Z3OS(54fELi?u%I`v5qQ0Ykth2Ue;K@xB_U>2V=0MzFdU2!xZgpg4E40i_0 zj)mNBtrt1TE_hoX88DX%3*+w5#_iy<36j@<^6QELcfmbpk&}f>)I@O4$;N45D({4R z>innmBfDU+$)kahU9ewGupq7Zbbc?|U*xhI2&}nt#mq%$$=)-kD^%e<>5&yJT^3dC zv|^wvRjU2SR+PxTE6@bF%AWMV@KTu1n6F%3c*Rt2f=mlGhw>W|u!q$a3@BB<W>)w}v?d7LE+wo;* zlP+0QJRjC{EB0Gu>pH6oE!hiS?t8JV^f5El>g~2u* z*5)Vl9zh{5Lpxp*U8eVk?eqDC)ipfV>AA9M9d39E<9A3DjNbs^`TQN@)<+LO+U$@! l5d_mS&oxfaF#mrZzX3L<-xE(;0xJLj002ovPDHLkV1gl&P67Y` literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/ninjask.png b/graphics/object_events/pics/pokemon/ninjask.png new file mode 100644 index 0000000000000000000000000000000000000000..a83f9b7d60d77c73620df57570ca71ad12a9ae42 GIT binary patch literal 688 zcmV;h0#E&kP)QIOJr(!I7^w{!c zxvua_4ZC6fqySkEfdA}3m1iFwTJmxrOlutEa|yl7f-c-%KPyzZx1U$Z>%x6?9Mv!l ztK01BJ&_F*qFBE5a>jvFfWL~tlcW@` zDnim>j&U^mq)v8G=R!z*!ycUvOgwQ<=8VD~NM;XX?h!5Y>|rS+9eHP1vj>3N1{cD> zf8A$4k5BP8Knq48hv|s1w*W~gWULetIyj!$GwzFZjkPcU_Z?fgE()5=L4LPRVvYhO z+*l{6780^?-!E2UpBoMQhvV&NhVm)Nd^inTERDq>7FI7ML^NmZfVP?LMhGz=3)+BokK z>~kB_KrqH5(#C`cYnYI~Frm{#&Sfi0>WpcnqsfG>^U#@kA000Ap zNkllho_|HQ%Ut#m8vx@#P`t*7&a#5%_MxYy*1h`0p*%mIBnXK z2o!tan<%7(unu=oDevk!8}0?{NencthC$jSz+Coy9#$bdgvHL4*+Ewm^KQQ(VCO;o z2wsW7vq0t|a9I^*6c!g6<}sEOq#c{oiYj`QlimSoMZ3%_i@>Ccl0A|nhddF4@%(Kz3OE$1{!8F=si2s-G%^A;70Fy zdd^t@*;Ijda6yNDGX2mn*Jv^*aOiX|R1QipmkgXSh6HR8piu-am&=Rpa8YWa#6>_( zPgth`vr;BE5p%M~8W}^6{PN1^zvm-(e7=O&C;$!Tj*6>ie7Di|Pu?Rlr&f-qJf$PZ zH;Du)S-C16e_GEEJFJk|SJrxZ$_ik@zxa5!PN{^#XZ8sJ8}&D>sY!VUwUsZI*yG2q z?;rZ3F^9P_24J2zg;Boz^>TigasocHhs-WHitcjtQAJ(t$ zB`08AV(v=tsf+l!$6_7zt~4zk8WxxQ8*r7;e$6bxFYx=9;c4IkoDy3u0{Ejl+K>yR z=uF(vmm|TcYiz6@!oW;TcVd>;Pd|U`ucZJs@=}W+z4zrzao!^P(zUc83c%{;!f1EQ za)Lj;Ou*q{fW-LZqDb^uDo#6zn;KD>Cu*y8E*!gVEsga2XJ0FPiX5s3^yc_CRVZ>> zBXj|0(GGz6-cV!r+}2c~Q)FdJjTUk^mjyoZ;%gs~#~%jK4vMd)D1pW3dY%(6`Fh68 zS06ZA`d5g2_01uOyAJ|Y@2;C6>$auIu@o0)=>;UlbKYO#9|uZc^$^&R4iD#o&5 zZv?!(|4O;>y0t)AUz7104w{v2%dQ%yYEz)rTD~bDR@;7a6$kCXT(>^N8jx=apu$!L oH|Mh6*}vga61QL9w*MdFKl7Y1oIy=5cmMzZ07*qoM6N<$f~3FRb^rhX literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/nosepass.png b/graphics/object_events/pics/pokemon/nosepass.png new file mode 100644 index 0000000000000000000000000000000000000000..45e6d15b0da1d3fb3d6f8da5450302fbaf2f9979 GIT binary patch literal 635 zcmV->0)+jEP)Wk)0000002mk;3q(bC00068 zNkl9%TBzDG?8thf{!pQBn0FR;Br|A?I%3x7D$ADMK^HUQ8 z1|MUfX=s|Jl-1oB;5`PI`Z}-}`^H=?On5~3!jFeC?$}xV{)_={DQ8rq;|(VD&hS7L z2kM*k7$D_K%Br$GB4o-o{H4QhI)H@3U-S$Nr`sC*Dv9VH87f_VQ)~aA)3Mu8U zV!XlB-r>luM^dOT@aFi^Sjo#BZCP}AfIgaJ?@}7{L-G!96`^e*_UMOqXE%`-e+-Q) z_Efo34qj_FP@lv7KfRmScb{h(`VV$1lv>K-Bdt$@>*%%ZVv^zHVjEo1X& VKwAYSu;c&$002ovPDHLkV1g={Dfj>Y literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/numel.png b/graphics/object_events/pics/pokemon/numel.png new file mode 100644 index 0000000000000000000000000000000000000000..8777fc3529ce8331a07b21349a431da930ef705a GIT binary patch literal 777 zcmV+k1NQuhP)r zVj%Y30L`>H-pwHP_N3L-l>hE(l-?M$_Azs$Ia+gSl$28D-tPbZ{}>n;TuTxC0007% zNkl@b3_ z0u$)f?65Cj;~Wahs!B;LTZ%mfJ8krVAwNg@|E2fjCxl+(HU5)O`oYyW|7~Ed#kTWN z{(}ez`3*Px8U=h>jj;}Q`UwYTLXdIRf`qsR4(kchO_If8gNlfo$uI{Eqd*z7MerHn2VE2K z4UKRRT@!#>o8AmE3g!SLgzOp(Gr~gL--#s};cyeJfu0L;b~t%HqhL`}M(MWQ5ox*0 zh>0#IE(ceS{4FG4Our1U7W^DWoQKh;;f zD2fQBt%1krd?EO3@!lQ^mvOma(UdYSIA2w#tOc`(Mua8Sz+-%Q%LIp2`(=5o1$hJ+ za50-64IDOt%=DJb3LM!Qxa+vh&aAGf#@OsCPh+{x({|Tb%S-(n zVXeyVwH3tjz=>UP)&QuyGbju@JHS#lKxKE&>|_D8fo zlxj}gjxS}c64yZOoNK2isNCD5{eS4Ejr|k}@P)1pw6adh#3kZK`A_B4Q(xF?HK)Ur3okXDV9XuHwr_inePo{&6y~G4! zouQ73V@a)4(yfs1>G>=FONu3cTioInQxFU~lDeY)Y#lUtbSwHcfl1uU%{pkZd2&Yk zHuWBpsNwEC348YDCVdY*-yf2gfxfPiu$T9HXSDC3;A$N;(4~%;p17O!3~;)8jhcA% zebW<04eh>(nRYKsN4*p=1KGC_bH_5ln!lT{ZfDQfHx=g}WPdiKnZO#trXPh6vJP83 z4^I{}sRZt@2^vT)3z_FZ)9PHX4w{HZs2(+*vkCC z!&a(PZUe_C^Fpa6=;5pFglP5UjW)Ih^lFIqa zNkl3hIL;dk z=q9nj9ud!Tn>nydtXVpAWq-}0M|Z@o%?e)~PHpZT1ki1pmy3$BGVlTh=TnXr5bN^fh_#&WUlz|Z0HpwARv&xX?`G3?;B4S$B>FSZ?D+q9Z?Wq zeNf)?aGJ^L18?uB9>38y|J2#8$nZQJpMt5eVa=khog$sjUp1RgYt>~|27`LBF0MO; zv6<@o%>C39ew-lq}^P-Klf{x^0&%~t=zWwC(z#vp00i_>zopr0MARP;{X5v literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/omanyte.png b/graphics/object_events/pics/pokemon/omanyte.png new file mode 100644 index 0000000000000000000000000000000000000000..5bd3c05e3733a917d067e07b0ff0187b5d1e58e8 GIT binary patch literal 524 zcmV+n0`vWeP)w5dZ(I?&gcl#cHgiN@7|NgU!WatfV=Edk|Vuz3%He0004( zNklr(f^xy}L_O#=3Or(&f*jD2nVDA4=~^%Ha_{+#nGmJ;El% z%xiIOcI0NX=aH0Ai%q>Kx$|h}W=C=Mdz&LgLQHAT%>tRVSO^idm_6EpDQ#a$8GE#I z>x}ky!NemywmU)v_iRtp;$E^{aM#SYcZyH&Lz^o%j~zGIHor7SP6muJ^IaLc9_>O# zvY00sWiIWNG!K2xxfD@6BW-`ysrh7-b#WqY&leSCp4vATHQX^<^xfewPf6cA`Dgvn zi$}Rmeb=2#E6UF2XfSk}H*?pFf564*s3yH0PXT05QRd|+@L|FzGe^tU=Lg+bS*ynN zwGe>DOY3Hwh4=3@{%hH_qtx3{H4AuPyaF^{18CGRC;?VsQy^F_Rmo`cpjPD?&=;Ue zL?=*MlMtW9l-0+l1O|x8uk23$JW=rk715HUtx9hXqq% zt#y+by*B47Cbg-x!;O_M7?;d5Tr%`Os3!W{k`lX$&wH^ZI!3ZH)^TCu)}Oggh%HOm zb6;TpGI%J639T_kAK6d<1`h=Z*=a2}=OP}BnK2>ndYVEw8C3b;pB7gjoKN-Qul1DWZ3V^Rf8 zXE-~o5H^Lw*r>R|=yoWOoQ_Yv5ImlYnZf@o?o)C9`8x{*Xmluu2~*5>Ga^6@Pm&I1qqcr#eC`T7zYH8mzn(Y^b4FDJJh>48`STu zJ8fQ6+$GUN#uj^qn`)deRl#knxPiYO{P_a!>|wm{ahJ4rU%uXX7JD2$>=G$KO58g! zVe5m(Z%h>^cs$=tz1#6Gi{=c!>;7fz0Ium-DgZL}fJy*pVnUgt{Pgyx0AsZ-6nL0E zCtjr~z(@u@{Un>|2*NHBDsmZ;!IU&7(9A~U(}X_1n9zFyW@gQs!~Vng2Y{gBvzm*k Qg#Z8m07*qoM6N<$f-sg;4*&oF literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/onix.png b/graphics/object_events/pics/pokemon/onix.png new file mode 100644 index 0000000000000000000000000000000000000000..93cb4164cb285f281730c31048b930eb3e4db206 GIT binary patch literal 892 zcmV-?1B3jDP)!cvvcFDUho zKl3y5DwwPan-nN`sJCOk3(O@UA(*ZaO+e>JiwTqqCQnMns zh@ya{D;L5CL|1O47huY}-CjWwcw6kpd#!R26ji5qPzYQQ>!|HB-wEOzUO}b&?S1|= z`Bn9T1)o)6#u{;a2$YB>{Foe79m5OACmv@Xuo7N^*a;w}7IA^~%FAz-ECM||1>6h) zZ`w z@(Fcdf<|}>3alw4%1Mb>c}o$>LFashYH-3WVcTa0xe43kU4jj3ZkwY~dguj|$w+aB zO+ZC=Xa+ea^r6|apuk+!>aET`?c6UPu-m6tgG)h##DbyAL5PwtI!cJ7V?y7r=nhj3 z)+8J#2brKQM|zFWt>X~kNdV#a9DB!2-Uz7;=x={wKK0*%A60HBDPFP}R#vydvt0pfTj*G%Z#k=f%raikAni3a3nEjNIqC_Ki6wv25eCVGt=XZqpctoKa0()}nW5+QQLBC-QRgVtw-e z+_r1Lx5dIuOeO0Fff^6PD%Te`UJ{Hs1rRQ@3qsv()DV#~+-^@d3gf#Yr`3tkAq5vv zI)&~fMK}wP#*f3ZOL0!RQR1+~vY;y*T}UQNbUfy$}%p0RQgZi{`yjy^ArVS`hyL{}2!mft8;|00053 zNklajO=^pEDLt^O^Y>svf4YF z+hsGLk;?`UuQds5|A8A>E(W~6*Bw4(<48Ws!hllWr(AA@XD$ZlQS@~%gPO5dJ*85z zUb{SHiN!z#^=+XtfSoFU8G_8RW-xuN$;QKo4WO!nfc2>gjw*{=Ph&4w22cw^{jOD0 j*B4xUnSb|O|5MpyzeF|^olMzD#)2W1Hj95{y=ebo3StGRAy=B)?{T!nnZv!qe$>k%@_l{Yfox$j3XI z3{rLif2M4wmKhap=90ZG^B1d;f$h~Yliso&V~pGI14Sop!#=f)?VhnA9TvKghp2bi z7?vzEWyTuBK{8)JG}5y%@k{P{$Cx0FKEITKZRhjp$_iX)rhZlf#}-&0nTQ^aKketr z7!eGF85~0un3lHet+j&7%Ae4&XPzq)49_bIm9;#c2tBVgxczYgVSxV-=c%AGL|)gW zX+uHH-Nd{a{H+y@tvuI*Hze;X4G5-+1>e_D4u;!0ItmTFWKCa};Y=wSI_@AEG+IgK z5>!wq%^kNo7~-V?VEG=#5j0d%^Hx_A_e8cuHzrIRFHsrg|H1V5Rp`J*jh`7*_^58$ z2Zc!JI8sr%ozwth8krRF`yUI$7d!3O93M3`U`pj`7E^&BFsb2OZ;ZKMzT--3HSbrx t_?%W`1;d*q-ws#cGTkn!ZIb`r#9tnR6b^&({yP8w002ovPDHLkV1hwpNa_Fp literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/pelipper.png b/graphics/object_events/pics/pokemon/pelipper.png new file mode 100644 index 0000000000000000000000000000000000000000..56273dc3358c10af5f03ac9a0e9bfd6fc85180e9 GIT binary patch literal 897 zcmV-{1AhF8P)j005kvtRP~0slp^n0009F zNklBjE6vuDTDAFZER}~KhcZmp@+RtE8PC{U{Q1AsoluY(DL-5vS=~V3S z2K&Rfq>}<7AcufePYHPF7&@8sq)<&=?CTJ0cBwzFrnGmO}~l zKgtj41siV>n~G(f84TbSi|f7`3T3c2ukv@3L6)3vZM{s+s0S=$y#n>U zf|(G}EP&H?X<$7qd6OQmz1|Mpudy;sD=b=Ovt2YD*WIe`rYo68FjPHJTv~boyUz;- z2X~U?B%>Oyx2S5!LfqhIWRn+}>u%@ubTumnfEgHl){IKtHwH!2Jt1@nY|Ri+Be987 z=i5zZVekv*Dt(pzfS7CUEgJ~I2Ni=_)nMe*n~sy9fJK~<;MFjIH;~a`6GSCP#Jh!{ zCtA^<$}lEob}~|Tl5_fKF*23V5-OVr3_{8MsJCn&s4*`J4q$8=)lSMF120AvR0AOZ z`hpCCzE`pbbY5bK_R|Un{dnK(gh?rwQGy4WznK)h{M{%XlO6OlbD;UWP*fQ;7F<(3 zWtfFcr57RwaIKloD8=ksmdc}(+4G3Q}6XKcaBVDYDBz0LC}qOVRgWJ~&Z_DnNA%@^~?W}Z|lWBcy#uwtmh zEqpdC&KqR^xM5zUqq>|&HuLvGo!$O?^-R8cyedyJT@f2=4IV0TKU}-K2Xa`yyoZdR X0r&mIzG^}400000NkvXXu0mjffBB;A literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/persian.png b/graphics/object_events/pics/pokemon/persian.png new file mode 100644 index 0000000000000000000000000000000000000000..870d5e3cca4dd41ace2444cdf2539b55e9ea4c29 GIT binary patch literal 701 zcmV;u0z&Wu|2=fcnY;mB<6?j3v+%NLb|;2;}Tg+ty5*HNM2^@h4p4NWT=YOd*^FDIu@F5D2!z~xcnOwkUM|%b~1h0@X z0#8q1P7F9!?p&n^O`eA6Q8ER@8S^djiD|!X2TLx1ePYT{$0~m{hTeb71Yp`H0f}F6 zHlghZkwXNu(FJbq@huNfu=i%hba{w*WEH%|cL-gK&p7UZ=-%M{O;fEh`oUxZv%<)t zdq3f01?h)M9ZL0~(aHY_yJl`}zs^#DZJpi5zAI-HI2(%;R@EsXT2QcSDFUxBFu&jB z&Na|&)701j4qseqo2oqj!U*h#?1RvTCG7o%a>zahU>bgVndUI;HfGFynDJ;&Ualg&61q~78gh>48cf& zDH115qs-+Dl$lNqd2yhlW8jM`+4={6sSYv-I;t zQiqL3VA%aL%lZ?&-)3gT(%5F>{6eO&jz+6U+QJ{tq*dN{*D&i2Z^Z)1`-^~GjZkbH z){zlse`~lBO~;AOlda<9oI80HC7qVw&(KVV^j}-PzQz5W-i-T6&zWD{d+RkJWClk7 O0000LBhy)zC~{RkWsEi!BbR>S=bU8Yb*RIgqs@MC^FA0cGH_ptW?A_+0G6AJeP0P*fIG*eV5v@^Ped4g5A3xDb_6|PpaUzO24_T s|2^cBD^t#cHh?Lp)BnAG$TD1W@6aWAK07*qoM6N<$f(+}ltpET3 literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/pidgeot.png b/graphics/object_events/pics/pokemon/pidgeot.png new file mode 100644 index 0000000000000000000000000000000000000000..9b1dddce0ce87d718d84dcab02ca949ae90a8bf6 GIT binary patch literal 1077 zcmV-51j_q~P)<1z)1TP#xUS{92$|CI|PK+G?q^hG>ehl z1O{nnB>7EijIFKysaAWk<6YR0dNBUfQhimW-yryZf{5$<>W?y~x(V?Kusbb1y0#8HjqVmJ(~^e&%Mvoo@2gHf@dw5VgkcD zUKa3AW)UnAxkPKZbO?6jlth6%?? z)f!BB5|H}u)m#J>w-s8pBcj{z2@>u|L2UtsonTTA+dkebA3VnP0FB_i7H}tckAjy4 zrQOqJ^0cccjwsZO8M5E*s-)j=_Tcd-NO>XpI-ATtkQh5KYy~N$$!9sK&y-GaL{Gp@ za69WL1p&6Nd2j;8i^L?XV$S|8Ae_=z2~HreS6QPO&(~ZGG>JJLtl2Y2zM|c)+2o%y z-Ef;=P&{A-Fr)rB>3f)v9fDyq2J(CNGq^#J`%L3~fFs~VNB(#x&M+aHz_6|G$Wbum z=Ag>5*`Yl=78HtG+RI8aoG&|pAmlKkzivPN0u#antzvv`9MVPHckAjzIdcMF6a*oI z(*zBOz;U8laLYVT9_#s`k~RUMhHV1aztn;aJ_@K6;-zw6_fwuX+g2d&pn(|qkmi(C z38Ql95-2XP!r@TvcI#dFY1rF!!^J3IY2K9Eo5T~)6LQG%g5{FM(oG;yT)7Ivb4mMn zi`NCATg^^DK)_e!Y?dJRO5k`%H!NMU)zW6D=uz?734(A1BV8j^@lJDzEe4Xo+a>>e zgBv6W;`7LZT&gCq!YVl`UXQn9*uVk!>;XZixp4v_d6x@P-`EYU66{9~PMk6B?o65( zu3UofwxF9kCzy7crCWy!yWV@RxdsF~|FsuN=n!uV5Evc>!LcbNt_RhFVRG-*VG4m4 z&B>dn7R))XM}aU*MnO26xdxO#^M&9dniJlWm@^rM3il>UVOYN`P4u(+#vK7KPR-u> zYr!F1UI^6N+06?ChP?y>?LW99;M+p;_>J*8xI`|7VXR1PSA0!yIic?m vT!d}*?GIRTSiiO8ANT`bz~Qw9{@eHhelK1^3niy>00000NkvXXu0mjf3%&vl literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/pidgeotto.png b/graphics/object_events/pics/pokemon/pidgeotto.png new file mode 100644 index 0000000000000000000000000000000000000000..cc13676476f2d90b058343eda2a637d2d31fd5e1 GIT binary patch literal 818 zcmV-21I_%2P)c#16o$FQ3J9JgM<{wNX)uazWdOm@7*-Hieq|-O}{QfhH zTcq`z=Z@*}4OW*J$19{k&Nvvg_hP!7O>5w3wohp~doMjt@t7FX1qLUcQfPXEL=7!x zkW6iC1ry7shBHWLkOGbkr7KW#_QSPw0)?6cW(Ig0FSmgK-X@kOgKw0Yt~% zW?T)t+xU(5=jy6;PiMsRZ2$bYW(>4Hp0GXuG&(r0_6$Y$BdVX($fR^z7eC+K9le-x ztS1F+zXsD`YzqWJM&#DKxYMsCtz(16X_M3(!xR3T&x0_4cGhDMaUK0JII=$ygYj4S w9|M+O8h>}xQA9pc-x^#@@cp5K59UY5Ujc#c2=}vCIRF3v07*qoM6N<$f-WF@3IG5A literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/pidgey.png b/graphics/object_events/pics/pokemon/pidgey.png new file mode 100644 index 0000000000000000000000000000000000000000..446454c7b9e8874c80667a979b16de14ded04635 GIT binary patch literal 393 zcmV;40e1e0P)1pw6b9h870N>g>5$uaa4@|^5Ea6=$dF>Z8NMAD~)JWYd*$~x&(Ud$0hRgeY|K`&6+Grzq>QwY5 zTO;kt&yOMPUQ@5r25xsmoHo)pjebb`Spgoae%73{vd5}u>a+)~wLK>dSa{OGCcO?U zHU+U8%WT`E*Bf8-SL>37a4O37n)b~bGYN)Ut51?4EF5{^@MxSDe*7DdIYfVjYC?z{ nn#eyDk<=Al+n=8<{M+0C^q1tXJIv2v00000NkvXXu0mjfyXv{w literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/pikachu.png b/graphics/object_events/pics/pokemon/pikachu.png index b2d15ef1796db2730dd20195815ad1320908a576..1ceee3e13de681f83a3fe78818a20a24def549a0 100644 GIT binary patch literal 498 zcmV+r_2yP>)7De%M6*U*Saeto_1TV=_83CTUT|uzd5?NYTP_`1 zM%)_y?o+{D^c~`a+KG-Gl^y4{vEVBDIZjU+E*;*Q2gG|V8m3q;+0?=@p>^A-mxlEt z9@-m7KCNg;mQ*}%LU h(VUL_Tk$vlpdadYey3dYkz)V=002ovPDHLkV1jj%A_P)b>k6b4`>RxX7Yyz~klq9+x#;ymeWF|crpPR-gWRj>8WdpDz(v1hoKOd@x#JwR%sCeujuT+Zn8$hl za}#;PV_cDI`&NN*KtHt2;`@sS7mn|9+cf3FYR_u_y1>*B=dNYqCwH!8X(CP86FC)_ z{rdt~p)+zW5YMnHrhFY(8w1mdT*I`J28R?2$AY2}cu{~E9nZwrhN+18MvIoQo!C;} z@XZ3db71~3Ytw-X{3~Ztn|PDn9~>gV01;PR?fsi~WVu>YcGsl8sZfO@tApc{01BukcAPQnqi2wiq07*qo IM6N<$f>9z3e*gdg literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/pineco.png b/graphics/object_events/pics/pokemon/pineco.png new file mode 100644 index 0000000000000000000000000000000000000000..79ea8beb3ccf6706251d65fd1aa4afd7be6d861c GIT binary patch literal 356 zcmeAS@N?(olHy`uVBq!ia0vp^2Y^_Cg&9b0+m^KrNErn9gt(qPyGB4j;6KBEIMVd0 zwk%!}v}Q~5)vH_HeVemn$$u|PsOEaktG3V`M-D!sncv^&$_9zua ztQQlsRNvs`D-@sYf8nu+PG+!>Yu(H9c}(AI`Dg#U*OU8T*~(QwU=o3P2} z`IZW64@;lJUFVy-mY-e~&lB`w)AF|mn`S$n?rylq{iy6=a2$)SkinmMmz!5J&k<-@ vQ9EJlf9d`ILwZge|M~Oc1({d>H|Cx2ooTyb+iVe_*BLxr{an^LB{Ts5+X}2` literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/pinsir.png b/graphics/object_events/pics/pokemon/pinsir.png new file mode 100644 index 0000000000000000000000000000000000000000..e61e85a80d9c1c35f2aa83e37e89ec00641a8517 GIT binary patch literal 709 zcmV;$0y_PPP)}@LS=$F@eTOD9D~|=TtRfvu)quSd*LwF0C%1hdExJd$e9sNR=>D?@|f{><#z_JQ|Z3;FV^lICP>(4YSPn^QX$V_>&q z5G310fwezwHPKHhcU*HH_^8#k0qGVBrYT#we$Xe~+6Sp^x4ORbi*(Il<6~DxPiKiA zjW1|m$E_q12a<7Fmd5Vx9!w9GwhYUTc@h0^V}feQQJGeCX;IkvM|q)_9WHgreSy5f zVb@^Of8V(1GVU{bkkr0Xfu*}jluv$gi4=aCc#zRU!N%x11Zp*$uMVP{X^yUvx?;9Z z=f;E5wkV6jDbvrfG0`=Sf$S4mPm30v4tU*3JDVc!cCrt&)vG9UVdDQl^msw|$zm=n z$2na&43Zqr{{;-mZZf)BGP9=Hs`u988j4a|y1Uo3jf>u#&SW%>i|J<(o*Hd6tIv7} zj2;T|cKWUp{h;qvdLYctf*DgF>)?Dki(GiN6zB_1SEttS)9kXp rH3g2JmH~6GzZu5t{=hE;{I~5Fs3x$s3CC|~00000NkvXXu0mjfQHWha literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/plusle.png b/graphics/object_events/pics/pokemon/plusle.png new file mode 100644 index 0000000000000000000000000000000000000000..512fb408cd990e5786ffee99cfef689e799a5afd GIT binary patch literal 457 zcmV;)0XF`LP)E)SqjpFVy1{81`-8oT(IK?Iad9@gW^BfYK1 znDSS>=MX5HoU6m+-0SFL%3uqmW4;z5<`L}&Ay%~2o>j1^cO_h2Iq2YxB)xReVF76{ zrq%`Lw9QuwElg>@U82osgO51lw~{mzh zbCGClilsY?Xsfo6<)OxgA3q6=As1rzs4*05BDId!S`S{5a-*^OweK4X4vWSk0CV4( zpSR}U7tL;ZNZZ}DwLk*=Xuj3E)rs2${%t-1@Dc$As4oJk00000NkvXXu0mjfJ_pTA literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/politoed.png b/graphics/object_events/pics/pokemon/politoed.png new file mode 100644 index 0000000000000000000000000000000000000000..8f3236508b7118931e03ecd37e3a8ae8c11779fc GIT binary patch literal 726 zcmV;{0xA88P)@gAfo9dr-|N0007E zNklAHO6j*z$dy98q{A)O&rmo}ZfLRuEDx7>NQkxApP^ez zhR~^F>D0ADpuWZDf+5k+^T|$Rzpql~xUrCT%1?gY=aKwJ3L&RD)u~Js8A7Lcn&3ch z$%!Ll#7aI*VC!u;Q3NTRfZBq9B7r3FF}>xd2OQiVWOl$&!GYeAYlXssLMj~KNPL%7 zj0_55J(J7|kh};GUn|5kUP#0R#~k4R8sQ03Z?y3-dyq*q*bHIfcC;CQDbmGAz{{Gq zXo3qqI$m~}mmg~os;JHFZ*&~D|&>lZcJF@IwWZeA@v3sJAg=Dh3A zSx0)taK?Ac_6mm$D}Q51yF0#e&5ZhQk)h488>KQz7RE5|hMLpZH7m%arw#qFYXbd> zXZ3bM=U+r3z2K!Xg0AEnKb?^7KC4D_O9dItj>m4f|P8@@xQXpudK zf!a_7@YvPA#FY06KZBv%spPs{jB107*qo IM6N<$f(`6r^8f$< literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/poliwag.png b/graphics/object_events/pics/pokemon/poliwag.png new file mode 100644 index 0000000000000000000000000000000000000000..3dc57d2eb67c218b5fbce960bb117cd7b95c8edf GIT binary patch literal 427 zcmV;c0aX5pP)P^gNw9cYLr1zVh|7zM`7U)0003t zNklz0(z){5Ko5p)AY7wX_MK5n z6sAbr_5uEXgMWoA;LAQ`^);geWjI^k5Pn+l-dfte{3SYkHN zFhhU)ik4#DuTvq6d!k(%pP#!ninvQ>xNlx+qSiR+lF|b6c3<;=+;k{KLEVc2eHQ|~ z%S`M6|M~8_|6KPi_jo9|!wyIs4Y|YF<%tK7m#5j%eN6;neEbK}r9W}b{pAZ+JKu&a ViMb~tI066w002ovPDHLkV1nM*#?Sx& literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/poliwhirl.png b/graphics/object_events/pics/pokemon/poliwhirl.png new file mode 100644 index 0000000000000000000000000000000000000000..d77d84452a472bffa82f06fba2c1395f1147a6a3 GIT binary patch literal 526 zcmV+p0`dKcP)p{}FU7#p^pzMG4pl(LpuR-MG7w&(L#oQ)fgu&b$p}Iu zHA#$?`@vobOg<&h`|_9G+QaK_-jZoG)Jx*=%9}{B%;xnmBj+&XQH631A{!! z%nKKDIKY`Eux1L+H~=8{sROQ^RfE-uT{5a%flIu~0_PQGGx(6b?5E9oGWSLYIzfKm z%RKi+FJN;b(K8F!oQ5N_fc2v9?)#Iwh||20vfPOdjQBZ_n|bbHuHNDM;CR9;@I~jx z{07c}J{8-=<*%u20#zdCW?neejbsTTb$-B`|A@S|k56xM6uknBD7p*Lp=Qh5i QJ^%m!07*qoM6N<$g4o*mYybcN literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/poliwrath.png b/graphics/object_events/pics/pokemon/poliwrath.png new file mode 100644 index 0000000000000000000000000000000000000000..48da2a3a168d3dcce1c9485e524bddb90463d9f0 GIT binary patch literal 681 zcmV;a0#^NrP)ACbJ29Rt&xn%=irk zC>THF-CQz(S5xz&41UI>JU}O7J-k@n!MI%8p@UUIRmm*xVxLJ|&NI=;#=00Cg0b=j zbA~--Ty*ij3ox098@$&e*^3S?tso7(%}{V$@67aq_kDEy0&=vNMqVcr#PksGnY|C0 zBltJthCY4Pe{q$mVG?W#(iVcj`+R_7r2;MX>-8p~t!3r84sG{B)}B;NW1JU0hP1zKDPwg>h5trL#mSr)p$YFwY1 zv1#DB-rywA3UNNimUu)36bqKx0zS+#eKSaP!fNahYe8>1vqN9o1|EJGPNy>?=q3Gu zT=!zDuXwobrS=RQ!IwY#FE6k=JgEe4@`c!pAPgd1L9T5B50-;4u!75Emp(#MV3}+l zA+iNj!gjIUE_S&|2!qn_nnn;wRFv|hJNBl}rQv`C;S~#vz~#*dXkys$DcLU1$%aM< zma8W_f|FF1)(sHXg5LRiIvKhAZ8ECgw%BoXUL;9bFCeB7l%dj#ns|#*F_vKrE{Cxj z4yy`30gV8D460M;#L*%*t{hDqPl{}!*Bwgb+O3n~#N&%-*iN}{{I~W8LPML3lMSMN P00000NkvXXu0mjfi0wXn literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/ponyta.png b/graphics/object_events/pics/pokemon/ponyta.png new file mode 100644 index 0000000000000000000000000000000000000000..265157d07a71e28133a5248fa7a36d01432d3ac0 GIT binary patch literal 601 zcmV-f0;c_mP)IoB42X3tB&QsxtN^uwWp>_l)7J>bi;L2zGb$iBjfQHO(V3|$bJ^KHjC$S)^#q#( zH4vQE4vxzlqOJ*8Swk7zb~~?A0J@~ttP`ylIrh?G2Bz`@Wpu^2c}@q42}D4c@tpN^HF!Fc8Hua@2EWc0#RmTHV zYQ_nrF)=~Kz0LpCTC|H=-bz8NIYIyb{{R30k)OvI0004v zNkl``27zW^PGmFQsqr&85kioMH>e7QHN+%|SOxf(zzvJ)7f(KI?9K3v~ zpL?&op2K70O-MKZrc9YK<=>>T-=HAP?k-8&?7c>8CN;p&zH(W-uub-kC%|TnDyycY zEmgXev;k(JM*W_HCYNfjXiGJINCOi~ROmZsQYjNfJC-&}(jesEO!wO`j2CFyon=j% z#i~)j3d&<)n&JttyHM64?b+GhZy^fG0JoHDS))Fr{0mCUpE(iZ+vc> zs@d360n%Mmx9AM8Z#hrvwtXCnZ@VJ%k)suQ?nEtxCLQ!@6$(+7#dF&|eKWVvoxs}N z^DYwJ9bgCj3O!c7fgSpO?G&Xb&}c1jbOMS{IYQlt%Xf*c{u-a(B>VUd8L zyf!%;h6W5bL7;(cfSl2v_eT=V*dBZAvBw^J?D0Rw_^$!z`A&g*g8&rT+$WHRlvmU5 z8GCaDpkJ%oMwB`r00tl$A_3qvV+(3Y0Qj*jXI5NmKm-#91c287xFH27#Aw93EC81) zbgT~re`yd2CJrb-u~=IpJp#ZM;iAp~a03e*jF1SKHXx3u0}5c4hYvM!L;%=S9m>A- zas=R)eEA08uBfsNV!_k_1<-?(O_u{;9D3IcE{-X{Z}nLnp{dG1KpVt@sRIJQ8zrS0 z{D=vF%a=kNe4YX*<(2@$(BvEv!NfrV(0-NjWy%4#btOda*A#$1D>b-{2C@xe!NfrV z(0)HYewlIrj8B`v_Oj;c3~-9Lmqa(68hl$`>z!Opc zV?X`0_^sOj&|9~T00!wZ4Q3hwkZG)SQ$jP`8U#L9-~{nWX}}yod7u=)S`1)10FCoX zcM9cC1iJHj>jul$fLv@1&^eSi;=`!XM2)mo;)dPp*O!mFGc(Tf8Rt&~s6U^>@9T!L zRv`iRlyx@x_p)ve<<-oi`ZXt6H|F#42Q}2iWNS9J3IG5A07*qo IM6N<$f`1AoeE*`P-sb-R|Nj90{{a900RJf|DgXcf{gg3<0004u zNklHG@}eJtM_vsaJxEAne#~maADR} z`PQ^z*O|yYP(t6xcq)sg)jrB7U@Oi!q5+#vMzcxPlu-+ckQs{RS=*N1>)2a(!vZrM{M-+KOZ+nuf2n)46{ zMHJpKa;TJ}aGc}cP>>CP&7Y4SL1!R=J z7WF7U3gtvxDEs{igP)Zq}6o$Ppd9WBVb;u>s15|PMM9Lc?29AMx5L6ikFI{McrUOFML$5>z zD?%My6E)=75-_yg_?6{T{J!5dK**dqbLPzH12E3N6~KB0BOJiSS?=?sfbG_+$7Ya& z9e0dAPYNt^KEfTvNaypUfN0!AXgBk6-|YOy^b;g#vrZGznu**g|^Omr)qOVww@ zRP920=e_WUYk>^rSr{zvIcVi(gbmmOAfeB8pvql=&q|FIT)s;zys*6ePod7?hzBeq zWDu3kYXM5RA0_}3(q)MT>N3_*jtlKWM1^e`l@Xfv3j-_Mzcnr&&<3h}pH`@#R{K;T zZgT*9;`RXWfo~uMh#JhsU?#0BvK9?gd6D5lni*5z6XnJ@S8Rpf6i<11&4F$^{O z0%9&dRCuJgkbEZMi(nQm`{~M9GqS)dBuofrIW^`;{xrr+ulb*R1E}5qqE13m2><{9 M07*qoM6N<$f-`>X3jhEB literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/primeape.png b/graphics/object_events/pics/pokemon/primeape.png new file mode 100644 index 0000000000000000000000000000000000000000..25c8ed78ed97fa617bd66565930f478afdf45a92 GIT binary patch literal 733 zcmV<30wVp1P)6|&u1%ny$%CK{9z5N0pW{IB)*)cIhE6$RouQs{lLrkJ8uW2m z=;|eSQ1v%fe90YLpisy=<cUS0Jpl;t^QR-5MIUV;7yLc76rV5)xkP`gJDu2 zgkk(q*1mvVafCJqp~vF!gRFe0z?(2{#%dm2n+v>jT-m8$>e&ktoyWJ}5=X>5pKs4I zOtIm0B?sM=qi45L@Kmu-uRo=qSCFD0^pE?~x5_#5qZ>pz5yT5y<{8X@U%Q4|;p*KZv&69^Xf z`{I`lbiz4n;TOECe|%=G5lF%eFMVLku&$DFGcc!)Z6H`YJ^Z|@XoB6&HGkp|d)C5l z>}B7TjkEzHv1|jCkXYgL89TOtVE^3RsdeJc^%XCPNIWay3V*+Uz-8>Q^iP!+4S zka)qI7kl-3h*$-z);^S;c^B2yQ-g!Qwqx#RASEu#=GdQeuLH(3U`ARx^+5(P?>AX| zkr^X|iHp2c#&$ejP;o^hofxnKg)ozoKtc%F;rN6Y)22y-zU9Ek8oy3=MIm{}+@wr9 z)<2g#=*P6nCZUju)6f7j9t>>$JTaKniE!S0ug}`^RF)8?%UmNTL_A4F<HgXbxJ@(jRkG~V*PJ^qv8O>b=vmR@1#(6e(7@BQcYu<3wox9zj)mrs} z6z+C6zgWCH*a`Zwr^|-9=&yo(+2U=J2lr97rS;uhGz?Q(Ft_Mr+aCI|t;NpHMVt2E zc){E>v{uSwh`B9A(G4wzcPyGhODP}6_zQ!NF+Wm8&+@_Fc|ogR@#IRTD?MF$jxCp9 zc8hTIUbB2~%zsL6OzeMUSkx+?)+rV^UCat98rrFB;kDw2DmN8GqmkbtvSJMl9SX(r z!8+apfeQJ|1Zw0n6F)vkKIXScB^!c0D}ZVmk_Lm~>*>))OkV|=?J(GiVd;$J$8u3a zVzFW8tG2dgFxJj4H9tjkbp4VvM4!A2X>55usZamFryl^53_0vc7I?^`o)=devWEXS Y&V*0ut#8GgR{#J207*qoM6N<$f|C8?-2eap literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/pupitar.png b/graphics/object_events/pics/pokemon/pupitar.png new file mode 100644 index 0000000000000000000000000000000000000000..91d7238218ac370af521db542bb8984bfffe9093 GIT binary patch literal 557 zcmV+|0@D47P)&CS)UtgL%`gZ}{k{{a900RKTjVh|7zqTm^H0005F zNklzPohGZqTU83Uw5sTXizmgJJ=rXu4MvNzH_dFEj3^8l1y9_SO_kwxNR;keUgfm2ys9;Or!f5nvjx}4WV}EI! zv&CW}`bWkj3`E8*SsYmK(&}-BbOemb(%%d&%+6*V-I4_v+)C>SXOL9O6*4Pf-0H2N z!xamPxE*b9IoB-}MAa^h3+0A2Hnn0=>TXQyAm=(Yzb*Q=Zc0WWq|bs&mUTCjyN)mh zX?`X8czf)45>A4nGIath&Rk%{AoVTLEw`31q1^8Ub!*X12U5ov-c$2UTzlrp>F_wz zBvh^z460+Ij=|l2rgmjB*INz7wFg`%!e>F>*gNu#p_m`KA4|^Dw}%PulTUt_3hm9% z0%!aQ*NWZ`Unl;tleOTm-qEn$m(sIfT%Xh(o(XwDk$oQC({Nx&nuY_^9*idvX_(`w vAV~H@DP|O=av2x!gl9YjUw{32**Amlwy?sbF}{e{}2!m)tj4)0005c zNklWDvAir-C0c?4AsH71w5bT9_Sq z6KO2sbldG^OLWR7$^Xd0ij=yyd%L&)rxCr&n!1}-WG%hJdbCYhEb6`Bw<6j{Cth10MzXAhjl znR#*D=fKBMpqy+(0fedzf!d_ba53&0fUz`%ca7%Y&4D!R+o#4CfLz-3jAhkg2*etk z{gOtD#x|kA*&832Wo_$Ejs_^Dc?Qphd0;*>{y_81TmpH%GhWPrzzYfmcCQXw#P91i z)dbfltqlPX_F+q%!JB1JoZQ&%0ffScgF-uLHDuKLPhj!`NfY&neOR{UkGd3h%!*Q8 zq5QWar3YCc@01*0CG+vmUpKRH4O!lAf>nZL7TtkLch`TvX`JFKQpb1f$89gK(xJyy SZ}|=Y0000un+(_P$8^aa*SCYmpad@{pV|#`2OM zw`E!oL|!l81N(GD?#dX+0D>Q}M_Lf#uLwmYL5qSg3L+uJ7^8C;Fy9k7bXf+y*1J|a zD3(lt0g8GYsH9G%4b5v|%2)*Giav)slk3+eb<^CKh`?401w6;GDvl5};m%$uZcafm(&}G1P<= z01Zn3TF~Vc>6nDG{T$8!L()MEa3%nV2&iWOt`(yWU^b|p3ILGA3f zIQeyV5yw`Y1KdR(Zge+M>>QNyn_UJx;DCf~n(YbzsUnq}-7HZ@ z5_&Vo&G;OWH66DH!ve61I#m&{im5IElangllG>y^>px_Erk zbu2f;IDb%#D)hSWf-f*@I@fyOSQc#X_w9sfx8Tv12Nvtf0`gd|X@@FZhsokSF#!5q zSmFR+K(0x@h1OeMzi`w8rrSA?`Z*OdJ6B;m%z*S1vzoo)MKmm^fF%HAO`C{V6a_2& zo`;Z!`ujPc_BykN<=GZF=F99HFP9alw>JQ{NeP(O6Wj^C*o*RXeS%|*VjRsbl8Odz z5Hqw9%DTGVKK=NXHfg!YpoYf)ry^hkrl6JYhuAyBw@0?{e5(!Lb$#D=ukrz^8vf31nQ?!SCR4%CNYX@j zjuq8!rVXJ&gXul4w=Pp=>TVTd>U1x0x32gEYAzbihf3-97s5b#&HniOl>3wkiu51q ffk?&4e^>kjcq^LS^q!f~00000NkvXXu0mjf4xijV literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/qwilfish.png b/graphics/object_events/pics/pokemon/qwilfish.png new file mode 100644 index 0000000000000000000000000000000000000000..d7695a5e54d925c37105ddaed98db39f9b0dc7c0 GIT binary patch literal 578 zcmV-I0=@l-P)h(#9+fnh0005a zNkl{>y)DFpc4b>iFIo zy!D9S5I^LGOGu@JOdI3u=Xa;nOBNkbF4M*yf(bmcQABFnsj)$j3*I0!7DLnXdXWKZ zpOER4q4Z`cp-tw*?l`uK+$VHN3+1h3!e!g#RBsDfz0Dx^BjF7~KTd?rBr;OhQ^_W_ z*w|)G$jiRt1wxyrk(h)P_3bd2bz>|>J6nAzcpz$cgV0s$J&XzGEz!`J!rFqnnvT;_ zq8J{CuG`(EKy0*rMOG(VxaC-5=jmu43)YM0d1-*B>(4~@5Bnt}HbAD@LDlP!Ltou} zZ>_cUekpjdnvTU%(B$WDcjxZ%&||xT)@QH=+*iNue>?8bjYKoEmlY-b{7OQn3{{q8 zH9HQgtgbhIIlFo%4Q6fvZ-E7Tx`mxi84Tt-&0i%fy3Jyq+`zYezj_N%0gN(jz?=9u z|G^HDQ#Fr!nY6z&Dpkp}Uv7X}D2Zvq)A7o$#0D(m??wO0-;1~YQ}92>AL>lzE_Zn& QFaQ7m07*qoM6N<$f`9!KZ~y=R literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/raichu.png b/graphics/object_events/pics/pokemon/raichu.png new file mode 100644 index 0000000000000000000000000000000000000000..7de42d5bf8dcf6b60c853bfa2bfc8ff0727e3791 GIT binary patch literal 779 zcmV+m1N8ifP)1;?k&paS^9qSdpko_yxQ508rS0uSTbQEWIc`n9Ksp{lQL1cznrrsi9?z`|~OBx}%$4I@QT zueK%=O+DNqXj`zCfIQi99quEn+B6Tt(L znKsni7@|=$n2>R)=QpfhVJ(OrZhn!Onh<bv zpUC{TYHZO8Xd~I#B1*=aaj6@dNuC(P&wNMHU7=sP$5JqS;VaS@ET=7&f@3NqOWoLp z^+`G;$1o{O7s4SUg0+DV{6p^H;Z~QlT%06ZgG!Vf7N)V$u4ZNoVLzi`>KN?VW|x|Z zgkbdr;8Uod2YH(TB{WHQbJN&?>${GK=Z*Hq)^Z%&Z~w_EnNPdcA#IrLF;RaXmZNFRHI= zM-Xw&-Rqwfy#0mwOS6{VK_tKn^U0Tn{?m4&9002ov JPDHLkV1kr?cDMil literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/raikou.png b/graphics/object_events/pics/pokemon/raikou.png new file mode 100644 index 0000000000000000000000000000000000000000..f92b69b416b23ee9141fbe1834fb02f36b3a5c92 GIT binary patch literal 927 zcmV;Q17Q4#P)f~^)to7dVi47||Fm=ednw*Q5R}CL0RI60)z#Icq@-$UY7h_*^b?1P0009j zNkl8nu5CC8<8N7%OBY10*R|sHuORdMCJ-I-KNN$NYR@G@;RMH)x>wlsp<;ur0XxT$)U*G!A+1UfoUj z?%L$S^NZESl_t|PI#!_|CO0u!fi!vRx^CgF)+U$X(e=tuntUplvz5vI?PKv0bx))_ zjj`h@Oiac#O9*9bzBYJN?sq}jy%Wt=_-h5=g^|H^OHQ`^2AVI*7$C~j@QVr^DqEqS zGgf?$3?>9*aCGyfdgeb2mEh356U|l#jIm`I8BBnS0K9GCkwo)3uv~>7X|h=ho;Sl^kI*`>u=)z zTu?WiLz0MXp&HC#i;32i0Q)AWMB%y>l|v`Z6O=K*he~L>_jQwIG0M0*N}6xrY@Ew@ zA7tFYy(Bf$rUVTEw+1cS16cP(i9aY2rkQdYW1=;sUqoXW$u0d2MTI0D>KE^f{yp*pQ!;vr9i-c?Px-T370wOV0<}oH(TMt$k9c+xNSB)_N zTrcNvZS**W@Yz;AjMKP$w%hq72^{Q+ePut%)-b`ulWIV1htR1ap=0!<^UQWQpY$5o zGqhR&T$ITe&r6$MsYN@CW4k+RGX5<41?z@&PI+24yj0&?&4e66dIRuiJlI_-o5Ez= z9d2&FZlzoQax~oBhnS}m7aCxd# zPSuE?0(DJ#(JweC-t{n`zTq^!m&Hr^XOVw0egmFEM-D+Eur>ey002ovPDHLkV1nrX Bx+eet literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/ralts.png b/graphics/object_events/pics/pokemon/ralts.png new file mode 100644 index 0000000000000000000000000000000000000000..476c86821e745e0755afa0a7b4e3d9d85e040ee5 GIT binary patch literal 412 zcmV;N0b~A&P)&Hw-Z|IPobl;)Iky>l^pN)Qkb`XQs!0003e zNklx9q9 zSEaBZ`L>tS-C5_zO6ACrBS((Ei>qJyY_v}HEE=6gWnYt~FD>$l*t=e^-hOzP?R(1f z1+4Ft+V$0U+w|AJ$&Cv zY+9+eK3M8v58VKJa4DY(df*L~*$=c5?^33}jtWpT$UXw}n6@hF30I;~v}zEiwO}>g z-#E!r`6yanmqv17Mq~qDMywX(X(`4@Eufqob literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/rapidash.png b/graphics/object_events/pics/pokemon/rapidash.png new file mode 100644 index 0000000000000000000000000000000000000000..dd87435616767580da6a9cf71bc6612c0c6a2d37 GIT binary patch literal 844 zcmV-S1GD^zP)Qhn)0008l zNklDZtYG#tIERF?3^r`3lYbMMgnZp&Nt-vrJE9sqV;(dZdB=3al(ciL?!~ z!tXJsJn7NniJm9f*g{lr-(Vczg^b7EDw8NneY`$0Hc0N#E052sOd$%Rz*}Xjc;_tf zF&A1O5tX=<=XLI!ltH`3z4f}uQQM8I1roA%y1mn`^U*1Cca_Cq>v67L`pCK7=lh`R zSi8<*bIk$o5C+6IuM4i|3?DoNS|76%$`YN~6N}4>9!T+o!-=Or7R~`3 z0P4DDj$Q+;0Eb@`_W*G5NB4)}$X7OUIPXjR0QVcN&|tdDf(8ea@44d61*pi>{gWZ$ zxz_~)C%^#)(<*$?0&12lY{T~sHjMc4`sX??m#KHa@mghI^06vjYRpcQ-ewkXDZ%4x z8>N#WW`EwK01(LFiLbm^W#N|4xd+Za3{9RkwHZIldXp(!I6eegjy#|8?KsF|b(|pL zx&Iq}7?wLdKw}E>rfNSGnC*ecrjw(3^uEdRv}1rl05+I-zMEEDy7Ho7edI>n-G`ye zR@h3X3H**neoK&E1-dTzP5ofXL@2>+eS>E`yt&}PehFlq2d?|>FZ$i98@MQ4NcNO2 z4V$``Tgn&qD%nZP18mz2cNbNB^oDzrFS<4AUa0hV($$WR^Gsbw z-qZe8sRg&(ZnS>{SrIlo5p#T|+b2d_+S+QC-p}?)^M9(?9G~g3^U>EdhBKyrdi(;J W{{ZD4eCr$l0000^`))z#Isw6t?`a}W>^ti^LI00059 zNkl#!VMZSbS@qGFdjtkkXP_ljE1~|zy)J&@GBV-2*HCY zHGg~-R@@;J3i*r;KS_6=bUF+1)KgFWooGT}ADtiI9zHQm4h$jtL8_l9e=yRMH}G{KM? zOj#m2@{Uy6Sr+m$bj4;oLBybaTPj|{Dev($^wp+>c@{DY3CqzSW^Kc@CwY(isz#-a zoo6B1aAY%H@d{ocS6rSD2ZwV>{12Ap21Hp-i(b zOv8WeCh+Z&Wwv|sovF8W%B(A>vQSZ)8{HbdemJ&f+uiWcR)*K?!u-!XeZB7(_kkr( zSn!0R-woz8&P(w5I(8{g4SL)3JfN2>K*+9_!(@KwCi6X5$>!ZqIda);#JR2-vYrQo pM+iO=({v=3yS!|`C6@j-eFLWnJTEzS@p1qF002ovPDHLkV1jigP)q@-G6Vh|7zik9q50004% zNkl`sI8@@kf`$&lrpg-PA+HfqN>`)7@{qwe)T->3 z`cAD(+6KD#CxLw7d>>f9&DfkdbLLzco&|qo^11>g=t2&m@vnj^5Txe1f-DUL>dFGH zMPL-)5B}aDrkKn3Z;UTUW~Nw)EK?%RAJndu%0sI;x@2fM5+)76eH~{F zJ|@l_MBh9~83`K;(A~2r^AZ5}EMQ*|*J~wVBxFs|ZVD_2nA;BUlfo;&tUy7H1R?vM zJAfSDf`A_zq0JGoZL5*}fvKlVazhylxB|d0i!a<%^3E_|^JWsVOi1t{eN zx2Ym$K!gfPI0B$MMA;|5E7R>R&WY_rid)tTKUt;QjY6&JS(BDAp5Lx^GR{e5MTG@K zs8`#fL#-OPByYFG9@ZURusp0!h?%yUJlfidk@Nj?R~cPXws<~Soc9lSVSCwEzGB M07*qoM6N<$f`ygo)c^nh literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/rayquaza.png b/graphics/object_events/pics/pokemon/rayquaza.png index 9a74dc64f034e17394d2a7412bb0decd3c6be983..1fca78a878dd99817c04da85219f51a62edd2504 100644 GIT binary patch literal 1943 zcmV;I2Wa?-P)e)I02mk;wBjQ4000Lf zNklNoJQ~U=Er43|xcGrD9_RI754;aeW?7H~~?bn@| zm0&=QpNjl*G6T^&s1H92DS&v4ki8Ed3mR)PD~a%E7p)gdE)3tIge1zZg;5cHmMcQE-&l0IIZFJFzR&n){J>m(doTMf~@VIu1iVkPH~|WR`-U zO|358yxuK0FbuyBI#6+Mxd+J$dSQVw1l_&cj+8u3F(36)W$&B?ba#!w=z*a?iPt?Z zDvhL2nKxIJy@p|;d9;+ePh2Q56Ss&dUfwP~XfXg2-K1EvVmCStz_i+>84=DhXOWUT{l#opJ(fJl8DM1+82(zDhCQD`qo(%&l5%c=9pr1MqKF3Qu8|& zIOS4u1w(-ek4LcQ05ZU8aQh{?&E~rF)qa&2KoJ7n;nm;}=s7hHd_qw?AWekY6m#2H zrJf8hGiv22Y>J#z4h6OxTh95RUEfXUX!|94e6=YlUDnmQ=R_5>4rPZg(Aw~$>6iaK|ezhinp4)ZO8MIFX9=ShqGi=s*asP<; zh+HdP_n$cwf}sTP@DATmkp=hAe>33se-Put<7--k7+4yorhK9(o3|r`x&TlN$Y5g5EgtzGEX9; z9J!XBfRJh(8A`0VdS`SIdrk3?xrxv?KM15d2>ghJ zib_b1lfWWGfn4tNRx&ek4wg<=nOstV@}_bltx$|mhPMK}PuqgRI{;;KPZz!#;^#K+bceRJ8uEN^F>u<#U*`()?jxH{#Y d)7$^=#$U8aR;O<+NL&B_002ovPDHLkV1lj>w(kG{ literal 1391 zcmV-#1(5oQP)l@UE!VzA$Nh`NT7l8 zPzrYVoVVbp2HoLG@TO}KeB^+^r&s>{l@1!%Sj-< z3s-;th38@hso$~MT5HhUzJv#2h%)bC<8$6yhF2EO-cR7q+tu=npB`m^HWH#n(BWt9 znU;HzqxIx-368DLX~%G7;r(QSSglq|L7<{dW@pBGFyNRJ?Bw>V&k0;_ea<_MBV1r` z=x*>r5a^qZR)g`*efjhPezf&DiR-P;dBgI6K>ET*af|6ulYwS{^=F2Ezk?rz2Z1cN zt(C0IC19TV zWjD92&q;iFwj!USUFroDs!3tV>r;i^W}rmlx=oq-=^4E3=On&dt;pwSmwJZBpq9G2 z2H~VrA07lKI<`ACqJG@XTb~p8Y69eQfN{4nHAr6Qs06(v@R$Z@GJwiD=nio74Bq;j zzzqa+q>WBA=uV&&2vi_~z)MPw4~>tN!Hqj#u=s`#dA{xEcy1i_f(x#|g&VN~)ipqH zg1~T0CDa&gpaD)gUl5L-@`1qHevapc3NJcw7`S0~0!>t~a4CTn-fDdc)=j%L5(QYG zIv5czSdQ<-@Iv4r-Z>kE!V1Ty#FIo#{c1wTHIPqT zo^)rSibuX+W~mAq-$kEu$gFUD-vTwNQ6WejISvy7K|^eJ=yw3U2_5+IEWnME_DUVHSw*$dfnyfH@Yjh#HCox9BgR%^tZm}`nhLvigjJ{{JJf^ zKF6;pfr)0T>Bd|YGXU#*v z4avCEQj?fTd=cC1Od@-McdpyUXBGYI1rBo;SY+*j6n7}y^)iWnau?V~`54b4`pEW~ x8O8lt>eMocdYyR+xyxu)(N8qHSp@ro$bUMUl@UE!VzA$Nh`NT7l8 zPzrYVoVVbp2HoLG@TO}KeB^+^r&s>{l@1!%Sj-< z3s-;th38@hso$~MT5HhUzJv#2h%)bC<8$6yhF2EO-cR7q+tu=npB`m^HWH#n(BWt9 znU;HzqxIx-368DLX~%G7;r(QSSglq|L7<{dW@pBGFyNRJ?Bw>V&k0;_ea<_MBV1r` z=x*>r5a^qZR)g`*efjhPezf&DiR-P;dBgI6K>ET*af|6ulYwS{^=F2Ezk?rz2Z1cN zt(C0IC19TV zWjD92&q;iFwj!USUFroDs!3tV>r;i^W}rmlx=oq-=^4E3=On&dt;pwSmwJZBpq9G2 z2H~VrA07lKI<`ACqJG@XTb~p8Y69eQfN{4nHAr6Qs06(v@R$Z@GJwiD=nio74Bq;j zzzqa+q>WBA=uV&&2vi_~z)MPw4~>tN!Hqj#u=s`#dA{xEcy1i_f(x#|g&VN~)ipqH zg1~T0CDa&gpaD)gUl5L-@`1qHevapc3NJcw7`S0~0!>t~a4CTn-fDdc)=j%L5(QYG zIv5czSdQ<-@Iv4r-Z>kE!V1Ty#FIo#{c1wTHIPqT zo^)rSibuX+W~mAq-$kEu$gFUD-vTwNQ6WejISvy7K|^eJ=yw3U2_5+IEWnME_DUVHSw*$dfnyfH@Yjh#HCox9BgR%^tZm}`nhLvigjJ{{JJf^ zKF6;pfr)0T>Bd|YGXU#*v z4avCEQj?fTd=cC1Od@-McdpyUXBGYI1rBo;SY+*j6n7}y^)iWnau?V~`54b4`pEW~ x8O8lt>eMocdYyR+xyxu)(N8qHSp@ro$bUMU5gQ7zc1AH{aqp4fwXWG~i?M*akr_CCZ?%LpNJH?UJ|?=-bG4Yj{4- z*!P+wzvN|gI+|Su)g}C_CuzJ}#TGT^Ip%kOeN8S*I7fr)(V z3!GSA$QZzW*Z%M#pL$|G=rP*>h-wuM*ePT70IX@=SO+>q+8a!Op7-kfsS>qk=eN)smi7-}#P~f2>Idx&9J>i*tP6COdD2?I zmfCrb;$w)3XXo8KX+49jZv!{keF{`|$LiQ7u#8OLsb{H3eZ`koa3{jfHF$rHpKW?${fD6TNjH z2B5zm+Cbt~s%anoAP9>lkYI0n z&fQv-)}^Z3C#Q24NDy_${S6pXq`gs@n=tKn4^HR5n>QCi-SNRYtPW8g8uKJvfK+ca zais3}Akf(b=#vAxzCzc3v(1`FB!@2CqnC22kK+gRcAE<1XcXZQ9sOmzz|EC&{*T9R XB)?+`JSbE200000NkvXXu0mjfbAy7X literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/regirock.png b/graphics/object_events/pics/pokemon/regirock.png new file mode 100644 index 0000000000000000000000000000000000000000..55cd780831db6b22d71be16625800a4c621a2bb9 GIT binary patch literal 1014 zcmV+S^IT#oi7Wt&3000Al zNkl@LHRMq7>@g@9^0oO19E11plqxcdoALiO=J&(os<5ZvpeJ0TI>O&{{ zPrBHY1?BF>dIX#0h6((D(gBjw_o9Q3e7}p$Bp=X;9nfOA*$DiC(g|8_O2HoX)qK>! zM)-n;OFO_~>`mVZc}h>mVz#+*J9sqZ!~JZ^cc<+Dn{n!S?ir=@Wa4?=O$USUct4x+ zJ=MaSI>2V^IjMU*9*<8(UgEj?`RLI)@dtZZmxJM$PBu+Ii?QP*uK$=)f8->N+rjr8 z=V(9cGJi~;&Zh5gc5Bq;nd3_TXZQ`3U)lPUaNRwUMUB)3>oPqB+mFzd&z#5+DI}`HTKA&<% z^2h`PHM5{pES`{o=QRO$7=!^Kj9tkn1ndPhn?Nlj{LsAsVGKi7tmdc+z=V()OnDc; zTMR-R{1~vS8ypw<2o${Ho(TjYCil~X4Dc$;5zY#=V-u(qlCeBZs!M@-q{Uj8MM0Vh zocUXX{ut(H0ldylpb=(~S}=hm(*e4oIX8jEIACm`l&AwZW3WN157d1D^*%2Ub(&pU#UWfJvTzI?qf42*I27*~3dA z$wPEN`eGgfzcn3NsG_s{&^1B`U?%X;y$!eyEEiq9ejaA^Uxl83-2g)A57Rd!24NYX z1K$u~gj2m_Fm7v|n#l0|?Qp{^vCVAyTl(x#&UQnq@@jKwTs&q8Nm`;Sdkh7Kb0Ih~xz)4g^4#HjktA1YO63(Cw)F-u2S#AkobF+L^SOJXZMJoUrwhc=? zR>t*!mElGR?qX{Rp;~Mu+giR=7TZe%4fZ#H`Tmgh3`Ogsr0TDQ*`0parvt`pqf#ww kEPtu~>wcyF4*$>PPuQNrz_`k&j{pDw07*qoM6N<$f`OXimH+?% literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/registeel.png b/graphics/object_events/pics/pokemon/registeel.png new file mode 100644 index 0000000000000000000000000000000000000000..3bb37c8685d0b1abe165832913903dd9ea15f62e GIT binary patch literal 794 zcmV+#1LgdQP)W$0007| zNkl+v82L|PXDr)gP@VGeFaG{ySy2%B9G~MK4MQ68Z;XV9PT9z3$yAB5q^0|_+aOZI{XOsprHr$j}7A+oqe5H zjOYdjj=h1qpRq$&)NO}kBpdV?w*7LpTv=L2#=>-X`aOMhEzxJ_7&|>y4}CMg@|j<4 z)3$Mun4^pot}TjgbJGdzN0)RPu9ze?d80wwqQIW@@lg;T7g3J~E-YA&)tWF%)UV*s zyg)JGgqzVt3RA*as*U%@iK=`11@ATtgC$x00BRMbtXBvEv6tA~M@ISsoc`1<8xn#r z^RD0qgX||@YhMsc2iiNV)Immux3VQ`}E>p<|f(I5d=f=@dK zW@^^o*ufTib?d;BbrlF3%5F5kqD6I~yrBw!z{V7QUytB~Y9=1Ae2{~{Kdd*)$NZni YFIXuoL~f#qxc~qF07*qoM6N<$f?eo;WB>pF literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/relicanth.png b/graphics/object_events/pics/pokemon/relicanth.png new file mode 100644 index 0000000000000000000000000000000000000000..bf1d17877850f2040b5fac6b90657471eaa7bf43 GIT binary patch literal 784 zcmV+r1MmEaP)qyPW_q>F=#b835HT2etd_F6&BK{5aK-iv!u)?j~~0007; zNkl<-v9HHrFgv2;zr$9rNOTehY zee7rS5cX%L*p8&<;ijd%Z4Z3-jQu|8Sx>U({f~br`~znA*!09JDPljx`u1?%D&S%{ zLd=IqShVKX=8G}sLnN3dA1p}tJxZ7)xJ2(4Bz-K1k-!fI-b;KjeBk{N;&|x_i(Y_+ z+~&)If)5qqByc53Gs#CeKpL6}^NOvod>EJ6Dgr3$<}nO;^F-WVWP!7$Di-G{kdo>hvl05y;&%G$n617JGm5zul5|r9 zL9sn2B&uf9d4%bb2-_Ge<(iGq9|ut+@21gB*~2WeTA+eF7%X}wA*++>^GVrxo})@=7v-bXu?M;1$m=Xn%OpwzR36muicHGkUu zEKJRbtT?ebNIyh<>%}?hf@ln$q3i=;V9dy4=7{{a900RR60|JBvitgN(qdxKh9S}7?xM3K2@0004& zNklZ%Z^mJWtM$>Rk~yA}K@!dS@?xGE~P zbm!LTKT0Y2E#X7vyOXU`7(3^jbN*4dox>l9BL(zt7oa=(><+1L!u33#Okdeq20hQG z!i6YiSt&ikF#KA~F-{0+XP8$47r@+G4qnPji+C*Ph0@^ygnJ>x`^pSiV_!pE5P&%#OnLO5|-K3><|^R}|6?LU#N{eVojTb?1HYTv471 zSsi$MC0?itg${vA3h;GTD`nyi*4?d3*vEA0q1;7b7B~_5uTJJbCubd=O6NO1n33=E zz|jc%4Wu1X_ATSd#S8#S!D?X^E3Id3sl&^@H_;#hdGKxjhcr;WBQ4lj)vt zLkd3UDQ3Y0@vWLy$&!6ET}uiqruWUa(vi!P=Wjpv<P)sN=`0007W zNkl%k4pYa+0ChB(j=RRtVINYbacde`1RYHB#RVA>!%U@V@futMz zL&Ic!kc}(T_ zHSD@hAfh~z(y8NXqaNY9d{SCKCna>7Mc&xC^lK2!Jd@JXZ@PX{kMha3N0y^ejn}(= zedwB>pb*_{Zpw$G4&b4xU}EF_U7pFABGd{NsTY@X=G^|YUB z(1dCG^`Q1Fq$P_z@}FL8{NhT)!H;0k!A^=RF#MaOnLBYP{DhKQE08)M{r zgQY~anG<@5Z|CS`o6ncYW4>27Pa#d*kA`3k+2*GqtrXz@s1yhaJ%-mW4T@Xy9*dNU;5<&Ugh_R!i5#jxL)~Hct`}dz9agG7k(83 zhb6?^Hvtj!y#*`1cCE)eJF;C%!rV-dn+dd8)6{iZaEbG>_N>XyII`+_8!|eN)tb*v z3oxA~I9sD6w5WRC_8b@>*^ZL|fZ3D@8q1N-K+v^RZ9tO)V8?M!XpgdJO%4|C#}H469h^NN zK=j9cA1njFWl6{PP4D)VM@!xllnFr0qdm-0RiRoy7Dp;&%FN(1yL;L1cC}Xxs7u1p ziq*fT@;u8QkggVh!`5^>-;NzHhg7a@kcL#h>(aYQSflRp@aqV@wP`*zXnyGSKgM6| Wj%U5z!PuPu0000U) literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/roselia.png b/graphics/object_events/pics/pokemon/roselia.png new file mode 100644 index 0000000000000000000000000000000000000000..5a2ff3d9e8ed5b145f4c122d117197cb5e46469c GIT binary patch literal 437 zcmV;m0ZRUfP)cV|D?SsT9i_h)nc^&d}JD=0003% zNklh`8_LPBJuwfHEA{u_!02W(OhfUC8 zKemSrv_fl&upvbscH9(uG&*cB{`yuQ_lQ+Du&_a3gB^>wLX;6}#6DueMA0;o*?_4Q z(ueVY0g49Ya=^yfjm)*wv3*Z2nG1;u*cZY}y*#CB6Q#I>q@1kTHMQ3GzA{s{UHc?S zHJQbLwS8ggk3~AU`>v^T^D|-J12&#Bw$3hJ>e`tSJ}yk+y4mIKx% zoD6T$P#$tl{Ej&ZdA_Un>AvXyVHiF-9W};HUk!`dZ>n6o=D%78q1QIs-!-r(pRRA_ f`EO}k@MrT0^=sWG)06@900000NkvXXu0mjf3%kqt literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/sableye.png b/graphics/object_events/pics/pokemon/sableye.png new file mode 100644 index 0000000000000000000000000000000000000000..175d7133c45817b8c7a87fe20d91d6b8189dd22a GIT binary patch literal 510 zcmV1pw6b4{x>>}hs1}_Fb&|nJgSrT{!FW$2D5V?T`DR}YOWPzYwbcV_) zO(Z!lv}3{l;P6G^e+m}LvMpP-Y}xYraQ(nsTs}(5?AtlzC37+$GVd~$FHgd(xwxXd zY-WfD#O56<>O33}n>FnDkcR_e`*FkIg2L2X&QjL4q0E#)JeZ#J4q)tVeW`t+MTy~n z*iKnQG@~YL0l@}^sk0K$7akfx*v`HWTdN5x#0r~RU+S!Y0cERdLD<&P7uHhW_mkJI zx}Ld}ePMxTd2S0q*Z@cb0Da#aTLn=5tgh?}?NO=oaTbJ)Z}c(xzB!)TVEoGdt@EQ% z_MK7YeCcaAVcx#A72J+x>Saq#sqwnOwRQfAl^|_Cx~MO;ADK`6RCJ`P;S=Y+Aq^9} zh@da=aw(KfL{~-ZF*CL1J>|^t{V6O=%>+}YD!j}XochQwP|@}Wci)7C-VizCQ{IPW zeeV9UZrvF5S)Jal{%=KvtL4Y*F8RX6KmXVH0`}0{+}`Dub^rhX07*qoM6N<$f*=5gQ7{}#9k0KFW2OjuCl%6`sVK4?cgtCKr3qH+|L-1!YO9#(D3fbF;HP2 z@AQBZC#JQy!KTocWpN!~^KL%LM>d}raf|6a3I}r$YT>lYrWoNzY_1Y)9t898-kiuu zzBEmyUw9yo;a%{&`@-j4*5!OK3l|jF^<%V}NZ^t>0JFM$X zgbNzfOV(gqtqtsP%5s6%9y+Xr5?~CltpaS;10IXv;8;(g$tawT&6Fp+2xzd@oB&It zWk7@Vu7OQ#tx1cwoOy+iT^T`}F);#&1g`>YCN%X=J`xWjnC!ATw^JSGWAr#-BXCvU<|#d(W2 zcQ0e`1cst)aOkk^go}<(g@m{eG??HkC1EIJIGec3a`6a@u~g~jd=Io)U!au2St%74 zf+k}nAjdMQUo|#U9E5kaDpZ16!G<&y~dG|F$CtFwqKEc;&jT{N<8+^6+WrGJ|1cK+RRx85Tkd{IW zG`w2n0(=-^d@EH#3_Kv?W~c(z5)yU|`|?`=Mf;^I$}c9$bgYFKSU2kvg}04VLLEqT zQ@t_hHQw>HTQ{s-L9gp2v~%o}Mo~MkUAoC`#?G`~^Xlq1Pxvr+U*{49+y)t|%Kr}R~C%Wo`Xox(a1<{dSJSis{;Na0b%5F}39%RF?i`t3iEeX^V zTU6QWF+X>;;ker)*$Hb4QN4?fs%=qQ(E#a9_4%h+c^se9L)*$e1e^5EgN7vXyvm_+3pKBH+OJRyhQdocf?4t0T!I*?N7^MPZTq!k4<-<1#Hk~_o8~lE7+#vt}002ov JPDHLkV1h0v*B<}? literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/sandslash.png b/graphics/object_events/pics/pokemon/sandslash.png new file mode 100644 index 0000000000000000000000000000000000000000..4b8eb2776bb831324982669923d02ce9e0336a69 GIT binary patch literal 623 zcmV-#0+9WQP)V7b3y8JMZV(*1X3Lwfsn>WGR7kHnd~>DQL{md8ZAc4 z&NpQ2U`wluLO7Go$jn0c3x{YGz}>_9GF{Hnmld$t!WuGdY9)^8`RB= z+O-X_-#&dO7n*jG65CemBooHA=Yjg(dTtn$mxOwNmU}}3(abGJoD$I#PbF*1mPyY& zo+nUwMTh9{^!wV<)9IcbKStAVM5mocmnX1vqV9$`I^8gU3!lh-$X6%+_K#CRjmM8^ zIIZ7&+swIVwdD^M=(8$Li8=Uuih#X0+84)kX$23ka(UNl15CuP)MRsljW})ciqIWS zcGC}Xb)={>h3CSMz9ddX!imItI?qu0k>c_mq{Urj_B3NYcFesky&vV& zNklPPr}e8 zMCPrGdg(xL%%^ppDlN@hIphfy;OUPzILRzccAmhP*G#VXH1mxF8TWc)M!_}X(l;1$ zB=I%H;Z9QN362>vQnE*u3U>wigwT!!_j@icHAny)ln%QQ*OP3QI%AbepmAWw#Y~%5hlpoDB^OUjea)Lwo z<0EV}m{)h&)vBgfk>+?Q%xd_i&D{!f$&`C zdvC8vk+tZ~M3M_Ggl8~f%sgH}p;Y&vn#ToXqGQJKsnDYTI?t)7Sl2?HS7imhfo0v* zF$%4z^7c1^iT+T775-LFka6TP?hkn!4KBvsPy->}USS2REEw#cnDE$s^aZV<|EB@! yVR(kiVI7;W_Gj#+#52Khyk3XF=J`_Mzm30Wgedc`&Zn&a0000mQ|3$nh6)gzv_DE}>6o z!TKhkvtZD*RgR{C&Fz$r#6k7A%1r%EO*V)-x7C z3?<=E+0Ihr(NOUngT>RHIxGer-^2oekWbT_36!!363WMP$CH#uBpeM3;Pw~Pl2mtm zq3M`l(4$uL4s~L9OgIWMND5&vklBEgS#KzU&5mrd3(p;Y4Lz5`c}dK)Y4_s<3TBvC z1iiFu^i_BIX!G20ZzzJNN)ERl)UO#+$Ah65kR{O53Zat>M;1W>lrP)Pz;VaDp$HO|MwrI3EbuC%_Zd7h+T=p>x)Rak{?KC9q=F)q6yX{4)UOKSnE@gf zHf@N1ZBm0uDV++c1@pX50p8ATWbnnTVJWZ_e?9cl@{fl9Hhu$y_f`25iGdCP0000< KMNUMnLSTY=EpNa8 literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/scyther.png b/graphics/object_events/pics/pokemon/scyther.png new file mode 100644 index 0000000000000000000000000000000000000000..87977609c1ace7756a3fc936965a25f6c02f4c3c GIT binary patch literal 768 zcmV+b1ONPqP)TL1s7_U3!d#af(;F}?qDoZd=ey&y_zAP^7`G981H0007u zNklhXIRst;@dpUJ7$hY$ z$P!RwpDj|6RN6&s;*{FgVT51MQIU|&u+SHJb ziVzNYBMQ1}46jwr7DXeR^{yaYnTlD3vff-Mw;RwHqH@--XM1Cv^*$l3sOKT?4G}H8 zDg8PYn3^_SLU)rj>gq`oXx^AeenRP6xxPGL1{10%yUDvtSb9l`${NqVR&UC0Cvv{X zn_RS1>#`-6S?_k_gmUW+8EqGiRg(HoD(^>Fl56FfGO!$qM$Y@&{ay zFRkS5{OW*lHKV0)_0H6(-;1e?NThGQ^DI1 zwAFQZkX^iYEC3xS7s96N&D_phIWQzNFr!u#u>jn1d#8f8D#l|08RPddCY;f;S({D_ z>Ycgez>pA&)*3%3V0RYDGR5O}A5uIOaHp@mS@kC%>gB5sW^nm3%xf-<=o2KfvHKB| z{`K-*z@opMv2v%u*MonH0Gkk+Q3CM2ObJlIGjSuIX9ykb^GAzZ7;(R7gzozRyIqH$ yW*j$zI3LCLPY;8PVa#E-LBijR7vUKH=k^1P|4ff)(xGMm0000H8M literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/seadra.png b/graphics/object_events/pics/pokemon/seadra.png new file mode 100644 index 0000000000000000000000000000000000000000..56532feef002b70a09aec27c5b49ef8b35adcb7a GIT binary patch literal 709 zcmV;$0y_PPP)zQw3zqqtS7}<%$x)Xw#~7h02zFXC)KOIDp+%e8YmDO zeBTs+7N>pYemeG2_x}Ek zvTCt|*su(B%Us8XhP9XqK*XUn82Pgh;=7{Pdv0*&Vla(FHko@HjVd=}y- z4D&M1jI$sPQ~=UuP7R|C!C8Y}3=D}Y!88=w zli6o7Ky+X{6$JfL<3z7lQ^ldE$+?{=C$Jp=&%H^TXY_o+CuS#9U zoKJ$0v3z(+D=@Mc0Ajre-XF3HKv=WNdVxQM8|RDsXd*9yYz*;CZpA=iU$vv_*nsQr(vYlNm;{n000A4 zNklDbKSP0StKSL}G%aX;9u~n*J!NmkWLyB$k7y}Da zXfVUDkm6qE86;sc#U1nvdn_GkuAR9{n!pxOadm&TbpGedvWw#9_&*HhPp2O+tTiW7 zQTWaL-DCIei~w-_WdPA2<9s!L|4_}!rL1RzCB~Bg@YNh)V{6O7ps*{KluQC$5UAQD zkWxlMOKp}*r$tKXB-7n;Yu5mo2)q-Low}SIPD)XC$)G6??&&W4DPm~?KNpEXjTV)) zISI%+(IgjZFbuahX*Ei*I7I<|F}3|I6=`uK@JS9C2)x%rmj#e9V-yjqTVsuFNuY2Q z#}u%tjH|Ik`$_fsfs+83z<2gppcEy?4COu{P7ygU&e$>q>~Nzq49avDj=t@WHeSFI zJ?$4hSbHKMV767xa^xJ*41L?TRnBP3S=%${38nR3_1?}6C6tc~kC2jDFwuL*EhH1f z6-C5ki5py%mrIE}%bc>7kE$O*QA9mFA`h0Ub39{}=Ydwq|2_zP| zYxer@Pk(9s5OLQh?x@DIK!ZZMXaEHR3ldyvs`bs|D7t3F9W~YN-Cj=x)B27KO5%T_ zK|i}rj(VepDdY8&>G1xsnh#UUM-Q&=p zBh88_rObP0^`x&IwnlU@F%^AoOE+9P=+1EQbomCm&gA1eusL~uus2tS{g52`hVdZ3 zI2>4=+H%Xw(cpy06!`?v=Z}AU7|l7h;R$6T3v4*}RIV+$dWD7m@?g#~i+f#jhNJ5G t3&Czb7`C4%E2dhTbNnrB@#pxD@h>WdP)&_u005kvw7tF6-roPcoO{)@lhe&Hw-Az5oCJ0FPgm0007* zNklM3D|DT;5LYDOsFY&*G4RDm7t$&szaD<;7d6Fd8 z=`h=do5?3f@LmWe=^%>(?UkE+as-alOBRDH{l-Q=eLgjU(!Y>`v7a7h^1Cwn>G9Je z8@&30LJ{LCJ>k-?hrg4QwND!?BFEyK6+9i{;|8`zBlFq`8Y~|GzzDo_fE|Y7&~uy}X1k~WJbuwE zw#j1cpjv0k>QlRh20KWXK5y>;>5fpd9bZsw%uGM7CK&gZ;)}e30#r z-d#kV3li)xgj8Zr*OOP1N#!>~G#HrbI8cHRFl7+v#CW+@f?Np_(-cD`;apC$&DYhm z9l<_B$mqqwkOZB;)rKMHTUfq*Ed@n|-?2=DY7yLWdb8QA{9KQ~)~psy2!h&smjoR* zbjgsrTF+WW^*1Wff(=JV*9h!Qxv6*GKQMh{SF;+R;|3X%k zCvw7Mb}Izy^89+H4T*DYD58k2ulnzPCJlRh&oLGaTcC>`cgQ2b)RJ?y$bJdE?R}ZZ zri5XjSQ$#su;g(bbb_X#$5=t<)n^<%6pTUhmmrcE*4rpmKMTWDu`-mY(#liu(ZmzO zoX?=uBZuE1?=>Jy%CcqoO>vjA?0&UrC=z>WO3}>xUD&5f{!#n^*`WiIx+>IO00000 LNkvXXu0mjf46<&n literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/seedot.png b/graphics/object_events/pics/pokemon/seedot.png new file mode 100644 index 0000000000000000000000000000000000000000..5768e992b57b7af8f12adc84a5d21fbbd33a71c8 GIT binary patch literal 356 zcmeAS@N?(olHy`uVBq!ia0vp^2Y^_Cg&9b0+m^KrNErn9gt-3y|34^5p}D#k$e0sl zcy)^5)h$8QQ-ZdfZGQG{%eSLR|KF_vs)c}WmJEy6EfNQE-g~+@hE&XXd&O|oVFMnv zguSuOp|4acJQqak37+7z`d-v1cf@GV(}m7gZ{~=uUh?kKf&br5s!WqfYM2KC?_Hf{ z2j)2QiGG%x9^X`Xm_ruW?suU%tS%$|JGU=qjgT@TOm=5ds6 zo)sZISKEG-(Vv|D+|7F~r5f_&MZ8Fn(0~0(n&(f%DS7Y8`8UlrXX^MrIr{S5j%UJ+ z+UqBMf4%)v?MtJb(^&)fSuD1#TmSz0q5Wrt*Iu0zUio_VS5P>3y85}Sb4q9e0JaXN Ar2qf` literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/seel.png b/graphics/object_events/pics/pokemon/seel.png new file mode 100644 index 0000000000000000000000000000000000000000..d64b24e9434bba2247c7785a32a659cdc1453275 GIT binary patch literal 624 zcmV-$0+0QPP)rgro{=ch$8ASLEAlY*YI&U7oDrkU}w1g838beGb?EcJAqZbA%SY7 zjo{XD=NxKQ(h!om8g~R*oCqt+4gftHN<%1V1P6vK@u?jFzYrm_>=zvi%1|Vof8YWQ zwsamDVJ+w!s3@5&XUrY--tA#QOTcGX3r4aYisgtE{YFM;rpc=K39eUDfR2RfP+?UG#J%osVPPjYXqYph!As=5e~%*}!Yq)m zMYbg(ZH2pq4W^4YXF?09Ba{E;H+=-8rn2KJ<^t0Z;J7fy5wDIdgm@9BOekFHXvz7v zUuPV!5MD8xkUdWT=Q09y!RwzE(#-wpK&Fn?E&uj(dghPQ1^d!~Q7_-$U!R^cp@D>t zWl`mf$e)tbQE~YBvEab+370ex9!@__Ki7LGl#kf5*G7issjBXUTu}43T8=_hZ=+hm z?~i3(zlDzQD4B;gYKNUv4|TrzK<=pFiZG1bZZ!GL@xRsoL-7YelF9jt{TA>50000< KMNUMnLSTYFD=4`D literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/sentret.png b/graphics/object_events/pics/pokemon/sentret.png new file mode 100644 index 0000000000000000000000000000000000000000..bc763cf77e4c6dbfd53fa81275341cf64aae6244 GIT binary patch literal 554 zcmV+_0@eMAP)Im{s{i1+R`lHM=D3V|p$EZS8QV9DgDL~jba-BMuslhmNaFg5!W#+#X zht$Ch&Uwed&ChhkuDJzghj-W?3KT#&HiE(8XKox`IWWpC*q&ozBbZ|W!b<_1W9G(z z`1x_m`Gx^h7{sN(vco$l!8>tcIZ|RDOs!zVmB^n^fxh`AVFkZgh+WCvz%UXuU2)50K1Sy9gNCD$O+%5&nj!V|s3ii#13sjk{XE2uw zdme|zfkt?o2p{URV#zk&jHru8WG=B=xztrG=R?e4Bv*)Ejt!3pPb{uOVF{HXR1T$R>D89z^&h=Do=@z`LiIO!2<*Ci-KJm=(IHyzF?GBocQN sk7Q++WY-I@Vs-ofO2E&YdVk5j0AEQ+M0009j zNkl({Op3I?(7b$qF_+9KJpduJAYYc?gLwA!< zupX+j5(pKnP9UrbCUxjn@FGaHv~MA zV*=+?#}?!Kac2a;_$30KG1f&n-Eosc9Xv*m0B5yN0#9^Kcl>BU0u(}L2BosN1#EIk z4M7-&gk(n7+6qI|jRN-YhPI|yca$#0nIQmShteDpgl@hPl1yoN$lq|iof;CRfijm1 zI%gJz(eb4Sq+m@wZmkyG3N+X(B~1p!$pYIYN_Yzhc{@K@(Sj0h;f_IQ3N|DWkk-C@ zZB}0D6;PkiQ6WEBo>2Mn9gh+4MyRH(vg=nE?-F}&1_lGS;IoLsuc1%_9VIw* z%LR8y3uX?mKne%)t&RlSzWbU3(WY~-rs0>}h|B#Cg&L>@FOF8diDi{fX1WJqQ*RK2 z$6i*&2K($zMUoiLCVzT2&*TPfgm(am{hqT|vC1Om0IaEL5PtPKDmM-%ON=``VkPGi zZM|BEIte+Ry&FiZYtGtrBs73h*k7kA*V&uX?G>j=>@z7C-&$JmotFH`d-njX6V7H) z4tKvHpcKM2Qq%VJmxb-v@kGyt%SnD5mRQvZs$?isz_%@Z$n}puKh3wapxJc<@`2FE zzxuwQeebwx%dw2`tFaS!p&*GcIjb=MB0xNL)t+~h(B^zlL_QE^alWuco%Yv1R1;}t zS_~)+yuj<(qi5p%tM(!m@ar~5uOQdy7uQ-kb8h4d_}peW53-<1Qt!>q@yHP54vidBP#|I5 z%!GX3q_Rd0TM->rPpuf=#0wx(bnnR^1(Z3&f&tvBy5^B4%p)P3(Kr?8`E<5n3xCUU zK;R((><|fwB}5G`NM~CZyjvLth%qF9oqpz-)*o@#>(rs6k?H^d002ovPDHLkV1nUh Br}6** literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/sharpedo.png b/graphics/object_events/pics/pokemon/sharpedo.png new file mode 100644 index 0000000000000000000000000000000000000000..1d4c8a5112a03c09a90a788f0aebcd2086e8ecb7 GIT binary patch literal 694 zcmV;n0!jUeP)1eRMFh$CVblb@iK2o#gVLG5r9mcO#VKxLlQ#%*I!e`gzv2&9rtv=e8TrmAc}F*blg)* z7+^8#$qA+`pcr)!rfkf9VCVNLB4Z|8rZ69|A1F5I+8I~U>DV_#r7#_~36$+X8XL>j zcnwhK5mz=)6@&HzgJdJKr5mWjVF$Gh#B#`lC7Uo?-Y!948Y12tDu`sOW6z8W#2AsY zd9O)e0wv;g7dlQANFL4m9WVeBXo^F`y0#5B9gEil&$FKj0GN7RL(jG8wh0ub>!RaJ zp!6na`PUjvAXl%qzGuqgm?wyd5;25b+kfRH@UpF*XW9DPkAhFVwuv0GWUWM#=R4rY z?Vc#1SfAfy=R~tCO`va6oX1Iqz~_CYVu=;l6Y3>~U6aaOE;GfWCeXL-=^JFpXZf|) zwTkKr-~&Kig54v}q=s7Rv6;ZLZF2vh;Jw`Un(DH8hKCirt4giACiF3~c?hft z^lj@0xA)ceA=C0{wOVcUfS(`XyylDMu9L#AvmamnEF zY@jFCO%q#|7p;I7<6~>Q%s+06LF=Q08n17F!_oCQagn#@BZrs#)E*~VJM>&um3e$! z!w#;SgWBccR?BmHTQjgY2xmZ c?|-*`1Gz~X;79!Yn*aa+07*qoM6N<$f;Jpg&Hw-a literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/shedinja.png b/graphics/object_events/pics/pokemon/shedinja.png new file mode 100644 index 0000000000000000000000000000000000000000..0f878808e4f481f404608b7804792df647d2678c GIT binary patch literal 634 zcmV-=0)_pFP)BIi!Ozi*qSbN+|#U000000001US}FGCV*mgD-rnB5y}f&Tdk_#1oVos~R zThTVb>Y}D~LBm$2E`+?EV!?*DXZtl?A&F#=e@K=$gZ^Q zcB%G z8wL=Bxq>dSX`kvuGTLC+XaE2J07*qoM6N<$f-Vj(dH?_b literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/shelgon.png b/graphics/object_events/pics/pokemon/shelgon.png new file mode 100644 index 0000000000000000000000000000000000000000..93a9bc739dc069721047ef274a457b92c3f28733 GIT binary patch literal 537 zcmV+!0_OdRP)B-&pux#0e;rPYdC#Ky`DUJ9URj_ zcnm70Uit}l?zEnI99~B@n)@7+*T0D9Ua*EUifn9C)*Xr|wu1GTwAN*qqP*f9#&sV(J_*LqDQESKb0av@t1ahA(?|EN z#~9k>+L|@p3f4=ab;){cbrUyd4CC3_n5E5A*2|KXhV}5FB(knQXWT46Jp89%$HkFu z@g7)djFWoK7|t%bh?vY$))KMBdl21aS*EXgj3Ml{1~^2Iu?g=&)=w_`DPss-GHgwf z->h}_FvIPW{^!U@DfLy#7!D?zzuCr(Sf5_jg_<>}8|U1!VjZ48{mA5>pS)dnn(&4J z)`i%9o8znT?FOJ!;(90V3L2}A&qwVeeL320FjckHbo&7SqIh4J;?57lKMz%~Gp`*g b_!fBq{X0@=nD~gF00000NkvXXu0mjfa}5EF literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/shellder.png b/graphics/object_events/pics/pokemon/shellder.png new file mode 100644 index 0000000000000000000000000000000000000000..ac72b780d932992b4a3f3fb9d39539cab72db5fd GIT binary patch literal 472 zcmV;}0Vn>6P)b>!3`MhO6;Kpia|uG|rZWT(xat;OdsYhsSDvAi7g0>)qUctb$ns+G z^P8k~yIpa`6<7S@i2Ka=IOpF927J(5ARt;~<=`y*5R+hmG#BuKgox#&farN^S#c6X zfHJj!ivF{&*$WaSu!`!q*cK2#=JNt+W+&*MtK&?@G8dq!KFirbm&Xuz4O2$9b?EVOx+Ojf9vwkMrGeAv*-MXZJE5jz>Ze z5HeHpf}TTVo$|08DrExm3bDLNd#@vbI-3GV3-gl8SN;GasC*Y&Ahaf}@scCx3)>b_ z=h4FQ+3uXj7IcLL>`M-)Q#4!Rxet}=?Syr$l1#j9 zmJx;R_2*d~)#)bs@;yI?D;Vup@q(}TLwo}&lIbuBxGWL? O0000X?X2P#Hl zJaEF`R~^)3qE^&$!3c2`8@A)G%dj8;+P7Ed`wmIIl!2#>lh=y}KQFriI)(>v)n<^L zua_w43|qc*>cpMML*#}q{ju~?NT0TR{?nEz7J zk6YKBhyZTrpm`C55FOe@ZW^Rm1cJxiGIzN=C=5lQWVBbCGAgvR0 zf?C7ncy5QVvD*n0Hi~5+g@BeeK-GJj8v;sy(Yv< z`vMs8NmA3}cu+v2VXPkytYX8C7rBo)ioNY)HA%B$KTjacdi~X9*mbG1a76?!}A$=B)q!)mno}d#q}U#e<~PltEH4ti^)>000000RR90(=g7_0002- zNklFEsX9G z*;~XYi~>lk-OT{77q8Dx1<+E((>W#{|vh4DzT)TjB@ zjVwvA1~lYT&9|3{7`ov+?QPUe#Klm^+h0JyVpqh0004> zNklo_SmdKzBVk1@PB(%Vi$ zKh%t&Mzci=+iCc2zx>npY-)&7gl<7GuefM+@7-UNOdq*+BZ+btAmo z+CxTO-Ox4~*rwlKbF+UlWU;WbO~(8Fblr6=8QTt790@fVYv-rC`N?`Sb=NEV9Wh#* zSKJA8%aPrNy2T@FFHP5;rw#DF4Y>Eb?h)%A8Q^;?4c^QaOLfhN*(mhm9GQ&M*j;dH zv|L(2Vz%{?tbJm%W79=cm|cHi$A?1>XM(iKi^Jz@nYW*?q*Z>Et)h~c4ZJE+&V#dE z>2{!Xs>)N@$)!~X{+v}MM@GAORB{N_&5;f|c~wFAS5OuJkP59n5l{D z#_d4*bKVYoto?D!?%Dy;YJf%O;k()|I`%x41D!{;p_50w{r;1GUAXN7AnR5*wJ*() zE3Akc2Wo*j7yx$~#=;J{G{-3gcu<$uPpH`6zs>dAs~T$mg=4wph(&cIGIwU^U(^?U Wz_o4Mk*se30000XUNIr&d}1K z;PdqP{$yc*J@(jRkN*>9!@nNzIqB{|H(aN`wYe7Ee$c(uZ~ZH3#u!vv|E3u*_z(`V z`{?~ia~Q***c_=LqGk%!V|23VMq~7GP#rbTbV)QAM=!?V=iXd^j_Of#cXkvP(I%eC z*eqyG1D~8j6b)Z^PW>d>9Fuh~D4H7HbNZNMm!9gG=@W;h|M}w5B->cb$+C{ckKfE- z&N;Ds>2u}_yMo!;m05woB}8`%Ez2iFzHpw%@^|wSU{4P}@oYAr&hsDj>xK6tv3WGH z%>!M@p-Iz?@E4`+uN7@w4Xm8B(KdN##w{mm4DGn@hPraMF4#kg8!R#FiW8!1HhYnP>Z`O&8{= z(54Fu4y1lNP4+jy3sb*$fGsn%FB_B7IfB*V83%kq(CW|R_!`GPxhyB~x>|nD%2pGx)*(Gi824Gq~wTCx?>h{xSLeQ1m{z3uRxD4FeWE+A gXRmnHbj@Gp163KLXzh>9eENx8h2?=iqhv*5CSCoia&!F zFkWSEb4sK%K`SjEc;+95G5B!!-*Uqp{?o?9EoK)f)?I-C02@XD>h z`^>o5$HzB8*V$s=c{Tg605S7w$GMA6WdkM!Za6sj_t_)Xjs5bC+}2gVPidT(w%cwACMn2ESxJbJd?Guej`m z#FrXi;*!D?jC<@YNr~b$adp7C{0am^PEmMh-efG3avg_yLCss@(ocbTDJ{ictrBkz z;@fwr0&VPh+<432d4&4L`45%n(^%r%4;oTXg|JQqT_b25q!^^K=*ix0+{`X7c;(`i z{>m1toB^5?Y_y*In`##KWs2d!tMgWb#6v3q&pT`-;#Fc<6rjC|kipaxQWmgRi171R zi!gC)3pos2JXZ^mG6KZWD@lFAQ1QlVGO>9|ZssOR&w-*z!nYg;F zFX#~Er$C!gQYeXiy9VNo;mY2>PU(jc44)hGRTD6agp3mz9@kEQjtI-)2h!Dc*j! zgp(dx6H0~Mbo1c0uv)n$Yz5+AhQx!}Uwh14378uKziKwv`ZNjH#JCn{$$6zd z;D2{VBY8>;cGCszF+Sw~?pMaOfVjTI@3ng$Uf0w1Z+|-eyY>?{@-eFG^acO`0000< KMNUMnLSTaHzN>El literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/skiploom.png b/graphics/object_events/pics/pokemon/skiploom.png new file mode 100644 index 0000000000000000000000000000000000000000..95bed007c46282ab800294283f82ecceef471fc8 GIT binary patch literal 492 zcmVMN|Y{z;+y<**4;@6V2LG`SmOT#v!N~1vxU%1&o`v=%*bHDN~3hR5SSS?-;mB5 z#U%NGN%LS7-5_;fqh3_FA)V*y^`aW`zeUptdUH7&M+QdIOPS}7=p$_)b!(cq^IknN zdHuCg0Q&747lYC!-100000|INL{YP5R*Y5)KL|E!e%gKEW6IfE%Npl<)o0004) zNklsh?L~N6T zfeF#eP<^iN$Bq<$OI+d-m-t7K{NUe4zRYvdygmO|%HA5~BukQvbl*q-R@E)xAA!=>$Lkcg`XDH~Ps1X;o&)Kh8t~)QLF-r2E@L&nd-%rXwl4ioN#QK~{hO243)%ou zZhW)3ltBS0?|eTkq=X>e9#{SbKDVbuxP$rsLzEt`gquHB!W22N=a0ra>4k0KWL|Ff P00000NkvXXu0mjf1VQ;O literal 332 zcmV-S0ki&zP)b>!3;?-l@<0^vmPcgqKQbsnhYUqwauT2nl97i5MSkTD(Z;`&WC9o+ zLK{3vCy_S5+X$A*#%G~X7l0*ggj!xVV$pXaT+>V3QvEbBr+RYnQ=n+SaF6kBg1C|2 z)Eu;EbBrfeQca|+wyN5$9d^eL7mZbfBTfv>gdmCu?zyQz8M*YV8~D3N6}_DwoFVLS z7xO0}O~f(d#Az>2O1691T5aNZ0eTtE_tPnf{XPcsQt(ADKZN0B zdq-V{yN7VSDYkuVF{O8i`nVEo?YPS#3d42yI!b%kVp8$IS_U0nhv6nZWOfe&$6ZUo ztLD+^Ff3RZyUfg5kj+RR-#yUPYB|jlGsBo2q~2k-H?tI^&#q-Ax6SMpd^4VouM7R` zSq6O8e8{Y3nEJvk9;G;c`TgIFF(3P)%jfp zm5;F}l* z{+r2@PZPZDVVYHfer

b6q1y_7^OQBI#+Hc;qlNT@isEDa&gPRMMw}= z3qnq%;!&_NRLMpkdW5=|W8Az=xLl!RO)76Sg37SYRy9&9ISMMnRIZUU6_Q^7j#GI- zwS;v=QhBQq@#CEA;R6lQAoYDv4C9hrddB|=S_Xm#*0}NjKe5wW7-=nX0r<= zfm^aoYr}D2zf=xgW0na4$?I3%`(`GjKM+C`=B**^Rour8vfO$s@X+TKr}c8VJF#}d zO*2bJM~1|xHspV}u6XVX+xh8*EzE>9EZ{|s3GT8?aAk>|h1a6<{9##fACIWwd$$RW zueQqqc4D|O8d(}X+YV1Rk1&D8tm^2zjUQaTy9CIE^UG*t`NHYPv#0APXrMC`+s{R+ zaXmP6d4CBrnKCdMSw@cDY(Kr_*n!3a__|sF7;Vgt&Zb4+#fedK;v~wbQulbh=E|UH zd;%Ao2WkSB^Y{h_k#Yy3D88;M=4O#bfS<`^wE8eohMP;CD3e;=Z*)@!Cgp#MVTW?Z zcS&@D7ALMj%x`E&{uVW~0B>KCC09EzUOv($+y76$0q9E&ieR%?P)oUCGEb2;WxDgV8c|BGtoQYn-m5D*X$>-yGm0007V zNkl{+R6bEoE8M454;JADcpKvzPfp=*aSbVsdvb0vb#8YcLg{8Gw+OL+& znM=J0hS1;+R;6Gp34@cnPQCNnem?YnPk;qN$2!)r-ddC%_CM!iOb_`D2?r-+9>xyq zHbQ2uuW$PBgeDe&IPWq-S>bDWO*71kb=t%)m3J9!FwWGxreB-T0FejxT^0=;Wj{^7 zI^jtw=)ddo6VFQnnb$Njn-lF#>|H!L-CpvmU4GN!)40{>WI4dN@5%`qHXtY`S_91{ z?hoJs?oY?_xXpY)Kg2j3tabrSLomB3v<9jl?CTH$$QLsbw^;=K?%CIB1KlWHf4yPK zi>Ld+3PZPm^_0x>HuJ#Ck!1}(|BCAdm!V~a(kOji%qG6vLFHY8-q`>ds(#EF(M6s+M=!O1y zeV)*SgoGqAud+N24J;azA*tUQS2U1j;8~UftUepe%Cxre91#*tWP^rzgWx;`Hl5UV z#mtJq>)HBIpc!Rl6y5Ef>Aukt82Cw)?96Y1>Vh9Wp#G7BmD6fN8B;$&R9HQbjTD01 zTuW2_gJP2}|8ggVB_59sXsveJpPidxovr1@u!uEbZS|CGvrG5mPAH0wp_wmp){&(e59uk_~Y3VbN5wqi%nUS&ci) zvl;{R$NL$HM&yezD{cn!X? zJGbuaD%p_dARA6DBQBb`XtcdgUy5>Lhi<6Dh;bkp&TbZrIR=i7HpJT-CL=jcALqM$ zoJz(i?^g-KX}9^B9fR}a(a^L5!k)sQvf$s`>da~c{Rrava*cpy5%ho{?T6-idc5E+A#p|if2 zq$U-u%*XrHo!>y!7`yd0sS*u&5NsESP zJxpS6ilKqJ>-91z-3}bLwNCuB*66bEn(S=2>e;ntQwzrqd9bjuCx*5Rf?NT6Ru6wV+b@D078=7tU> zV4k7SA>fN3U&WZagHVI-NhFr6TFD(*O38owMbUfmlTFAm#~kyHBKU3}n)n0V=|e-8 zgzxg<4Ita;gA;oNJqs!XT{$NX3-9-;HmQzze|36Azix3i3{aj_D*HU&EY} z&At291$Ep8U6UA3ys&en#_h7idCqWVgwkFUa$D<}+mTS?s;z)`lFjnx*0;vnJ35)* zzp*0-PW!A2Xo7Reo+|~MIy0$_pEv&g32W&Mvxn0@W7y*W9tX~A=sB4#Ga|?K0LC|) zC%PL!t}hKw&HJniK9rZAOQ(V7TB!o$%B~x4pXm2!FrS!$S+6nj+aQX_y*;7vk9OwR zK&sjuk?UU{OGwOz!+Whae2t=LB+HQ5P^fML?epzwL|~3nQD0my!TH$gv%8Cn)G6>& zduU($CQ&PS-jWT`NxPgzS5ufuRagtPkWK@(K1ow*3)ZLF4RO+x%=yq7w6mDrSBrRD v71pFGEbXqgVd<~!3tM};So!}&-e~>;J7%2M(21?`00000NkvXXu0mjfT%s;w literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/slugma.png b/graphics/object_events/pics/pokemon/slugma.png new file mode 100644 index 0000000000000000000000000000000000000000..0f54cf238c9d577cd76dd8b154577eb0d98769dc GIT binary patch literal 568 zcmV-80>}M{P)bN}v~|J8H$qyYZ_|Nj90{{a900RL)gY7h_*luZZh0005Q zNkl0_B2*I0=_*)V17F6M|z)*c*!Wb3BMQZ zfTeajAN4*R_P`7%jN6(BObjAmOBD1oB;#-g0A{lx0y9-zLH$T8u{w_#e2vt({=w!T z0to?%1$dpLxD+xsp8{X*P?rr5fk{Bk1QoOf>kOeMx;~)T28bmD}=?v$^X25WJgbZfNuImC& zkCj|eg~%SkeW}9$&g(;5Jn6&$;|HL3sPm1;hWznh<1k;ATKq*29Nf&%m_S=|BC;2k zRofbIq2Zd0TC@IggTd8oXcK5+3J#MxB(yO%8n%tcXoTkOWfE$`0z7cvEyV{u&) zw02SRci(G002e^U8lOM$&tKF@;uj@s51$z6zxks6ZTkdx|388H%O;5c0000}wj3>&Ie9oZPfv&+<$gMM{{o z)fJ literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/smoochum.png b/graphics/object_events/pics/pokemon/smoochum.png new file mode 100644 index 0000000000000000000000000000000000000000..62c6c418586ce48008f919c9d40962fa550e3328 GIT binary patch literal 480 zcmV<60U!Q}P)8A(6Ns_oa7Mv`ut!U*E1Y`cko8=MJ#V21 z?bPwcNh@brhd88>wNQv?I^Jl*!8%;9BQ^3SUucUqMFXl%#f6!LMy0XiZIq8?4OKAl zcFJh~8F`2B_7@z|vvyj&866emUK%hd;}6YQAcn%rUAy*gA!lExvjI9EfR9fY56HYU zK%mk7iu%OrVll|~+q->jIpcg&k+Wa9r|`!c8H-_a_&A=T0huv0CciK-KzlsPctCqR zC3epwoAZu0&S4Gh;Urx=AagY|byG*rn#^KuB-U`V+1D;w@NQi4g;)9l{ literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/sneasel.png b/graphics/object_events/pics/pokemon/sneasel.png new file mode 100644 index 0000000000000000000000000000000000000000..37085eaff81baee1099b9ab715243b66d2a09f1c GIT binary patch literal 538 zcmV+#0_FXQP)Ck`Z6wZbYAqhAhI@#c8C=~K79SX@7C>?IfKXmSv zcIuFi$PXB7LjnO+4g~AeoU?T(xxw&sMt7EkEW{-)afwU(U3h7`>%c|3TO$kGJQ|o)g~Z3KaL(5rn*jTz7l>ocCc*(iX2jBYRI=3sC_~ zedO$GW!z+43t_DN1#b_gRrqKfvy9lsLMdoA&9w=wQ*yI7-iLz?tQW+YWyA>Le#%;S ztHA2-x7F8R^Q4fokNOqHI^}F8+{a_PW7o3E!fD c|EvERKa}k3zuPw|g#Z8m07*qoM6N<$f*Zs8L;wH) literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/snorlax.png b/graphics/object_events/pics/pokemon/snorlax.png new file mode 100644 index 0000000000000000000000000000000000000000..9a0a6f2e7d34cbb0a39b7714389b0c8dccc992f2 GIT binary patch literal 820 zcmV-41Izr0P)QZe{h!kJQM zVeDrk=w*@ViNS<}NM9*^m3SE<5(Gcrksv_qV-dX9`b_J@%Rq_%e%5*!zQCd&L5c+1 zqR_Fcu>cc^eR!l}mk&PcB@7KFjPX z6P6)d+|h#Xb5N(;Vm+VQd}0<1p!k-o=hIeU@ldj0?hGcJ(RN<1%GDRzSV?*(15Rze zp{R)I++;LhBO&kBCF#ZPR3|L?z&~s@TN-)CH>6?QG6`@+QP^%d<+(E@UF`rUBO$f6 z6Rg3QgOf0UQtQ+u>AakK63RuJ(xcPl>1VnK6nu{SWB4Gk8p;K~V3xjTcSEEd$%pHR^&JneXy zsl*uw&#D9e&7ILs?MpZVr6ue&D=7bPo}y}_7kMCASG4aO|Xvb@Ej zLH8FDv2!s0000&)r)(3Qc6lWF)=A1ApigWr_&VA0003N zNklNG3yk9R5YI4~GKNZDMQ9oOhMb#*4~(ITcJHxethGkQ;yb34Gu?dcuJf=T zXK^$S8;<)05o3`q&6~`_COMaju;EyC9_YAEKVM!y$OcWRUtxpWNa9@IE-x;nvOz0< zoWd5yNzNeDVQcCYgK>b>*o`>s+huI(65o!(n?m p&+mjSH+R|xpc}p}dN=-WegI}x`MsqLiDLi&002ovPDHLkV1lBEuy6nX literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/snubbull.png b/graphics/object_events/pics/pokemon/snubbull.png new file mode 100644 index 0000000000000000000000000000000000000000..96459a33351ace92774e688d3bcf06fc86deae37 GIT binary patch literal 618 zcmV-w0+s!VP)(JeR^8kXx zg=q|M@QDrA=1K5{Lpg*N-c;qOM4KQR<3!rPNISEEY!upJ^jnU#(E#njU6OpR^n&~- z=k;I=a{?Q3?W&s>uok8&+yJWEi3}Y-4R%8?mkC^&uxG>L9MIYRfCB-ZR;&Vr+Hx*z zpv;Xc=>pXyR4%alY3u`IP=}T;EZh}J5kp?7yJ7=-HmMD;wr4)J(}vsvX>6YXLL%6!9r=NiOJ@~W127jzsIhx4rI^YEQe*$z#-G#z zA835^8(^?0`#scaCXvp|$g1g|O%OQw;QOSlHv7C-Hw`!Z$|O>^AbrDJ9fFM93Yux7 zpECW$`A2*O+GxPTwH5sLx@mU1e!HFhfK=NLB+*S38pyTLz=xNseCfBVrfGRjdwc}i zejwpxUxs~U{IW{VaKmSo#$N-|=<=A=-b@=G!J`lt+}Hk&2DFz*6xf*vOp@lq7wjLO zlLmVnPGNu7jo9?G3*OeOIqk5?^6!Byy6^Vi|KOjkzm78v(xNc2>;M1&07*qoM6N<$ Eg1Le&$N&HU literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/solrock.png b/graphics/object_events/pics/pokemon/solrock.png new file mode 100644 index 0000000000000000000000000000000000000000..894526490c3b25790147343a375eba34a999ca9b GIT binary patch literal 463 zcmV;=0WkiFP)PHUxxRRKoWpDb?VgleP$J{57;}a=m3<U&ZT?iMv54%Ns^r$@>nI z72AZWyy3FPxzVUe#@L2+Oj$#t!@{kvF_Yw_#~ABBDb#c81!i0Dh=px=4T#@cav;QD zIQ{PV(=lc9kYct4FW6jVJ3A+{NtQZ&=q~+4W0003+ zNkl|(z- zf#|EvieoJsaJ4$d32u0M|E$ikwY^jpWCPG+K~vU5T|BT0zsaC~SiaQ<293q?Bsa#gyjNtoG);-roNJ0000000000FB>B70004x zNklReqMgcxARZC_&l=Qwc~8*8kw#v1GY6i>e~z^}|88#I?%!!OK0YdhqF#;W7S z@w!Ok=IF8>uylbCb)xZtTtv;JE~K6hxNs}dY0SygHS8yZ#z35s54f8!O=E65t2$=f zk+M*6cUwv~HFW#o_LMXT>;i>~n~5&4Orw5uTt+SBzEn!3He%M^;b*faD-0~uJMM@& z2lCgGxBY@F=BeyFBQ$H~2Ptjt0|WE7r5pcn4&*N7CO{3C;y z7Fv1pO&56Y1L0&pp5Fon=5StdXqLck0=xcjhtAqkh|;G0eaz3v&){fQYL*Khcr<23 z%_jz{@#A^5Hs)#D2OJ7~L~=5_hQ!IrG$53JsmXd{8e(2yhZ_=T(HRY}dO`m!vY_YC zO{f~MWQ2XLnhOH}4ZQwaT6*`YA>;OPID_!QPwTSbU)CqW-N1mNiQJq30000c#16b4{UngZ|yImJ^vDuV(|f!jj%92S-zz=@}cflj$fr!EQ5L%8s$ zQn2v=O)M#i6yw118Wei)^7%J@lQd<<=9y=ndFJ_#Cb{CPgJRl^p7z!L`XHvfP46as zZIV5}Vafoon6R7m*{0ul1@%7tI^}gaWqYElG%LgfC$zCEg6Io7BZa(L!`&*%JBOSl zTUg{7WO%_6E4QM!u(K3CN4uj%l=t>IgA zC12Kc{$=NLZ~rX3<+c!@@P%jQiCxmS@(GpcZLl}_LR!|4)y0_i9&*NRiZWG|30v-s zI9yb2WV1=(JB5dnI=7)vl6x+qytB{kku;|Vi7%2y7eCCd_10)kkeXHv=CU&h9dcXv zH_n|y&Wt)0NJMHhqEZ-g&EFm#f8$uFobCHQXZBW!C>PElch^K{O^T1!n)5)nsb8-@ zi_@% literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/spinda.png b/graphics/object_events/pics/pokemon/spinda.png new file mode 100644 index 0000000000000000000000000000000000000000..ab92fefa3a83a11846ae1866dfb96d154f637c3b GIT binary patch literal 589 zcmV-T0jkd6bJA(h9TUCd67Mt8;Y_Se+WmUUBbX{$xzWDN=Gt8b*JVlMT(_v zEfQ8c1(2|?Gla`s2Drm|9x_y_yb7ERNh~_9j`q*DBwyZ>(1IUq6R=I0Z0MeW0z9^ofgmR6%C~C8T zZMB^;i~vZlH?t2X>tse6wUIQqIp1EG^#^8whnTM_(td!r@=2@X@_1kz`p|5ND%0xS zM)bVk0Vso8hw1~K(Z;<#Mm+Iz4=95>3gI*WVZC=QCi%Vl@b}gTTI5UsnRES?@fzx{sz67RMzh!1Q_pIxf<(~EaOVC=+oi?znKdERbm&1j2@B6z8 b|8HIahq_7QrZgDG00000NkvXXu0mjfV}2Pp literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/spoink.png b/graphics/object_events/pics/pokemon/spoink.png new file mode 100644 index 0000000000000000000000000000000000000000..249879e3f1c6e2f2ed516e5f2a04f0e6c8517fc8 GIT binary patch literal 442 zcmV;r0Y(0aP)ZgluAm)i&_{M7ytkON=i!q|NmlAQUCw|;zd`70003+ zNklP2THD=v3g<#)AIODxK`l)gPv8S#X&ku#FG!sv(FD$g64IC~ z;DuWIsU~nH%=K#oRiH4I8y^=abK$LCKyX2`(km?BLY|pW)*8qH*$drgRyR9S*ckDP z@Qcf1qBWep6{_fsE*J_^9YH|Y_&(xXsFsJjJQZkqA$}6H4L;Bd2?s#j3-56jbzU4h zynqXZgR~-?2rsnJbU7t$XHC2TUvH$l#Y<@qG& k7;{yYBiTRlkMlpC4`N8B7T`M+e*gdg07*qoM6N<$g1MByfB*mh literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/squirtle.png b/graphics/object_events/pics/pokemon/squirtle.png new file mode 100644 index 0000000000000000000000000000000000000000..aaa099cce996938f4b4caef81709e0905f9baae8 GIT binary patch literal 361 zcmV-v0ha!WP)vy@dzEf<~Ua~c&6oX?OFfH#~x(?Up7xPfIo)Us%y>)u4sdPPKIh%rNd*%?+uQqqE z?itx}%heP_%YXl}-F{tCX~j4<`^9Vv(l$H&^R{JE{*H44LW)_ajcXpb00000NkvXX Hu0mjf-Y}?o literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/stantler.png b/graphics/object_events/pics/pokemon/stantler.png new file mode 100644 index 0000000000000000000000000000000000000000..9e286923f3ba89a506e2f060d803f909ac27e8da GIT binary patch literal 673 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 YH$*!|cI0M|0{{R307*qoM6N<$f~}yyB>(^b literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/sunflora.png b/graphics/object_events/pics/pokemon/sunflora.png new file mode 100644 index 0000000000000000000000000000000000000000..2218003c7f0510029d460cb15ae55e76c3c1350c GIT binary patch literal 563 zcmV-30?hr1P)ruu&LJ=Hk${TdS?d=U48BVQ(BH>-U!`OK?L1RKThp_Fyvl@J$U)c!0mw9JCo-9U2H3Wo zp@5kgkPHJj17!V&dpU_=1MH{Ovf8>~Z)h6<$lMO&@f}!mZ2nk$K2%$;`Hg*LJOk5S zFz~y5@Rsa*^;TozO~+n;*Kg1Iy^crbdyc(IYfMDDJ2v(Kvfi1jW$sk$aJ2PwVkxPb`CnwOhM{P zau|5|;WC%)GOe_9(FAp+%(`{~RykE}VJv!)!2sG^C?k=SW(U`Gq>~w+Aj+K7n32Vt z4Ayhz{HpHesc{2Vs?2~gvkHgQDgK07_=mqcz5tx)*keyE`EvjO002ovPDHLkV1jcX B3Wfjx literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/sunkern.png b/graphics/object_events/pics/pokemon/sunkern.png new file mode 100644 index 0000000000000000000000000000000000000000..ae9f2169eef5886c92678d399aa6897531d8d8e2 GIT binary patch literal 353 zcmV-n0iOPeP)Eb~kxb+MVV=mB1V&d(*i(3N^5a9(9?=UN&=J|ZzFV&{6)1KcST`^OwxKI29GEIS>KAiq&bU0GhW+@e{vVvzb=}p z8b@BwVB8#D&j7h|`!#J4iCD2Cbea*JW-t~hW5q;>nk_obV2XTyXT>F9skz9V=6TU( z@*f1w2(4zjJ!qak93-!Lx7A&is^?!;_8;c~LV?1RtyaM+00000NkvXXu0mjf|4*2g literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/surskit.png b/graphics/object_events/pics/pokemon/surskit.png new file mode 100644 index 0000000000000000000000000000000000000000..75cbeae75e56818cadc27b220ca6adfe1d1ed2cf GIT binary patch literal 355 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 literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/taillow.png b/graphics/object_events/pics/pokemon/taillow.png new file mode 100644 index 0000000000000000000000000000000000000000..68180045954a2019ec1cff69fe368520aed9ae36 GIT binary patch literal 419 zcmV;U0bKrxP)S74pmUNw{xF0EP`4Hf-1tEtdWKXWwM9m&0D*=+c<9hhx(% zhK3U}HCL<+=g64c|DezSyJ=PBmN5nyFWmlRiR=zqKs=U79Z!9cH)%Y zNz!dur1f}gDdQ(koIB&(;6+>f%$t0hSjqsScK*DTwCgy_VoO`B8>3U&Ad-jTl=B3~ z80s|9k}-(-#`(y}5wclz0h zzZ;^v+~qEJ`Lp1J&kr06$73cc`IyfFD3A{rkd4C~GdLfy#uB8dw#*rGEK-}|*)%hP z<^xVB5v5k`n4X0SOXE%vwaE#moa12}L!^ zfQctana~`14x*Sb%YaE$1fn4in4#vc?UiRj#DrO^#poJloP(!$ew39kW=vuqy+mZ-1$^&@o%OC~Ylw z{Deo*huhEI?N}^gl2(ypqHIHnS~K=+4w-YtOCGS;`K4z1oo#DAOx6ABj!EC1pI+Wu z#2u?7^O#4>&q;B>meLKlwTd~t+6=l2vQDjI`%nAV(A=f2Lwo+bsP(jEXcLypwK-Vq z=x%)5JGO!J&+9Uw4a1(-%eC?61-XB&d9}Bmu6A_K>7t-c%)^FP-NvD}p4iV7|5v^M XKk2}pzHK!#00000NkvXXu0mjfbOrwf literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/tauros.png b/graphics/object_events/pics/pokemon/tauros.png new file mode 100644 index 0000000000000000000000000000000000000000..7e9ac057bf99f813a860ea11dbcf99218e9023c6 GIT binary patch literal 761 zcmVYe3F}*waCzPJh(vW*-zC$L%?@xvUni)3Ic2o8VDZcvusHh z_YaVzK$Yny>poJSNa+rT|Kkq__>$FrPaVQV2q0~qst+t<9zgW|)BvCi=OTdDr&=V8 zrRR!3esA^P4>Kqz`Slb$P!Q$k>5m@zpqx$t8qr>Sb|^7)zQdY-7r^W{%O#xxoH_Ei z9rN%_{Ux)k=6UG;gcUup2i?Au3`cc1o(_BbKBjJe!pdH9%PWS)X}~7qfQoe;Ls!`b zTYz90g=~j4k4l<5ppEbcN340;Vh&RCDqzeIQx(;0Rq(3pw)6ncvFdV*K=7?lfN302PB17Hd3Q9g0XHv3}+j$r4yLure$Y@Z};z!zGnP&7+#2$e2ur zG2+^oa5FIz?3aieUsEMc4c&;pu3N5nd=+MNI4P*mohWO( zlEK;z(GKM?Pqs7)lGSo7qmBD?y#;w8ddUy5;%grQxyKAv564-Mm8=mm7GCN$;EDK@ z3DoSa_S@k=KgTxU)db@WmNUrGd5Sl>F>V%B9Nat}bGQxDv5kWGfzx#cKWsx&s=5b^ zCWku=LO3*?O95)0=cdkKtNZNY-Gn;~s-2zcD!6j?o|xLy;V#F!!X&c*k=MV6wzY(= zJyu-Yo^6-kgj3gcpCQv?^+WF#rQM?zf;H@PS5I%pMnT-<0rkZN1ss2xybj+gvdAZMwafnHO$1QZmoQvbV zwhi-&4j>i)mA#<4)0c)Sr30`B6qr8yLVpt7{JRuCB`w59PPr zSQWUTYZ0CvgLCBd%>k!v5#tlNW^E7z562M?_k6_sc@8jQwmAhs-&{}73{Fv=0IYC6 z80GAB4y!ozTI{7>N^$jUaD#J`(cJo)+m$txdFi#7Wm3lINZnG(3^z2O6wVbWl-q_1 zk^~RP-vPVRa-q=)*VeJqP@+6jbRgp|kZ0(R&p*o$TO72;k3X)p#&BZid&6Pc{Ylv>fQjTJuRpxPNHltVpAng?fn7tsCP|bpU0&A;QP)nd6ro-m2X-COzTw?%jpTN-5Vg(@ z`%WCu$1BpamM){zO#`|NVfA8t&#A%a%2c%~oJQ7}L8n8inAKt5i6LUllw_aT_`KCx z$-?O-jQzawI}kJeoC)j2&i|;&TH z@!haH9#{katWR14#l+tCOM-NN(evw_v!Z>0A>Moe`!>0VD|v2^00000NkvXXu0mjf DIvBjCxnOfx*^SeL%Ib%*H*O`Y5O!zngCFqAO?3cx z?&}lJEATV@Vv~*RgSFb?yAHwp2fx%b1;nr~JT(zF@`BldU+RaC!F*nYiOM9Ke1Kpw zHX{K_ET?~P3jd*QEmCmAJj(3-rwj^tT5T^^y;UN`X*620zX!|N+Fv} z^eE!Peh2IA{p|XF+y3rD4gr*=unzZy5DZ#QKon(F6dq0(F!<-}$Fu2E2=SohwvkuF z_4!=wXvBycrR5C58Uj?itT&F*8m5x|&Qn-^sjuh-D*JM~3IdhIjPnDxaAW5-&#-3@bT))mU!sdKN- zS)H>sFKwb(^6ZuUtuv8JGMU*}?rdR@G@%Q`!wq?wi0+0%xt%751>M^PY`i5(G+y!r0^v7y$qO&HwhS-oV#Q%_us0004I zNklDKzP1yam%bRN4$W^kLczk&a2hn5`;QI|Us~ zvpHwTGxPx@58)`qX3V|z+-`+J{_XqkITsEh#lAMgt*r(rS7x9^^qThxWO9LABR3}>JCRkiaYM> zLHR@8HRYoJ@?^G9zgoWKtGHE^4zs?u`H{bo-#z)73 R5=H<3002ovPDHLkV1gLB+9Ln} literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/torchic.png b/graphics/object_events/pics/pokemon/torchic.png new file mode 100644 index 0000000000000000000000000000000000000000..30ef0b732e573e4928b14cd00e0b505a98da2dd6 GIT binary patch literal 428 zcmV;d0aN~oP)p|7tnaS~*%dF%S?C*O{oY0003u zNkl{LlcB5IOx>`8WHFT*q>3%nh0SN= zqfwVs;QJlX@Cg&!eDNx zGkZfH!~u7Hf(ZH&F)Ms$h{U+bIFAdF9N`1$5#(WmC(gJ{3&vnlJW@aTc_8a;+A?m8 zdTFY-Me|5*(PV!=G;hHIYN@6=M-7d#$`1&=wBT3v@BgA= literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/torkoal.png b/graphics/object_events/pics/pokemon/torkoal.png new file mode 100644 index 0000000000000000000000000000000000000000..b7fcde50413c0fff17eba7eab686f0d3bba5f0f3 GIT binary patch literal 686 zcmV;f0#W^mP)En+AETF0U!kY% zbP(%l+KQO{l%}1A=p5#<3;hb>PwGFPQ4)mib+3E%orD(o}C~nAL$kYjgJ$T0_o9mWwfFxz2T9MzJ@J-cgIYr_fq)ZdaJWFV`8W z>bsP%Nx#h~3*m{P4br;gqpkh%hAEyDIzvCRC!A$(a-^gw8o%lgQN@{dmGI!{Z*(x-3(XeC)`M%ytWnA#m)&i{}NA11Lrn#q&PAlw50T zyXQ_oqduL-^|Yymz+*6ijvY@|J3V-Pjwasbmg1r8CH9Y8f)DdQ6f4t9R) z^8*(XH3okqJAt2CKnr#*IVEv5C&|v zL?QbL?cA);;rF7&aLZ%8wmx4sq33!*eRR-GT>^!&Sy|$G)LGv0=}L2|=KP=a7etp! UMChbKVgLXD07*qoM6N<$f&gkt4*&oF literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/totodile.png b/graphics/object_events/pics/pokemon/totodile.png new file mode 100644 index 0000000000000000000000000000000000000000..502fe36ef0d41d836e4d6d9cf53daa509a1a7f5f GIT binary patch literal 500 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 literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/ursaring.png b/graphics/object_events/pics/pokemon/ursaring.png new file mode 100644 index 0000000000000000000000000000000000000000..d9ede16af9448a3c37a9fb34b6c50128e7bc1d27 GIT binary patch literal 730 zcmV<00ww*4P)0RQ%+|J8fdtWvatDeh8g-rnA{w7q+Kix3bHmUkji0007I zNkl<{@|=J|GkF5g+ldQ7rr2aG`e4d2lixTZ|C#3A`0_5v z73Y^C5XMXzGhj$_ZFnn_jKWP8^pBZbPMjZ#H20<^(509GV(W!56I%T`9p3$n?iirt z03yXhh6OuLc+aZLpPtHGG>@4muptvXe8m;P)(a!P2-tl7z6Mo1W|muHiph^J?`ZTh zj#;aGw{Npjj74RR^~ghMj8%%s>f0x*iQki$*{wf_eB74C@z`V4Z)fkR;N)QcGoC4b_u~nH;#58Ck37>N^f*d=sXa&`i8xgHMpXapen@SH#q;u1{w_UTZVSFo7gY2N#PC z!SEZa=|f@#l7_(^b M07*qoM6N<$f_JG{GXMYp literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/vaporeon.png b/graphics/object_events/pics/pokemon/vaporeon.png new file mode 100644 index 0000000000000000000000000000000000000000..f81b919af12a980a469cd7e4a5f0edf54764695e GIT binary patch literal 816 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 literal 980 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 L>gTe~DWM4fMrMIb literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/vulpix.png b/graphics/object_events/pics/pokemon/vulpix.png new file mode 100644 index 0000000000000000000000000000000000000000..238736417217a85b31c69f549c85451a78390425 GIT binary patch literal 591 zcmV-V0#Wml{0005n zNklAcXUR!&30W^G_1W5PM99kw7Be? zld*i*TNV7L=-As+nbmQO8 zpUiQJR)&C%R?V1?!$gC>Z))w`aXD2^Hq0s7L1Qpqm!o!yw%6m3t#N67y&c=mH$3kT z)(b-A%&Jp9<~Yw;gVOwnph3~NZaxqDAr&P2v*@*N1%KKfMT5cuArN{+>*n^`Y^7M1 zU=61;Q0iZ zMS5R0IG^(WvtNff93;O_YH`naHc1XzW6uSd0_wm002ovPDHLkV1m%u89x93 literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/wailmer.png b/graphics/object_events/pics/pokemon/wailmer.png new file mode 100644 index 0000000000000000000000000000000000000000..714060b0fde178e9756c86a25996efd64378aa60 GIT binary patch literal 670 zcmV;P0%84$P)YGO)*i=4E*#sB~R-et4j0006h zNkl#SxkLVl-o5+bvm-&1Y{k!m`AB!)_jJfc=vc=(*8fu&kDg@@?_W7IW^DEx zdt=7vG#|8BzqjMDMk0@;G#av($PJ7<)yMtudIK5oMEgy@ zk*`e6nH(D1Kp3gm8Ovw%9QUn9=mnd@nbR=ub3tjMI}&lhr#sWBa1a~E^rg(-S$8PS za@}CxG7v^eRp8ilGD4+mnu`N;tPXLKD8^ybV+f@4IqVmK#5K7iol7MX<&Q`7J-Dyb0`S}R#j@vD$&51fKYv8w&2jO zA~#T3jzLs|Dt-M8c7G3KpjXX|F)PGNRMM&1FTR9DUu&Wo_+jV-f=LA(rA6TN9Ts=b ze-$zi`PZFx$6=oM!)FLwUCE!OA5h~G-YSG@9)|M4$Z2jIu^^?Tvd5dRcNm}lUM&l_ ze`4IJd3bXv=R3=ms^QdH{}8nu6h<`*<>1AAJ}Utzfb$HV>Oer=p;Nk~MY>pqQF>IC zn$J-FD3L0XmysQ`3qL?vj!Yd=m!za5NlZ*kOiWBnOiWBnOiWBnOiWD7{|6}ym1!5TDXD0>DVSO?u)q>Kg-!R0_54izYVk3xi<);i!VzV{r8XY;|!G|Nk8z z43r@FY9zp=;6l~-)ZYP=pC1BEyvrcUr68!C7CeIcmOr?DUY5?Ey_YwFYJ{;4AY2I= z?i3_>%Qtol=@&|8?Gl~#WkXy=K50Q#%RkOlqU>_VW?%$0cL^q>YhZk-g4(_6*j^u*d5x+XFRh&K{j2~D|qI72yX@TR__)hEq5+MRa@h(8)Oz? z!>tA?`s$}LW&LN~5Z6h88bRtB!F1i_j#VtQ3RT@n-s_@xowA@~NQ-YU|mY_+?t&7XTs=9*WIEd@$eXLpM3&&em+U0AP;HSfd`fBlb{Oa^a zI2ld5Bh0K01h|RnqVaP-425_?#P4gyWY2z1ec2^&V@kX#wEPNfnxy%!-3hH?wMLDTQlh07(lIQdw zME@=|9KOueVRLg*JHpN(3~_B(6^K8=4_Q4KjjD%CR1ZRkV}BAF&hvv%ht0L1EU?LB zJobG(3~?0>fPdNZak3S1hna6Pag=`c_!>@mCIokJogI}oYCOuQ=j&UD%gd-&M(o?F zpG!lTTIe`B8RF)gdOR9Uvbk>(2Dp0a<(#hl9l*Gn;xrSk`gs@E=lqgA%)a|SYz26- zl}&SNn|d!N+{D*@h^r`$;1ECiKRhup|2%&Hz*1B*=(`>x00000NkvXXu0mjfeb^&4 literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/walrein.png b/graphics/object_events/pics/pokemon/walrein.png new file mode 100644 index 0000000000000000000000000000000000000000..0c727a970ab89df434a2e0b3c4ff9c2f1698f04d GIT binary patch literal 908 zcmV;719SX|P)0009Q zNkll5#oRRD*^Cp{$s!Q@IE(1wvtoC_zMO(dOywZ4maBg06;^vv@WS&ocM}PY~s|A1m>YyiI1W{$NV2Ga)KSYadjb(d=5nzJ- z!Zpd28GnT6T(2$S6Z2b78v8K`zXUbc7>w$`IT(!M=V4`-S%_z?d)htrBD`b8Cnts% zjo2S-euF-;L=0WpmP4))Zp;a#-xGe~P0<>#ki-}$1&wuPAsN%CSSZ!X zX3j#>b;F>tuu+B+D3cSkmjnS#7Ao37fm&J-XBP4RvoPqMS@R+^bOG&jf1(SBg>iwD z5Zd+LmT5<#HD->yOq765lbY8x?Uy8Mvv6^dIXb?VW5nJ$jkg~HAtkgcT}oV_Ro82L zL1SStIROdDLA|q3M#0PjytL3P#+6dVmxQ-#JsP^><=q28#oG@Pc`fYrL>V&Pe^(}a i?s;?mW;`bRtML=b5K?sPSH_tD0000JBWnSSZ?yIJjRVz^ zxbzP^L&b861r`Y42R9#we2*N`65^(tZo28eNw(MdpXG{cjI+==e=V7tD=ak%Y^5^` z9O3j^;5ZVMY&l^GIfC)$&`+#PWYon1?^hU=w_=gKwg4Mw7g*}t19)W?I4%GOwEO~V z0MI;O#t;MTG9L_i(~nG-D642#nPSGQUL$PDL00Hfh6<1jPux=v{eHx$HepY7bgJ93 zBcm!R#u9o!LxxArG#R=9p!Ygu7AUnUcz{SLolf2LiC%>81(dd?HWu|^Dxvk8$KWK+O&10k6o vXLL=%T{E@3oTMKWuJDEVv!P3l-&B7AV@|`|S5h7>00000NkvXXu0mjf6FwSt literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/weedle.png b/graphics/object_events/pics/pokemon/weedle.png new file mode 100644 index 0000000000000000000000000000000000000000..21f6bf13d58563237612f25379b67057ccc97cc9 GIT binary patch literal 534 zcmV+x0_pvUP)n;5f`e40004@ zNkl3#X$0W1-pb8$zgp zD@t;6jb8|r-PmT~UO}a5W7zJgIf;O0V}b(MyNx?Fl-Je{E@ls zftEAhtpa+f4|F0x2z7S5!p|n5XXmR5NEctu9!I5@&cdM&pra#&P%P7RqtLJSSS{D- z+Iit|RCY7x^Z4ipAv`YA7t-fK|ITt}^9oDfwGbaRX#YG#Tyc#Ml8+TVMV-Idk_L?K zMiJq%EJy(8vUDOq2w~#fI}I2Gmk*?^?}I*N*tx{ek7RDGVWTiXykVotzk4Wx{p0005} zNkl{rAAu3b2@O1}w z2YH2{#+@aCguwyN%{rELc5TZ=NE1AT%%|1PH~(5lh(jIfP~WHI>lX_$(=MFt?a)4= z>J_a*rCYae*%1iU%ol73m%;XpM0-Y**z+F`gmRht>l=yojF@-tyd9x1H%q@`n22@+ zhw2Gs7w2BbKqw6uZ#_&z4ZC+cg;-=Tg7_7Snm>ft%pd{hx2=gphD(pp3DtO#0gU2& zJaJ6InpXn=8(>Q!kv+%!hRk9oJo=N&N7P}F{HyuR3TswLI;CaEle8AjY$7J4hyd(= zms1+h2^UGx0kA(cuZ2Z30I&f_xJuLrsiqX!3Dh-sLiL#bg5k?!+VHUzp4I%m7CdYh zQdRH_u?tjQkLUzgKuil5(#5eAHmt_KZNtBl?LvBB00N8)go9y+vyi7hqbPA_CRf5I zH$c}mG`oaCm6tCa76=DN1rJCsMZe#_V1iJn?U_3cge3TZ_b!mYGF@oKbZ8fdefCbA zkZ|A{Dy<>bhOreg#`8qGK%y#7?>UnI5zE~|@usOfCZS_>bFOvHxY8bz@&++tH!2cV ztpcC%N*jhM(mfQsR24Ciri6>|$Po^^g00000 LNkvXXu0mjf?->-b literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/weezing.png b/graphics/object_events/pics/pokemon/weezing.png new file mode 100644 index 0000000000000000000000000000000000000000..e40fe692eed48c4383a1d62c453ceab58a9f74ea GIT binary patch literal 840 zcmV-O1GoH%P)sCoE+OWvwRI-`wxz9L8_ykH{mwbS#ty1-FHLtQ=F3E}u+Ia)% zudZ6!9Ha6fH3&>&=u(5g!2rr~QPpBV8kJwo;P+Jtlb$_`;xS<#8Z(ks=$3@@aW@va z#d_o%jJC-UC48kfZ8k}tR_scCpJGFu!Gc{k00s*dE?ayj zK{JqB2+_jILmtqx!6}*n{LfHupp~8p<^lYC>V!%Lh;qIAUwh4v0HO) zSka~JI;PnbWjO$2ixqRiKBV1ZegoWiXtFJ)F}jlJU$@C#&>paEx0nUbU=xEShpC<` zyKQl9!4S}?#7!;?n8u~-KO)UE!*-+Di>2bio_o_=p~orP;%vgExi%DIZktSkwEYer zvq8cIz8#=`v~AGSOp0TF=7dF1^BvwET+hRV;(Pt{0KY!=DBBgY<&_1`@&(pB!sRCz z+>3!?K2w~J6$8btWcuJu9}P5HcmX<ZWj!MMKB+!W{QxW3VX#Puh*ZfH1Bs@MFUdA zwhK@ClW-RJnIqs+ZeQ-HXQ#+f#Wcl>V@H#YOAL!8a8myNMaA#jb4q(`7wit|$#n6k|THeEFB5L%$*Q_v1Hgm8Xzs S2Miqm0000gT>}*z21Y~|NsC0Yx0006y zNkl_kdw0YyV9#*3z)(PVTJ2m_gl_6s`Ydq~y`qoK{1E`{AG z@K-g+?mm$cMJiHKpkw@?!G{*_B_A(^(6Nqntk+ZI1^(}9!BC2^eICpoGs0P(u{lE!T#9cSQ49tV!}OE7%=d%f zn4!R6)(|?vL9i|;)Bb%-ja?ZqfP~W1L{XHYlwiU$577U=T70 z(#(J!W&SEU?mPCIf2w)u1qVKNNra9(zQ6vud@Q;cj@Wixn=r-^HpZcL**sqLQ!Lrx9t1U>hk3-jv?dUkPk*T=5o+ZjQG@;#Jy zB*okEr&7EZv}_pnFW}@e#6o@XDd~8)d$AxK(tf+&4F)TAs|&_LW-#DihuGb-Y!{@& z@o=cIAk5%2DF=p|$%|lvFfSTVG=(LmK}sCY3c}53pRic;<#{qdFk|Eyek%Bi>MuNG V?euX;ySV@W002ovPDHLkV1mqoKU)9* literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/whismur.png b/graphics/object_events/pics/pokemon/whismur.png new file mode 100644 index 0000000000000000000000000000000000000000..9eaa1949ea42e6628eeb31e24e2e7fe55736a78c GIT binary patch literal 449 zcmV;y0Y3hTP)|J8f;tU1-30Hkvm)z#jdoTOS>Y5)KLPuySs0003@ zNklZjx z1p9aGbacI%U@}>8O*z0Qndb9|GC=u}R{f3xuj4}^=Aj^sXU@f2MAF&AaLaB^$zCg~gJW{qFRqUJ>49tw3sN7eSA8WLcOUe+0 zynC5x($Lt6q|uavpN2r$UORqgTG~)c#5(gBmFhPf+D?oSn!2vn?7cO?j`b-o0@?kEP)7xV6h^&ZsVaU6RFEoB^(6uuQiZrI)RKjY7s$&nbn9D`E&-`ayU5t=KfLep5YROt#B9(_C$u;T|dw4Aqze z9|NX^S!6i3QsR39LCSb{eaU;U-*rVXn-P5&4{}0gI4|6{FTzreaCbid?nk1SO{UAG z)zD$OhTEr7MsoImz-_(>tVZ-RA{9*iU?VG7C$xoR-mrORqstVdN+#ss2qVsIb_Tfo oYnUTsA=>PoKhgg~Sm*!b3u+Ye>mn=~?f?J)07*qoM6N<$g5|^cZ~y=R literal 354 zcmV-o0iFJdP)#q3}ThqbPC!&!T|v4E?D5*=~=J zZ=n5b@)lE+QdgA!kp?y!<^0R z8{F`4V~&bMfnm79G-9Nflh%Qj--9T(fp*lXW;zjf!!^s8o0N-L6lb_pih;DpH>?rI zY+~QXgjZ$2*n2R{YUb5X6wQ&I1H9dQR+}S~W-i=iFw9UF^U2q18>ssJK(yG?`O7L* z-j5h&y_>20Eh00I7i8wi#$r6IC#!>Lk~zQg3j;C25_4nS$p8QV07*qoM6N<$g0sh? AwEzGB diff --git a/graphics/object_events/pics/pokemon/wobbuffet.png b/graphics/object_events/pics/pokemon/wobbuffet.png new file mode 100644 index 0000000000000000000000000000000000000000..0a0b5d7ab07cefc5939696ed67aae6bd156a0704 GIT binary patch literal 486 zcmV@P)yGiMdlBB2!`{KNJ^Q37@GQb!^3L zpSio=SOD;0u*|eF3b)3;F`W>-|eJP+)%lm^V(5b3^cBR07*qoM6N<$f@o6Y$N&HU literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/wooper.png b/graphics/object_events/pics/pokemon/wooper.png new file mode 100644 index 0000000000000000000000000000000000000000..bd0bd97fac4a693a6569c8ac8e4f08886b2fe379 GIT binary patch literal 420 zcmV;V0bBlwP)sn3LTX6bOxP?Jcp z&n>8Fw#v7CKKnlsWB^j7N|h>ADqqY`S@E=KU_^exYKQH#VNmF5`nzYx7S?@T2v;8U zE*cp7=L2uQ9+067j1B$y9r1L`?;aPwdfx(9ef`G{J}`FPbuHq2x%788h&HfYPBd$F zfhRnV;Q(pqKaAGqGhg*!5I3w|=403Syx8sp8^d|zeXyaDeU41V3U`!0}VAXV}exYsC2@K`_k7J{1Kztk7eL&~U(TK3QY O0000}od5s-=GE@aQd;(VV)ng@=GE@r)ujLb)s&O~_Vxh9#aaLW02mk;j}Y3<0005j zNkl-5JD$E_#|#+IeKx1J`+-7r0A!@nKLO=-4XWRMdOuLTeZO3g0vJ%d@iq7) z3%u@NbM|Z?5$_-xuJ!|^o6qUqGGH{sju@VPxcy@F+4H-~<#h@AM6OfG94K{gq(Kf8 zy}@pl($(_u6WD6ICOqqhdC{|eSx zvNk3HJpmebKBrn+?Ph zRn8aCG&T|BT36)FceHYi&45wU283L!*W^uwo=ww4GhA?40@rH8zCP0;xICc>RVDt9 Z_ywXj<;E13YyJQL002ovPDHLkV1f*)361~& literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/wynaut.png b/graphics/object_events/pics/pokemon/wynaut.png new file mode 100644 index 0000000000000000000000000000000000000000..09dc53f2fbe72a34bb8e0854c3ba369df45508b4 GIT binary patch literal 512 zcmV+b0{{JqP)WOky=uMQoYn56F+tv1VnI1MgL`{wVq(qB#sB~RIeVmgDLDWD0L}KK-p0i+0004t zNklRU$&jBD8fYMJ9zT zs`hM^L!oyHC%0p1F4NEE{`!cJ0j_neYyG2&zU+Y#v1|}}R`gK4YhN@RwDKhnl+gO2 zWPn>m1F3(o0s7t-4Bb{WHSfUFPj2w+jX0ti~0000a^AN|Zq{Vk!ULLA{h9i&_BgIRLaV0D~z2&CSh}l$26ZQYk4ZFFR&q0005< zNkl%5ko0gL=(TOxBJ;uir`bGd>twOm$$_=l^j&xBxAfzCT6Yt)o%xJX;q0(cZVxO6 zW>hAaSoghd*C)+lk*Dp1K-;M!rI<2%@yJSfW$WYvDihmay|PEVUT*o}l-Kc@O)zC) zdAmf8@)MuiMA9JUsjWi+%Fs3#3ufx+8OicyUR)>U#PL>H#O8?NoMfEOi(9jR#7tSl z?O#dP!8RDT4Z*su=2^52%)sD6dudDxZDRU~t#=#HvZ4i$qG!@I9PsOFJhg(2cKa*B zp^~?*tD`oy34t#r?!DIzoQ9kI>?H%g)xZ(s%{S(5Ff^1uCgrP%-||w(YvH%-ujm)Q zL8yVu@8*+?+;7=GYG_g>lHBi#%ZU7z{i6otdBffJz4Gvpxb?v!lKuVqz<@HuuJavJ znSTAweT2Jy9q_V8x!|&AoxA`0AJqvK4%MvRR+*bbn- zj^I4v9qgqte%HY?z@TYcY(-Dp$M>RxDPhWXGh^E5E`cyjvRL|UhBco-l4LXXG~0Ty z1uQ@{m?LkNtS3S##7^G31%T|w4)*$^wt!{*s2{5t6;eX@u2n|CRd{y^z?<(oxYtjG zuZ&(bxgp5(lJW*rAih|aF<2Ljqjw`AJG!d%9akU3DWs9nyvgD5;rYoWv>x?xNDTd{0gHu!pHf!(g#i+{ zbo#7E=>WpiC+ml5oAnY5o(d68Y>PS+V#$a~IRi}i`%b?wV7b(%gzzE%24NP9I2ovl zlbWd##)Kh+uZ^t@IfkKQ7@#w7pT+3(3j>x*eOmJ5CeI;|DIKM^s$y9)Wkd|K3?eK_ zpvhUu)~a#_q;&e$fa5~n?x{a{o~groDLzI|uwAuYLJ4E;HqD@7bc=u(WYX!E1}vBQ zl92G&vwWt?ZLexBQ_|HcWE{Es)fy-n-68}J^J`sfOV6(u z8%#MTe-k)bO{$H($qIXt=2r?>1CE`(_;fyNo?Oe=y8P7S%dN~OBejE>^27mKf4{|y z11yHk4rO>t;B%heH3izt#wS@k9<7IOGM$a~bbZr`f8wC#w4!)00000NkvXXu0mjft-g_f literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/zangoose.png b/graphics/object_events/pics/pokemon/zangoose.png new file mode 100644 index 0000000000000000000000000000000000000000..61a6cdc0b828c07757b7af1d51f949193590f729 GIT binary patch literal 847 zcmV-V1F-ywP)=7JOo`*cEE%UkEPU2sOAfnoKgXac>I?eFyQI%)FPGNhX5u9`ErU|0X1t{;vLF zHPJLuB_Y|9939oPll;=8BQlAm(dFy$p0!Bd9}7FlQ;+-|cN0y^^(}q^oJI3c5bM{; zzC0I17$%y;p6m$87BTbYHLjCw)Zeu1FwrE+$4zI4XVChZwv#>mSZif>Sa|Jti|Ztl zXJQNh2W-G<%Va-@VTYxo`-YKdX(Y_)05@z{y1a$(y2D$vBUg?11bDA>pZ2evhXr4U zoJmWKHsr)Z-s7-Aw;bH?V3-EeY_I}&$9XdV;Bf5Qar?P&M&F=zKoX|Zea>M) z37ub4NI%`Milgt;ezb^a0u0BQLeS#qCS)CG-?0@j4$elYBkZejtL05WNts)p(@@(GgekjM59NTZlbq55f-1^ivgkI(#VX$6SW6pg%zDb}g1rnp?y;U=KP; zr~)X1VsM@G*Wd%T!#fhOdWO~!S+>mqB$^us1*N(%0!U|BLUDk^xrfUpOPFr~Wcx20 z8pcQ=#$vRM_p**BfEIHmrp6CfVdXOTr$ zF&+?ELQ;_WlOH9N5pfWHASAb3SUY+(`<_o0DIfW``53ePc!en2VM5W}n7v1?Dl3S0 zET3CmJNhE+$&=T-ESDk|PvaIQvZ{7U?76qKTeX~zUPbr0{ZlT+&Kgywj?NOPUF?)n zu}@xGevVtvZf%h}za4whDaBoxXt4s%?TW*l&MU1Kr=ay#oJIa?@u#M(8`$pd*t_^& Z$8WC%%XA0iJrV!_002ovPDHLkV1iMJkK_OV literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/zapdos.png b/graphics/object_events/pics/pokemon/zapdos.png new file mode 100644 index 0000000000000000000000000000000000000000..b11b36eb63136904954d0fccebf9537eb1a7e6e6 GIT binary patch literal 841 zcmV-P1GfB$P)a*2Tp0008i zNkl8nu5XUu$Z_+he#ts^eLxCjVz#CMUe5zz<_Y8fHWGUp$+%X2`nu8on5&;yk6{QH-hYJc@b9QCg5C8t`Nwap1X!Q2;Uu-wZx@?z~A1K zoDEcm4$w_KO=#~r6NAVcK>@ueNApBjA5S_55V^46`hZ5wP04WR7o8ZoPU->>Xd;@z3ACh? zT}@o!l2S!S3Tglh1`br z$vPpjF}nGAyx|C5`3G_=bKr;+1pv*0aS9U9J)y88fLIgt?K|D_001h+7PH~=7;B$GB$lZ_z>Vyiz9qBybRgeWC-t&>SoP#0|D0lNsszEP#Yr7QVx zm{JW3&d460#uf+GZ&Jz@jwy>4q9A5}R|9%|eHA(Wggs}hxrSrk`Y^MnF=ahO9v))K zqRUw@b|CRN_I3bBNltx3o)|5~l}qjF)#8zR@ayc{psId_d^=^33-xMSSfcJw$F zr!V;AY`DU*WYjd9_gGnP%m2Jfc2_xj6~en*t9p0%PdN(eps(@AM`N0+{Ev=b@~TQt TmXdp|00000NkvXXu0mjf)jyBW literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/zigzagoon.png b/graphics/object_events/pics/pokemon/zigzagoon.png index 2eaf2403d5f7eed52a53ce9c66333a9201188ab7..e18c0910a0f757c800792526d42b83615c9a27fc 100644 GIT binary patch literal 714 zcmV;*0yX`KP)$#jK0w)vW*j|D+%Q%{d^XlzV$xN)P}5dp&+V00072 zNkl;y(hI_%57L;5TYy-pxZ6YqBJeFiwhc{_l3KpN=Y<&3OB0W=V2K2u|at~UXc{HxfTLmauAyxZVZj% z<`>L=Hu(x080vz6i`%T7XFA~qY20OD7`R|Na4JQ*%0RQsaR~G=|4%l|gW^pXT)8py zvy)}HjxF+4Ht<cBT%<(f2FoqE0 zWnOgoYN(Cj1^9O@3aG3H$!e9Bp5(*q<74Sb1Agx(ivugVOmi{xoR1_&auZd?VUmWe zQ$+UZENNKJUl7LC=I>PDNMsBspE!`_eOB2hD}J%tr-*jA%n@c=G%*#H4}M7r%>zv` zB9ye4?e_c6SIJK`H(SE*Ex>xbI}UsJ9P$TROGCT;xN-*;$cfc6WC3gaY_K0C^MV!^ wJJ4Gl*0G|WE*`ybuE=BUHLNhyoc~q-02Y0@8~`1V7ytkO07*qoM6N<$g3EkMN&o-= literal 299 zcmV+`0o4A9P)UA`ws)C`3EQd2PUbd7Lrtn)b?ZxTlk%i)*8SV?U&4$v%om^ zB_OGLWY^-}aPPf9j6mLBo`4DQXuz1VV(l;tCMgSNHY@bxJ{I5=q9=+N1LCsquIfp+ zF!orIAXP~iDntV7L?cfNTjx6KcM+n|<~Es-D*IOF8iynYda0ljFJ+(l^irxHI9cFFXQfw2))%DXkXv;kKRE(q+R%c2weaG002ovPDHLkV1nZVe((SQ diff --git a/graphics/object_events/pics/pokemon/zubat.png b/graphics/object_events/pics/pokemon/zubat.png new file mode 100644 index 0000000000000000000000000000000000000000..57c3574ce49666a1f74ef51e6ed0a910cb78c64f GIT binary patch literal 574 zcmV-E0>S->P)WPgw$Nkq8c^`57X{60kQM zEWXdMi{vK8bU^cWhyBlsy{z(N5>Oe!n4bZ>0Z)1E`Etvz1pr^t^@u$A){$)sH2oEv z+!I!K3kwFuU9cef7U(fu+JkRP<(qZh2sIRpxAq(B9ZfaF9W`9?cmMzZ M07*qoM6N<$f)Q>A>Hq)$ literal 0 HcmV?d00001 diff --git a/spritesheet_rules.mk b/spritesheet_rules.mk index b0bb7f62f..248d14cc1 100644 --- a/spritesheet_rules.mk +++ b/spritesheet_rules.mk @@ -450,16 +450,16 @@ $(OBJEVENTGFXDIR)/pokemon/pikachu.4bpp: %.4bpp: %.png $(OBJEVENTGFXDIR)/pokemon/poochyena.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 $(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 @@ -471,21 +471,6 @@ $(OBJEVENTGFXDIR)/pokemon/zigzagoon.4bpp: %.4bpp: %.png $(OBJEVENTGFXDIR)/misc/animated_ball.4bpp: %.4bpp: %.png $(GFX) $< $@ -mwidth 2 -mheight 4 -$(OBJEVENTGFXDIR)/pokemon/marshtomp.4bpp: %.4bpp: %.png - $(GFX) $< $@ -mwidth 2 -mheight 4 - -$(OBJEVENTGFXDIR)/pokemon/altaria.4bpp: %.4bpp: %.png - $(GFX) $< $@ -mwidth 4 -mheight 4 - -$(OBJEVENTGFXDIR)/pokemon/togetic.4bpp: %.4bpp: %.png - $(GFX) $< $@ -mwidth 4 -mheight 4 - -$(OBJEVENTGFXDIR)/pokemon/charizard.4bpp: %.4bpp: %.png - $(GFX) $< $@ -mwidth 4 -mheight 4 - -$(OBJEVENTGFXDIR)/pokemon/banette.4bpp: %.4bpp: %.png - $(GFX) $< $@ -mwidth 4 -mheight 4 - $(OBJEVENTGFXDIR)/berry_trees/aguav.4bpp: %.4bpp: %.png $(GFX) $< $@ -mwidth 2 -mheight 4 @@ -690,3 +675,1142 @@ $(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/nidorina.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/nidoqueen.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/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/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/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 8 -mheight 8 + +$(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 8 -mheight 8 + +$(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/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 diff --git a/src/data/object_events/object_event_graphics.h b/src/data/object_events/object_event_graphics.h index a75353cae..89b334a31 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"); @@ -334,8 +324,6 @@ 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"); @@ -356,14 +344,393 @@ 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"); +<<<<<<< HEAD const u32 gObjectEventPic_Lugia[] = INCBIN_U32("graphics/object_events/pics/pokemon/lugia.4bpp"); 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"); +======= +const u16 gObjectEventPalette32[] = INCBIN_U16("graphics/object_events/palettes/32.gbapal"); +>>>>>>> e8c5f3ad6 (Added all 386 follower sprites.) const u32 gObjectEventPic_AnimatedBall[] = INCBIN_U32("graphics/object_events/pics/misc/animated_ball.4bpp"); -const u32 gObjectEventPic_Marshtomp[] = INCBIN_U32("graphics/object_events/pics/pokemon/marshtomp.4bpp"); -const u32 gObjectEventPic_Altaria[] = INCBIN_U32("graphics/object_events/pics/pokemon/altaria.4bpp"); -const u32 gObjectEventPic_Togetic[] = INCBIN_U32("graphics/object_events/pics/pokemon/togetic.4bpp"); -const u32 gObjectEventPic_Charizard[] = INCBIN_U32("graphics/object_events/pics/pokemon/charizard.4bpp"); -const u32 gObjectEventPic_Banette[] = INCBIN_U32("graphics/object_events/pics/pokemon/banette.4bpp"); const u16 gObjectEventPalette31[] = INCBIN_U16("graphics/object_events/palettes/31.gbapal"); +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_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_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_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_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_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_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"); diff --git a/src/data/object_events/object_event_graphics_info.h b/src/data/object_events/object_event_graphics_info.h index 69f3fe728..02534ca02 100755 --- a/src/data/object_events/object_event_graphics_info.h +++ b/src/data/object_events/object_event_graphics_info.h @@ -248,9 +248,384 @@ const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Follower = {0xFFFF // 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, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_Charizard, 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, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_Togetic, gDummySpriteAffineAnimTable}, - [SPECIES_MARSHTOMP] = {0xFFFF, OBJ_EVENT_PAL_TAG_DYNAMIC, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_Marshtomp, gDummySpriteAffineAnimTable}, - [SPECIES_ALTARIA] = {0xFFFF, OBJ_EVENT_PAL_TAG_DYNAMIC, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_Altaria, 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, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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_FOOT, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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_FOOT, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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_FOOT, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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_FOOT, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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_FOOT, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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_FOOT, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_Sandslash, 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, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_Nidoqueen, 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, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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_FOOT, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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_FOOT, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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_FOOT, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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_FOOT, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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_FOOT, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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_FOOT, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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_FOOT, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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_FOOT, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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_FOOT, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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_FOOT, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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_FOOT, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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_FOOT, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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_FOOT, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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_FOOT, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_Magneton, 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, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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_FOOT, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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_FOOT, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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_FOOT, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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_FOOT, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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_FOOT, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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_FOOT, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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_FOOT, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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_FOOT, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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_FOOT, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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_FOOT, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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_FOOT, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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_FOOT, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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_FOOT, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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_FOOT, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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_FOOT, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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_FOOT, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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_FOOT, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_Starmie, 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, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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_FOOT, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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_FOOT, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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_FOOT, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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_FOOT, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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_FOOT, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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_FOOT, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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_FOOT, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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_FOOT, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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_FOOT, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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_FOOT, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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_FOOT, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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_FOOT, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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_FOOT, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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_FOOT, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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_FOOT, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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_FOOT, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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_FOOT, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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_FOOT, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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_FOOT, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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_FOOT, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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_FOOT, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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_FOOT, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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_FOOT, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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_FOOT, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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_FOOT, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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_FOOT, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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_FOOT, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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_FOOT, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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_FOOT, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_Misdreavus, 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, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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_FOOT, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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_FOOT, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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_FOOT, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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_FOOT, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_Gligar, gDummySpriteAffineAnimTable}, + [SPECIES_STEELIX] = {0xFFFF, OBJ_EVENT_PAL_TAG_DYNAMIC, OBJ_EVENT_PAL_TAG_NONE, 1024, 64, 64, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_64x64, gObjectEventSpriteOamTables_64x64, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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_FOOT, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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_FOOT, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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_FOOT, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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_FOOT, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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_FOOT, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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_FOOT, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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_FOOT, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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_FOOT, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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_FOOT, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_Tyranitar, gDummySpriteAffineAnimTable}, + [SPECIES_LUGIA] = {0xFFFF, OBJ_EVENT_PAL_TAG_DYNAMIC, OBJ_EVENT_PAL_TAG_NONE, 1024, 64, 64, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_64x64, gObjectEventSpriteOamTables_64x64, gObjectEventImageAnimTable_Following, gObjectEventPicTable_Lugia, gDummySpriteAffineAnimTable}, + [SPECIES_HO_OH] = {0xFFFF, OBJ_EVENT_PAL_TAG_DYNAMIC, OBJ_EVENT_PAL_TAG_NONE, 1024, 64, 64, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_64x64, gObjectEventSpriteOamTables_64x64, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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_FOOT, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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_FOOT, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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_FOOT, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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_FOOT, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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_FOOT, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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_FOOT, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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_FOOT, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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_FOOT, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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_FOOT, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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_FOOT, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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_FOOT, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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_FOOT, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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_FOOT, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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_FOOT, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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_FOOT, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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_FOOT, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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_FOOT, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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_FOOT, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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_FOOT, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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_FOOT, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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_FOOT, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_Wailmer, gDummySpriteAffineAnimTable}, + [SPECIES_WAILORD] = {0xFFFF, OBJ_EVENT_PAL_TAG_DYNAMIC, OBJ_EVENT_PAL_TAG_NONE, 1024, 64, 64, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_64x64, gObjectEventSpriteOamTables_64x64, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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_FOOT, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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_FOOT, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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_FOOT, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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_FOOT, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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_FOOT, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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_FOOT, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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_FOOT, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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_FOOT, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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_FOOT, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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_FOOT, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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_FOOT, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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_FOOT, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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_FOOT, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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_FOOT, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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_FOOT, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_Milotic, 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, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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_FOOT, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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_FOOT, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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_FOOT, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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_FOOT, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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_FOOT, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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_FOOT, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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_FOOT, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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_FOOT, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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_FOOT, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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_FOOT, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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_FOOT, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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_FOOT, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_Latios, gDummySpriteAffineAnimTable}, + [SPECIES_KYOGRE] = {0xFFFF, OBJ_EVENT_PAL_TAG_DYNAMIC, OBJ_EVENT_PAL_TAG_NONE, 1024, 64, 64, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_64x64, gObjectEventSpriteOamTables_64x64, gObjectEventImageAnimTable_Following, gObjectEventPicTable_Kyogre, gDummySpriteAffineAnimTable}, + [SPECIES_GROUDON] = {0xFFFF, OBJ_EVENT_PAL_TAG_DYNAMIC, OBJ_EVENT_PAL_TAG_NONE, 1024, 64, 64, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_64x64, gObjectEventSpriteOamTables_64x64, gObjectEventImageAnimTable_Following, gObjectEventPicTable_Groudon, gDummySpriteAffineAnimTable}, + [SPECIES_RAYQUAZA] = {0xFFFF, OBJ_EVENT_PAL_TAG_DYNAMIC, OBJ_EVENT_PAL_TAG_NONE, 1024, 64, 64, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_64x64, gObjectEventSpriteOamTables_64x64, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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_FOOT, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_Deoxys, gDummySpriteAffineAnimTable}, }; diff --git a/src/data/object_events/object_event_pic_tables.h b/src/data/object_events/object_event_pic_tables.h index 2889f0bc7..3d3583896 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 @@ const struct SpriteFrameImage gObjectEventPicTable_Truck[] = { }; const struct SpriteFrameImage gObjectEventPicTable_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), }; const struct SpriteFrameImage gObjectEventPicTable_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), }; const struct SpriteFrameImage gObjectEventPicTable_BirchsBag[] = { @@ -965,18 +965,6 @@ const struct SpriteFrameImage gObjectEventPicTable_EnemyZigzagoon[] = { overworld_frame(gObjectEventPic_EnemyZigzagoon, 4, 4, 8), }; -const struct SpriteFrameImage gObjectEventPicTable_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), -}; - const struct SpriteFrameImage gObjectEventPicTable_Artist[] = { overworld_frame(gObjectEventPic_Artist, 2, 4, 0), overworld_frame(gObjectEventPic_Artist, 2, 4, 1), @@ -1773,38 +1761,6 @@ const struct SpriteFrameImage gObjectEventPicTable_Regi[] = { obj_frame_tiles(gObjectEventPic_Regi), }; -const struct SpriteFrameImage gObjectEventPicTable_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), -}; - -const struct SpriteFrameImage gObjectEventPicTable_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), -}; - -const struct SpriteFrameImage gObjectEventPicTable_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), -}; - const struct SpriteFrameImage gObjectEventPicTable_RayquazaStill[] = { obj_frame_tiles(gObjectEventPic_RayquazaStill), obj_frame_tiles(gObjectEventPic_RayquazaStill), @@ -1817,54 +1773,6 @@ const struct SpriteFrameImage gObjectEventPicTable_RayquazaStill[] = { obj_frame_tiles(gObjectEventPic_RayquazaStill), }; -const struct SpriteFrameImage gObjectEventPicTable_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), -}; - -const struct SpriteFrameImage gObjectEventPicTable_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), -}; - -const struct SpriteFrameImage gObjectEventPicTable_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), -}; - -const struct SpriteFrameImage gObjectEventPicTable_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), -}; - const struct SpriteFrameImage gObjectEventPicTable_TuberMSwimming[] = { overworld_frame(gObjectEventPic_TuberMSwimming, 2, 2, 0), overworld_frame(gObjectEventPic_TuberMSwimming, 2, 2, 1), @@ -1877,18 +1785,6 @@ const struct SpriteFrameImage gObjectEventPicTable_TuberMSwimming[] = { overworld_frame(gObjectEventPic_TuberMSwimming, 2, 2, 8), }; -const struct SpriteFrameImage gObjectEventPicTable_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), -}; - const struct SpriteFrameImage gObjectEventPicTable_Mom[] = { overworld_frame(gObjectEventPic_Mom, 2, 4, 0), overworld_frame(gObjectEventPic_Mom, 2, 4, 1), @@ -1941,30 +1837,6 @@ const struct SpriteFrameImage gObjectEventPicTable_Statue[] = { obj_frame_tiles(gObjectEventPic_Statue), }; -const struct SpriteFrameImage gObjectEventPicTable_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), -}; - -const struct SpriteFrameImage gObjectEventPicTable_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), -}; - const struct SpriteFrameImage gObjectEventPicTable_UnionRoomAttendant[] = { overworld_frame(gObjectEventPic_UnionRoomAttendant, 2, 4, 0), overworld_frame(gObjectEventPic_UnionRoomAttendant, 2, 4, 1), @@ -1977,30 +1849,6 @@ const struct SpriteFrameImage gObjectEventPicTable_UnionRoomAttendant[] = { overworld_frame(gObjectEventPic_UnionRoomAttendant, 2, 4, 2), }; -const struct SpriteFrameImage gObjectEventPicTable_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), -}; - -const struct SpriteFrameImage gObjectEventPicTable_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), -}; - const struct SpriteFrameImage gObjectEventPicTable_Red[] = { overworld_frame(gObjectEventPic_Red, 2, 4, 0), overworld_frame(gObjectEventPic_Red, 2, 4, 1), @@ -2025,16 +1873,24 @@ const struct SpriteFrameImage gObjectEventPicTable_Leaf[] = { overworld_frame(gObjectEventPic_Leaf, 2, 4, 8), }; -const struct SpriteFrameImage gObjectEventPicTable_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), +const struct SpriteFrameImage gObjectEventPicTable_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), +}; + +const struct SpriteFrameImage gObjectEventPicTable_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), }; const struct SpriteFrameImage gObjectEventPicTable_BirthIslandStone[] = { @@ -2125,30 +1981,6 @@ const struct SpriteFrameImage gObjectEventPicTable_Brandon[] = { overworld_frame(gObjectEventPic_Brandon, 2, 4, 8), }; -const struct SpriteFrameImage gObjectEventPicTable_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), -}; - -const struct SpriteFrameImage gObjectEventPicTable_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), -}; - const struct SpriteFrameImage gObjectEventPicTable_AnimatedBall[] = { overworld_frame(gObjectEventPic_AnimatedBall, 2, 4, 0), overworld_frame(gObjectEventPic_AnimatedBall, 2, 4, 1), @@ -2158,36 +1990,46 @@ const struct SpriteFrameImage gObjectEventPicTable_AnimatedBall[] = { overworld_frame(gObjectEventPic_AnimatedBall, 2, 4, 5), }; -const struct SpriteFrameImage gObjectEventPicTable_Marshtomp[] = { - overworld_frame(gObjectEventPic_Marshtomp, 2, 4, 0), - overworld_frame(gObjectEventPic_Marshtomp, 2, 4, 1), - overworld_frame(gObjectEventPic_Marshtomp, 2, 4, 2), - overworld_frame(gObjectEventPic_Marshtomp, 2, 4, 3), - overworld_frame(gObjectEventPic_Marshtomp, 2, 4, 4), - overworld_frame(gObjectEventPic_Marshtomp, 2, 4, 5), +const struct SpriteFrameImage gObjectEventPicTable_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), }; - -const struct SpriteFrameImage gObjectEventPicTable_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), - overworld_frame(gObjectEventPic_Altaria, 4, 4, 6), - overworld_frame(gObjectEventPic_Altaria, 4, 4, 7), - overworld_frame(gObjectEventPic_Altaria, 4, 4, 8), +const struct SpriteFrameImage gObjectEventPicTable_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), }; - -const struct SpriteFrameImage gObjectEventPicTable_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), +const struct SpriteFrameImage gObjectEventPicTable_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), +}; +const struct SpriteFrameImage gObjectEventPicTable_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), +}; +const struct SpriteFrameImage gObjectEventPicTable_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), }; - const struct SpriteFrameImage gObjectEventPicTable_Charizard[] = { overworld_frame(gObjectEventPic_Charizard, 4, 4, 0), overworld_frame(gObjectEventPic_Charizard, 4, 4, 1), @@ -2196,7 +2038,2734 @@ const struct SpriteFrameImage gObjectEventPicTable_Charizard[] = { overworld_frame(gObjectEventPic_Charizard, 4, 4, 4), overworld_frame(gObjectEventPic_Charizard, 4, 4, 5), }; - +const struct SpriteFrameImage gObjectEventPicTable_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), +}; +const struct SpriteFrameImage gObjectEventPicTable_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), +}; +const struct SpriteFrameImage gObjectEventPicTable_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), +}; +const struct SpriteFrameImage gObjectEventPicTable_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), +}; +const struct SpriteFrameImage gObjectEventPicTable_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), +}; +const struct SpriteFrameImage gObjectEventPicTable_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), +}; +const struct SpriteFrameImage gObjectEventPicTable_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), +}; +const struct SpriteFrameImage gObjectEventPicTable_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), +}; +const struct SpriteFrameImage gObjectEventPicTable_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), +}; +const struct SpriteFrameImage gObjectEventPicTable_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), +}; +const struct SpriteFrameImage gObjectEventPicTable_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), +}; +const struct SpriteFrameImage gObjectEventPicTable_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), +}; +const struct SpriteFrameImage gObjectEventPicTable_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), +}; +const struct SpriteFrameImage gObjectEventPicTable_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), +}; +const struct SpriteFrameImage gObjectEventPicTable_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), +}; +const struct SpriteFrameImage gObjectEventPicTable_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), +}; +const struct SpriteFrameImage gObjectEventPicTable_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), +}; +const struct SpriteFrameImage gObjectEventPicTable_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), +}; +const struct SpriteFrameImage gObjectEventPicTable_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), +}; +const struct SpriteFrameImage gObjectEventPicTable_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), +}; +const struct SpriteFrameImage gObjectEventPicTable_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), +}; +const struct SpriteFrameImage gObjectEventPicTable_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), +}; +const struct SpriteFrameImage gObjectEventPicTable_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), +}; +const struct SpriteFrameImage gObjectEventPicTable_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), +}; +const struct SpriteFrameImage gObjectEventPicTable_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), +}; +const struct SpriteFrameImage gObjectEventPicTable_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), +}; +const struct SpriteFrameImage gObjectEventPicTable_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), +}; +const struct SpriteFrameImage gObjectEventPicTable_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), +}; +const struct SpriteFrameImage gObjectEventPicTable_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), +}; +const struct SpriteFrameImage gObjectEventPicTable_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), +}; +const struct SpriteFrameImage gObjectEventPicTable_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), +}; +const struct SpriteFrameImage gObjectEventPicTable_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), +}; +const struct SpriteFrameImage gObjectEventPicTable_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), +}; +const struct SpriteFrameImage gObjectEventPicTable_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), +}; +const struct SpriteFrameImage gObjectEventPicTable_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), +}; +const struct SpriteFrameImage gObjectEventPicTable_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), +}; +const struct SpriteFrameImage gObjectEventPicTable_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), +}; +const struct SpriteFrameImage gObjectEventPicTable_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), +}; +const struct SpriteFrameImage gObjectEventPicTable_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), +}; +const struct SpriteFrameImage gObjectEventPicTable_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), +}; +const struct SpriteFrameImage gObjectEventPicTable_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), +}; +const struct SpriteFrameImage gObjectEventPicTable_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), +}; +const struct SpriteFrameImage gObjectEventPicTable_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), +}; +const struct SpriteFrameImage gObjectEventPicTable_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), +}; +const struct SpriteFrameImage gObjectEventPicTable_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), +}; +const struct SpriteFrameImage gObjectEventPicTable_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), +}; +const struct SpriteFrameImage gObjectEventPicTable_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), +}; +const struct SpriteFrameImage gObjectEventPicTable_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), +}; +const struct SpriteFrameImage gObjectEventPicTable_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), +}; +const struct SpriteFrameImage gObjectEventPicTable_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), +}; +const struct SpriteFrameImage gObjectEventPicTable_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), +}; +const struct SpriteFrameImage gObjectEventPicTable_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), +}; +const struct SpriteFrameImage gObjectEventPicTable_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), +}; +const struct SpriteFrameImage gObjectEventPicTable_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), +}; +const struct SpriteFrameImage gObjectEventPicTable_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), +}; +const struct SpriteFrameImage gObjectEventPicTable_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), +}; +const struct SpriteFrameImage gObjectEventPicTable_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), +}; +const struct SpriteFrameImage gObjectEventPicTable_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), +}; +const struct SpriteFrameImage gObjectEventPicTable_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), +}; +const struct SpriteFrameImage gObjectEventPicTable_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), +}; +const struct SpriteFrameImage gObjectEventPicTable_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), +}; +const struct SpriteFrameImage gObjectEventPicTable_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), +}; +const struct SpriteFrameImage gObjectEventPicTable_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), +}; +const struct SpriteFrameImage gObjectEventPicTable_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), +}; +const struct SpriteFrameImage gObjectEventPicTable_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), +}; +const struct SpriteFrameImage gObjectEventPicTable_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), +}; +const struct SpriteFrameImage gObjectEventPicTable_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), +}; +const struct SpriteFrameImage gObjectEventPicTable_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), +}; +const struct SpriteFrameImage gObjectEventPicTable_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), +}; +const struct SpriteFrameImage gObjectEventPicTable_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), +}; +const struct SpriteFrameImage gObjectEventPicTable_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), +}; +const struct SpriteFrameImage gObjectEventPicTable_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), +}; +const struct SpriteFrameImage gObjectEventPicTable_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), +}; +const struct SpriteFrameImage gObjectEventPicTable_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), +}; +const struct SpriteFrameImage gObjectEventPicTable_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), +}; +const struct SpriteFrameImage gObjectEventPicTable_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), +}; +const struct SpriteFrameImage gObjectEventPicTable_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), +}; +const struct SpriteFrameImage gObjectEventPicTable_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), +}; +const struct SpriteFrameImage gObjectEventPicTable_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), +}; +const struct SpriteFrameImage gObjectEventPicTable_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), +}; +const struct SpriteFrameImage gObjectEventPicTable_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), +}; +const struct SpriteFrameImage gObjectEventPicTable_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), +}; +const struct SpriteFrameImage gObjectEventPicTable_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), +}; +const struct SpriteFrameImage gObjectEventPicTable_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), +}; +const struct SpriteFrameImage gObjectEventPicTable_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), +}; +const struct SpriteFrameImage gObjectEventPicTable_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), +}; +const struct SpriteFrameImage gObjectEventPicTable_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), +}; +const struct SpriteFrameImage gObjectEventPicTable_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), +}; +const struct SpriteFrameImage gObjectEventPicTable_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), +}; +const struct SpriteFrameImage gObjectEventPicTable_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), +}; +const struct SpriteFrameImage gObjectEventPicTable_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), +}; +const struct SpriteFrameImage gObjectEventPicTable_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), +}; +const struct SpriteFrameImage gObjectEventPicTable_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), +}; +const struct SpriteFrameImage gObjectEventPicTable_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), +}; +const struct SpriteFrameImage gObjectEventPicTable_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), +}; +const struct SpriteFrameImage gObjectEventPicTable_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), +}; +const struct SpriteFrameImage gObjectEventPicTable_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), +}; +const struct SpriteFrameImage gObjectEventPicTable_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), +}; +const struct SpriteFrameImage gObjectEventPicTable_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), +}; +const struct SpriteFrameImage gObjectEventPicTable_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), +}; +const struct SpriteFrameImage gObjectEventPicTable_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), +}; +const struct SpriteFrameImage gObjectEventPicTable_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), +}; +const struct SpriteFrameImage gObjectEventPicTable_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), +}; +const struct SpriteFrameImage gObjectEventPicTable_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), +}; +const struct SpriteFrameImage gObjectEventPicTable_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), +}; +const struct SpriteFrameImage gObjectEventPicTable_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), +}; +const struct SpriteFrameImage gObjectEventPicTable_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), +}; +const struct SpriteFrameImage gObjectEventPicTable_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), +}; +const struct SpriteFrameImage gObjectEventPicTable_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), +}; +const struct SpriteFrameImage gObjectEventPicTable_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), +}; +const struct SpriteFrameImage gObjectEventPicTable_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), +}; +const struct SpriteFrameImage gObjectEventPicTable_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), +}; +const struct SpriteFrameImage gObjectEventPicTable_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), +}; +const struct SpriteFrameImage gObjectEventPicTable_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), +}; +const struct SpriteFrameImage gObjectEventPicTable_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), +}; +const struct SpriteFrameImage gObjectEventPicTable_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), +}; +const struct SpriteFrameImage gObjectEventPicTable_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), +}; +const struct SpriteFrameImage gObjectEventPicTable_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), +}; +const struct SpriteFrameImage gObjectEventPicTable_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), +}; +const struct SpriteFrameImage gObjectEventPicTable_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), +}; +const struct SpriteFrameImage gObjectEventPicTable_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), +}; +const struct SpriteFrameImage gObjectEventPicTable_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), +}; +const struct SpriteFrameImage gObjectEventPicTable_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), +}; +const struct SpriteFrameImage gObjectEventPicTable_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), +}; +const struct SpriteFrameImage gObjectEventPicTable_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), +}; +const struct SpriteFrameImage gObjectEventPicTable_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), +}; +const struct SpriteFrameImage gObjectEventPicTable_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), +}; +const struct SpriteFrameImage gObjectEventPicTable_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), +}; +const struct SpriteFrameImage gObjectEventPicTable_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), +}; +const struct SpriteFrameImage gObjectEventPicTable_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), +}; +const struct SpriteFrameImage gObjectEventPicTable_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), +}; +const struct SpriteFrameImage gObjectEventPicTable_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), +}; +const struct SpriteFrameImage gObjectEventPicTable_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), +}; +const struct SpriteFrameImage gObjectEventPicTable_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), +}; +const struct SpriteFrameImage gObjectEventPicTable_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), +}; +const struct SpriteFrameImage gObjectEventPicTable_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), +}; +const struct SpriteFrameImage gObjectEventPicTable_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), +}; +const struct SpriteFrameImage gObjectEventPicTable_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), +}; +const struct SpriteFrameImage gObjectEventPicTable_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), +}; +const struct SpriteFrameImage gObjectEventPicTable_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), +}; +const struct SpriteFrameImage gObjectEventPicTable_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), +}; +const struct SpriteFrameImage gObjectEventPicTable_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), +}; +const struct SpriteFrameImage gObjectEventPicTable_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), +}; +const struct SpriteFrameImage gObjectEventPicTable_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), +}; +const struct SpriteFrameImage gObjectEventPicTable_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), +}; +const struct SpriteFrameImage gObjectEventPicTable_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), +}; +const struct SpriteFrameImage gObjectEventPicTable_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), +}; +const struct SpriteFrameImage gObjectEventPicTable_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), +}; +const struct SpriteFrameImage gObjectEventPicTable_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), +}; +const struct SpriteFrameImage gObjectEventPicTable_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), +}; +const struct SpriteFrameImage gObjectEventPicTable_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), +}; +const struct SpriteFrameImage gObjectEventPicTable_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), +}; +const struct SpriteFrameImage gObjectEventPicTable_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), +}; +const struct SpriteFrameImage gObjectEventPicTable_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), +}; +const struct SpriteFrameImage gObjectEventPicTable_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), +}; +const struct SpriteFrameImage gObjectEventPicTable_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), +}; +const struct SpriteFrameImage gObjectEventPicTable_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), +}; +const struct SpriteFrameImage gObjectEventPicTable_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), +}; +const struct SpriteFrameImage gObjectEventPicTable_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), +}; +const struct SpriteFrameImage gObjectEventPicTable_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), +}; +const struct SpriteFrameImage gObjectEventPicTable_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), +}; +const struct SpriteFrameImage gObjectEventPicTable_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), +}; +const struct SpriteFrameImage gObjectEventPicTable_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), +}; +const struct SpriteFrameImage gObjectEventPicTable_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), +}; +const struct SpriteFrameImage gObjectEventPicTable_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), +}; +const struct SpriteFrameImage gObjectEventPicTable_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), +}; +const struct SpriteFrameImage gObjectEventPicTable_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), +}; +const struct SpriteFrameImage gObjectEventPicTable_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), +}; +const struct SpriteFrameImage gObjectEventPicTable_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), +}; +const struct SpriteFrameImage gObjectEventPicTable_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), +}; +const struct SpriteFrameImage gObjectEventPicTable_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), +}; +const struct SpriteFrameImage gObjectEventPicTable_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), +}; +const struct SpriteFrameImage gObjectEventPicTable_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), +}; +const struct SpriteFrameImage gObjectEventPicTable_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), +}; +const struct SpriteFrameImage gObjectEventPicTable_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), +}; +const struct SpriteFrameImage gObjectEventPicTable_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), +}; +const struct SpriteFrameImage gObjectEventPicTable_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), +}; +const struct SpriteFrameImage gObjectEventPicTable_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), +}; +const struct SpriteFrameImage gObjectEventPicTable_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), +}; +const struct SpriteFrameImage gObjectEventPicTable_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), +}; +const struct SpriteFrameImage gObjectEventPicTable_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), +}; +const struct SpriteFrameImage gObjectEventPicTable_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), +}; +const struct SpriteFrameImage gObjectEventPicTable_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), +}; +const struct SpriteFrameImage gObjectEventPicTable_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), +}; +const struct SpriteFrameImage gObjectEventPicTable_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), +}; +const struct SpriteFrameImage gObjectEventPicTable_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), +}; +const struct SpriteFrameImage gObjectEventPicTable_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), +}; +const struct SpriteFrameImage gObjectEventPicTable_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), +}; +const struct SpriteFrameImage gObjectEventPicTable_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), +}; +const struct SpriteFrameImage gObjectEventPicTable_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), +}; +const struct SpriteFrameImage gObjectEventPicTable_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), +}; +const struct SpriteFrameImage gObjectEventPicTable_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), +}; +const struct SpriteFrameImage gObjectEventPicTable_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), +}; +const struct SpriteFrameImage gObjectEventPicTable_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), +}; +const struct SpriteFrameImage gObjectEventPicTable_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), +}; +const struct SpriteFrameImage gObjectEventPicTable_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), +}; +const struct SpriteFrameImage gObjectEventPicTable_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), +}; +const struct SpriteFrameImage gObjectEventPicTable_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), +}; +const struct SpriteFrameImage gObjectEventPicTable_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), +}; +const struct SpriteFrameImage gObjectEventPicTable_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), +}; +const struct SpriteFrameImage gObjectEventPicTable_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), +}; +const struct SpriteFrameImage gObjectEventPicTable_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), +}; +const struct SpriteFrameImage gObjectEventPicTable_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), +}; +const struct SpriteFrameImage gObjectEventPicTable_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), +}; +const struct SpriteFrameImage gObjectEventPicTable_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), +}; +const struct SpriteFrameImage gObjectEventPicTable_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), +}; +const struct SpriteFrameImage gObjectEventPicTable_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), +}; +const struct SpriteFrameImage gObjectEventPicTable_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), +}; +const struct SpriteFrameImage gObjectEventPicTable_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), +}; +const struct SpriteFrameImage gObjectEventPicTable_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), +}; +const struct SpriteFrameImage gObjectEventPicTable_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), +}; +const struct SpriteFrameImage gObjectEventPicTable_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), +}; +const struct SpriteFrameImage gObjectEventPicTable_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), +}; +const struct SpriteFrameImage gObjectEventPicTable_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), +}; +const struct SpriteFrameImage gObjectEventPicTable_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), +}; +const struct SpriteFrameImage gObjectEventPicTable_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), +}; +const struct SpriteFrameImage gObjectEventPicTable_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), +}; +const struct SpriteFrameImage gObjectEventPicTable_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), +}; +const struct SpriteFrameImage gObjectEventPicTable_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), +}; +const struct SpriteFrameImage gObjectEventPicTable_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), +}; +const struct SpriteFrameImage gObjectEventPicTable_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), +}; +const struct SpriteFrameImage gObjectEventPicTable_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), +}; +const struct SpriteFrameImage gObjectEventPicTable_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), +}; +const struct SpriteFrameImage gObjectEventPicTable_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), +}; +const struct SpriteFrameImage gObjectEventPicTable_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), +}; +const struct SpriteFrameImage gObjectEventPicTable_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), +}; +const struct SpriteFrameImage gObjectEventPicTable_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), +}; +const struct SpriteFrameImage gObjectEventPicTable_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), +}; +const struct SpriteFrameImage gObjectEventPicTable_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), +}; +const struct SpriteFrameImage gObjectEventPicTable_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), +}; +const struct SpriteFrameImage gObjectEventPicTable_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), +}; +const struct SpriteFrameImage gObjectEventPicTable_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), +}; +const struct SpriteFrameImage gObjectEventPicTable_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), +}; +const struct SpriteFrameImage gObjectEventPicTable_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), +}; +const struct SpriteFrameImage gObjectEventPicTable_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), +}; +const struct SpriteFrameImage gObjectEventPicTable_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), +}; +const struct SpriteFrameImage gObjectEventPicTable_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), +}; +const struct SpriteFrameImage gObjectEventPicTable_Lugia[] = { + overworld_frame(gObjectEventPic_Lugia, 4, 4, 0), + overworld_frame(gObjectEventPic_Lugia, 4, 4, 1), + overworld_frame(gObjectEventPic_Lugia, 4, 4, 2), + overworld_frame(gObjectEventPic_Lugia, 4, 4, 3), + overworld_frame(gObjectEventPic_Lugia, 4, 4, 4), + overworld_frame(gObjectEventPic_Lugia, 4, 4, 5), +}; +const struct SpriteFrameImage gObjectEventPicTable_Ho_oh[] = { + overworld_frame(gObjectEventPic_Ho_oh, 4, 4, 0), + overworld_frame(gObjectEventPic_Ho_oh, 4, 4, 1), + overworld_frame(gObjectEventPic_Ho_oh, 4, 4, 2), + overworld_frame(gObjectEventPic_Ho_oh, 4, 4, 3), + overworld_frame(gObjectEventPic_Ho_oh, 4, 4, 4), + overworld_frame(gObjectEventPic_Ho_oh, 4, 4, 5), +}; +const struct SpriteFrameImage gObjectEventPicTable_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), +}; +const struct SpriteFrameImage gObjectEventPicTable_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), +}; +const struct SpriteFrameImage gObjectEventPicTable_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), +}; +const struct SpriteFrameImage gObjectEventPicTable_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), +}; +const struct SpriteFrameImage gObjectEventPicTable_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), +}; +const struct SpriteFrameImage gObjectEventPicTable_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), +}; +const struct SpriteFrameImage gObjectEventPicTable_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), +}; +const struct SpriteFrameImage gObjectEventPicTable_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), +}; +const struct SpriteFrameImage gObjectEventPicTable_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), +}; +const struct SpriteFrameImage gObjectEventPicTable_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), +}; +const struct SpriteFrameImage gObjectEventPicTable_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), +}; +const struct SpriteFrameImage gObjectEventPicTable_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), +}; +const struct SpriteFrameImage gObjectEventPicTable_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), +}; +const struct SpriteFrameImage gObjectEventPicTable_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), +}; +const struct SpriteFrameImage gObjectEventPicTable_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), +}; +const struct SpriteFrameImage gObjectEventPicTable_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), +}; +const struct SpriteFrameImage gObjectEventPicTable_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), +}; +const struct SpriteFrameImage gObjectEventPicTable_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), +}; +const struct SpriteFrameImage gObjectEventPicTable_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), +}; +const struct SpriteFrameImage gObjectEventPicTable_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), +}; +const struct SpriteFrameImage gObjectEventPicTable_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), +}; +const struct SpriteFrameImage gObjectEventPicTable_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), +}; +const struct SpriteFrameImage gObjectEventPicTable_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), +}; +const struct SpriteFrameImage gObjectEventPicTable_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), +}; +const struct SpriteFrameImage gObjectEventPicTable_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), +}; +const struct SpriteFrameImage gObjectEventPicTable_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), +}; +const struct SpriteFrameImage gObjectEventPicTable_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), +}; +const struct SpriteFrameImage gObjectEventPicTable_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), +}; +const struct SpriteFrameImage gObjectEventPicTable_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), +}; +const struct SpriteFrameImage gObjectEventPicTable_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), +}; +const struct SpriteFrameImage gObjectEventPicTable_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), +}; +const struct SpriteFrameImage gObjectEventPicTable_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), +}; +const struct SpriteFrameImage gObjectEventPicTable_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), +}; +const struct SpriteFrameImage gObjectEventPicTable_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), +}; +const struct SpriteFrameImage gObjectEventPicTable_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), +}; +const struct SpriteFrameImage gObjectEventPicTable_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), +}; +const struct SpriteFrameImage gObjectEventPicTable_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), +}; +const struct SpriteFrameImage gObjectEventPicTable_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), +}; +const struct SpriteFrameImage gObjectEventPicTable_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), +}; +const struct SpriteFrameImage gObjectEventPicTable_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), +}; +const struct SpriteFrameImage gObjectEventPicTable_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), +}; +const struct SpriteFrameImage gObjectEventPicTable_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), +}; +const struct SpriteFrameImage gObjectEventPicTable_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), +}; +const struct SpriteFrameImage gObjectEventPicTable_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), +}; +const struct SpriteFrameImage gObjectEventPicTable_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), +}; +const struct SpriteFrameImage gObjectEventPicTable_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), +}; +const struct SpriteFrameImage gObjectEventPicTable_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), +}; +const struct SpriteFrameImage gObjectEventPicTable_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), +}; +const struct SpriteFrameImage gObjectEventPicTable_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), +}; +const struct SpriteFrameImage gObjectEventPicTable_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), +}; +const struct SpriteFrameImage gObjectEventPicTable_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), +}; +const struct SpriteFrameImage gObjectEventPicTable_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), +}; +const struct SpriteFrameImage gObjectEventPicTable_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), +}; +const struct SpriteFrameImage gObjectEventPicTable_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), +}; +const struct SpriteFrameImage gObjectEventPicTable_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), +}; +const struct SpriteFrameImage gObjectEventPicTable_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), +}; +const struct SpriteFrameImage gObjectEventPicTable_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), +}; +const struct SpriteFrameImage gObjectEventPicTable_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), +}; +const struct SpriteFrameImage gObjectEventPicTable_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), +}; +const struct SpriteFrameImage gObjectEventPicTable_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), +}; +const struct SpriteFrameImage gObjectEventPicTable_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), +}; +const struct SpriteFrameImage gObjectEventPicTable_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), +}; +const struct SpriteFrameImage gObjectEventPicTable_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), +}; +const struct SpriteFrameImage gObjectEventPicTable_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), +}; +const struct SpriteFrameImage gObjectEventPicTable_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), +}; +const struct SpriteFrameImage gObjectEventPicTable_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), +}; +const struct SpriteFrameImage gObjectEventPicTable_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), +}; +const struct SpriteFrameImage gObjectEventPicTable_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), +}; +const struct SpriteFrameImage gObjectEventPicTable_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), +}; +const struct SpriteFrameImage gObjectEventPicTable_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), +}; +const struct SpriteFrameImage gObjectEventPicTable_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), +}; +const struct SpriteFrameImage gObjectEventPicTable_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), +}; +const struct SpriteFrameImage gObjectEventPicTable_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), +}; +const struct SpriteFrameImage gObjectEventPicTable_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), +}; +const struct SpriteFrameImage gObjectEventPicTable_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), +}; +const struct SpriteFrameImage gObjectEventPicTable_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), +}; +const struct SpriteFrameImage gObjectEventPicTable_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), +}; +const struct SpriteFrameImage gObjectEventPicTable_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), +}; +const struct SpriteFrameImage gObjectEventPicTable_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), +}; +const struct SpriteFrameImage gObjectEventPicTable_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), +}; +const struct SpriteFrameImage gObjectEventPicTable_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), +}; +const struct SpriteFrameImage gObjectEventPicTable_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), +}; +const struct SpriteFrameImage gObjectEventPicTable_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), +}; +const struct SpriteFrameImage gObjectEventPicTable_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), +}; +const struct SpriteFrameImage gObjectEventPicTable_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), +}; +const struct SpriteFrameImage gObjectEventPicTable_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), +}; +const struct SpriteFrameImage gObjectEventPicTable_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), +}; +const struct SpriteFrameImage gObjectEventPicTable_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), +}; +const struct SpriteFrameImage gObjectEventPicTable_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), +}; +const struct SpriteFrameImage gObjectEventPicTable_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), +}; +const struct SpriteFrameImage gObjectEventPicTable_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), +}; +const struct SpriteFrameImage gObjectEventPicTable_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), +}; +const struct SpriteFrameImage gObjectEventPicTable_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), +}; +const struct SpriteFrameImage gObjectEventPicTable_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), +}; +const struct SpriteFrameImage gObjectEventPicTable_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), +}; +const struct SpriteFrameImage gObjectEventPicTable_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), +}; +const struct SpriteFrameImage gObjectEventPicTable_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), +}; +const struct SpriteFrameImage gObjectEventPicTable_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), +}; +const struct SpriteFrameImage gObjectEventPicTable_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), +}; +const struct SpriteFrameImage gObjectEventPicTable_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), +}; +const struct SpriteFrameImage gObjectEventPicTable_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), +}; +const struct SpriteFrameImage gObjectEventPicTable_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), +}; const struct SpriteFrameImage gObjectEventPicTable_Banette[] = { overworld_frame(gObjectEventPic_Banette, 4, 4, 0), overworld_frame(gObjectEventPic_Banette, 4, 4, 1), @@ -2205,6 +4774,262 @@ const struct SpriteFrameImage gObjectEventPicTable_Banette[] = { overworld_frame(gObjectEventPic_Banette, 4, 4, 4), overworld_frame(gObjectEventPic_Banette, 4, 4, 5), }; +const struct SpriteFrameImage gObjectEventPicTable_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), +}; +const struct SpriteFrameImage gObjectEventPicTable_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), +}; +const struct SpriteFrameImage gObjectEventPicTable_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), +}; +const struct SpriteFrameImage gObjectEventPicTable_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), +}; +const struct SpriteFrameImage gObjectEventPicTable_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), +}; +const struct SpriteFrameImage gObjectEventPicTable_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), +}; +const struct SpriteFrameImage gObjectEventPicTable_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), +}; +const struct SpriteFrameImage gObjectEventPicTable_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), +}; +const struct SpriteFrameImage gObjectEventPicTable_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), +}; +const struct SpriteFrameImage gObjectEventPicTable_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), +}; +const struct SpriteFrameImage gObjectEventPicTable_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), +}; +const struct SpriteFrameImage gObjectEventPicTable_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), +}; +const struct SpriteFrameImage gObjectEventPicTable_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), +}; +const struct SpriteFrameImage gObjectEventPicTable_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), +}; +const struct SpriteFrameImage gObjectEventPicTable_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), +}; +const struct SpriteFrameImage gObjectEventPicTable_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), +}; +const struct SpriteFrameImage gObjectEventPicTable_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), +}; +const struct SpriteFrameImage gObjectEventPicTable_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), +}; +const struct SpriteFrameImage gObjectEventPicTable_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), +}; +const struct SpriteFrameImage gObjectEventPicTable_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), +}; +const struct SpriteFrameImage gObjectEventPicTable_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), +}; +const struct SpriteFrameImage gObjectEventPicTable_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), +}; +const struct SpriteFrameImage gObjectEventPicTable_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), +}; +const struct SpriteFrameImage gObjectEventPicTable_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), +}; +const struct SpriteFrameImage gObjectEventPicTable_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), +}; +const struct SpriteFrameImage gObjectEventPicTable_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), +}; +const struct SpriteFrameImage gObjectEventPicTable_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), +}; +const struct SpriteFrameImage gObjectEventPicTable_Kyogre[] = { + overworld_frame(gObjectEventPic_Kyogre, 4, 4, 0), + overworld_frame(gObjectEventPic_Kyogre, 4, 4, 1), + overworld_frame(gObjectEventPic_Kyogre, 4, 4, 2), + overworld_frame(gObjectEventPic_Kyogre, 4, 4, 3), + overworld_frame(gObjectEventPic_Kyogre, 4, 4, 4), + overworld_frame(gObjectEventPic_Kyogre, 4, 4, 5), +}; +const struct SpriteFrameImage gObjectEventPicTable_Groudon[] = { + overworld_frame(gObjectEventPic_Groudon, 4, 4, 0), + overworld_frame(gObjectEventPic_Groudon, 4, 4, 1), + overworld_frame(gObjectEventPic_Groudon, 4, 4, 2), + overworld_frame(gObjectEventPic_Groudon, 4, 4, 3), + overworld_frame(gObjectEventPic_Groudon, 4, 4, 4), + overworld_frame(gObjectEventPic_Groudon, 4, 4, 5), +}; +const struct SpriteFrameImage gObjectEventPicTable_Rayquaza[] = { + overworld_frame(gObjectEventPic_Rayquaza, 4, 4, 0), + overworld_frame(gObjectEventPic_Rayquaza, 4, 4, 1), + overworld_frame(gObjectEventPic_Rayquaza, 4, 4, 2), + overworld_frame(gObjectEventPic_Rayquaza, 4, 4, 3), + overworld_frame(gObjectEventPic_Rayquaza, 4, 4, 4), + overworld_frame(gObjectEventPic_Rayquaza, 4, 4, 5), +}; +const struct SpriteFrameImage gObjectEventPicTable_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), +}; +const struct SpriteFrameImage gObjectEventPicTable_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), +}; const struct SpriteFrameImage gObjectEventPicTable_RubySapphireBrendan[] = { overworld_frame(gObjectEventPic_RubySapphireBrendanNormal, 2, 4, 0), diff --git a/src/event_object_movement.c b/src/event_object_movement.c index 8e3634bc3..226c1ce62 100644 --- a/src/event_object_movement.c +++ b/src/event_object_movement.c @@ -32,6 +32,7 @@ #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/species.h" #include "constants/trainer_types.h" @@ -143,6 +144,7 @@ static bool8 AnimateSpriteInFigure8(struct Sprite *sprite); static void UpdateObjectEventSprite(struct Sprite *); static void UpdateObjectEventSpriteSubpriorityAndVisibility(struct Sprite *); u8 GetDirectionToFace(s16 x1, s16 y1, s16 x2, s16 y2); +static void FollowerSetGraphics(struct ObjectEvent *, u16); static void ObjectEventSetGraphics(struct ObjectEvent *, const struct ObjectEventGraphicsInfo *); const u8 gReflectionEffectPaletteMap[] = {1, 1, 6, 7, 8, 9, 6, 7, 8, 9, 11, 11, 0, 0, 0, 0}; @@ -1433,6 +1435,13 @@ TrySpawnObjectEventTemplate(struct ObjectEventTemplate *objectEventTemplate, SetSubspriteTables(&gSprites[gObjectEvents[objectEventId].spriteId], subspriteTables); + // Set species based on script header + if (objectEventTemplate->graphicsId == OBJ_EVENT_GFX_OW_MON && objectEventTemplate->script) { + const u8 *script = objectEventTemplate->script; + if (script[0] == 0x7d) // bufferspeciesname + FollowerSetGraphics(&gObjectEvents[objectEventId], script[2] | script[3] << 8); + } + return objectEventId; } @@ -1608,9 +1617,11 @@ static const struct ObjectEventGraphicsInfo * SpeciesToGraphicsInfo(u16 species) // Set graphics & sprite for a follower object event by species static void FollowerSetGraphics(struct ObjectEvent *objectEvent, u16 species) { const struct ObjectEventGraphicsInfo *graphicsInfo = SpeciesToGraphicsInfo(species); + u16 *oldSpecies = (u16*) &objectEvent->playerCopyableMovement; objectEvent->graphicsId = OBJ_EVENT_GFX_OW_MON; ObjectEventSetGraphics(objectEvent, SpeciesToGraphicsInfo(species)); objectEvent->graphicsId = OBJ_EVENT_GFX_OW_MON; + *oldSpecies = species; if (graphicsInfo->paletteTag1 == OBJ_EVENT_PAL_TAG_DYNAMIC) { // Use palette from species palette table struct Sprite *sprite = &gSprites[objectEvent->spriteId]; const struct CompressedSpritePalette *spritePalette = &gMonPaletteTable[species]; @@ -1629,7 +1640,8 @@ void UpdateFollowingPokemon(void) { // Update following pokemon if any struct Sprite *sprite; u16 species; u16 *oldSpecies; - if (mon) { + // Avoid spawning large (64x64) follower pokemon inside buildings + if (mon && !(gMapHeader.mapType == MAP_TYPE_INDOOR && SpeciesToGraphicsInfo(GetMonData(mon, MON_DATA_SPECIES))->width == 64)) { if (objectEvent == NULL) { // Spawn follower struct ObjectEventTemplate template = { .localId = OBJ_EVENT_ID_FOLLOWER, @@ -1637,7 +1649,7 @@ void UpdateFollowingPokemon(void) { // Update following pokemon if any .x = gSaveBlock1Ptr->pos.x, .y = gSaveBlock1Ptr->pos.y, .elevation = 3, - .movementType = MOVEMENT_TYPE_FOLLOW_PLAYER + .movementType = MOVEMENT_TYPE_FOLLOW_PLAYER, }; objectEvent = &gObjectEvents[SpawnSpecialObjectEvent(&template)]; objectEvent->invisible = TRUE; @@ -1649,10 +1661,9 @@ void UpdateFollowingPokemon(void) { // Update following pokemon if any MoveObjectEventToMapCoords(objectEvent, gObjectEvents[gPlayerAvatar.objectEventId].currentCoords.x, gObjectEvents[gPlayerAvatar.objectEventId].currentCoords.y); objectEvent->invisible = TRUE; } - FollowerSetGraphics(objectEvent, species); // TODO: This should be done to all pokemon graphics - *oldSpecies = species; // set species + FollowerSetGraphics(objectEvent, species); sprite->data[6] = 0; // set animation data - sprite->data[7] = species; // set species + *oldSpecies = sprite->data[7] = species; // set species } else { RemoveFollowingPokemon(); } @@ -1689,7 +1700,7 @@ bool8 ScrFunc_getfolloweraction(struct ScriptContext *ctx) // Essentially a big if (gBaseStats[species].type1 == TYPE_FIRE || gBaseStats[species].type2 == TYPE_FIRE) { ScriptCall(ctx, EventScript_FollowerHasWetFeet); return FALSE; - } else if (GetObjectEventGraphicsInfo(objEvent->graphicsId)->tracks) { // if follower leaves tracks + } else if (SpeciesToGraphicsInfo(species)->tracks) { // if follower leaves tracks ScriptCall(ctx, EventScript_FollowerSplashesAbout); return FALSE; } @@ -1697,7 +1708,6 @@ bool8 ScrFunc_getfolloweraction(struct ScriptContext *ctx) // Essentially a big if (GetCurrentWeather() == WEATHER_RAIN || GetCurrentWeather() == WEATHER_RAIN_THUNDERSTORM) { ScriptCall(ctx, EventScript_FollowerLovesYou); } - // SetMainCallback2(CB2_OpenFlyMap); ScriptCall(ctx, EventScript_FollowerLovesYou); return FALSE; } @@ -1849,6 +1859,10 @@ static void sub_808E1B8(u8 objectEventId, s16 x, s16 y) sprite->coordOffsetEnabled = TRUE; sprite->data[0] = objectEventId; objectEvent->spriteId = spriteId; + if (objectEvent->graphicsId == OBJ_EVENT_GFX_OW_MON) { // Set pokemon graphics + u16 *species = (u16*) &objectEvent->playerCopyableMovement; + FollowerSetGraphics(objectEvent, *species); + } if (!objectEvent->inanimate && objectEvent->movementType != MOVEMENT_TYPE_PLAYER) { StartSpriteAnim(sprite, GetFaceDirectionAnimNum(objectEvent->facingDirection)); @@ -8064,8 +8078,7 @@ static void GetGroundEffectFlags_ShallowFlowingWater(struct ObjectEvent *objEven || (MetatileBehavior_IsPacifidlogLog(objEvent->currentMetatileBehavior) && MetatileBehavior_IsPacifidlogLog(objEvent->previousMetatileBehavior))) { - // Only set flags if objEvent leaves tracks - if (!objEvent->inShallowFlowingWater && GetObjectEventGraphicsInfo(objEvent->graphicsId)->tracks) + if (!objEvent->inShallowFlowingWater) { objEvent->inShallowFlowingWater = 0; objEvent->inShallowFlowingWater = 1; diff --git a/src/overworld.c b/src/overworld.c index d8d441b81..369db2173 100644 --- a/src/overworld.c +++ b/src/overworld.c @@ -1947,11 +1947,10 @@ static bool32 ReturnToFieldLocal(u8 *state) sub_80867D8(); ResumeMap(FALSE); sub_8086A68(); - if (gFieldCallback == FieldCallback_Fly) { + if (gFieldCallback == FieldCallback_Fly) RemoveFollowingPokemon(); - } else { - UpdateFollowingPokemon(); // TODO: Update all dynamic graphicsIds - } + else + UpdateFollowingPokemon(); SetCameraToTrackPlayer(); (*state)++; break; From 2c723903a2f7ea2472f169279d6bf790489d6703 Mon Sep 17 00:00:00 2001 From: Ariel Antonitis Date: Tue, 23 Jun 2020 01:51:37 -0400 Subject: [PATCH 026/241] Updated following pokemon when fainting due to poison. --- src/field_poison.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/field_poison.c b/src/field_poison.c index 132ce571e..c9459da41 100644 --- 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" @@ -102,6 +103,7 @@ static void Task_TryFieldPoisonWhiteOut(u8 taskId) else { gSpecialVar_Result = FLDPSN_NO_WHITEOUT; + UpdateFollowingPokemon(); } EnableBothScriptContexts(); DestroyTask(taskId); From aacc17e15cfdf7834cb9cd76f5f0c6b9d210b3d4 Mon Sep 17 00:00:00 2001 From: Ariel Antonitis Date: Tue, 23 Jun 2020 23:26:22 -0400 Subject: [PATCH 027/241] Fixed exclamation point & question mark palettes. --- src/trainer_see.c | 18 ++++++++++++------ 1 file changed, 12 insertions(+), 6 deletions(-) diff --git a/src/trainer_see.c b/src/trainer_see.c index 155c84cbe..9ce25ce23 100644 --- a/src/trainer_see.c +++ b/src/trainer_see.c @@ -165,10 +165,12 @@ static const union AnimCmd *const sSpriteAnimTable_Icons[] = sSpriteAnim_Icons2 }; +#define OBJ_EVENT_PAL_TAG_17 0x1110 // TODO: Move this into event_object_movement.h + static const struct SpriteTemplate sSpriteTemplate_ExclamationQuestionMark = { .tileTag = 0xffff, - .paletteTag = 0xffff, + .paletteTag = OBJ_EVENT_PAL_TAG_17, .oam = &sOamData_Icons, .anims = sSpriteAnimTable_Icons, .images = sSpriteImageTable_ExclamationQuestionMark, @@ -698,8 +700,10 @@ 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; } @@ -708,8 +712,10 @@ u8 FldEff_QuestionMarkIcon(void) { u8 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; } @@ -723,7 +729,7 @@ u8 FldEff_HeartIcon(void) struct Sprite *sprite = &gSprites[spriteId]; SetIconSpriteData(sprite, FLDEFF_HEART_ICON, 0); - sprite->oam.paletteNum = 2; + sprite->oam.paletteNum = 2; // TODO: What palette should this use? } return 0; From 6969f3d6f7d720a36c8a4ff5082de68758b7625c Mon Sep 17 00:00:00 2001 From: Ariel Antonitis Date: Wed, 24 Jun 2020 00:02:21 -0400 Subject: [PATCH 028/241] Added Nidoran M & Nidoran F sprites. --- .../object_events/pics/pokemon/nidoran_f.png | Bin 0 -> 444 bytes .../object_events/pics/pokemon/nidoran_m.png | Bin 0 -> 464 bytes spritesheet_rules.mk | 6 ++++++ src/data/object_events/object_event_graphics.h | 2 ++ .../object_events/object_event_graphics_info.h | 2 ++ .../object_events/object_event_pic_tables.h | 16 ++++++++++++++++ 6 files changed, 26 insertions(+) create mode 100644 graphics/object_events/pics/pokemon/nidoran_f.png create mode 100644 graphics/object_events/pics/pokemon/nidoran_m.png diff --git a/graphics/object_events/pics/pokemon/nidoran_f.png b/graphics/object_events/pics/pokemon/nidoran_f.png new file mode 100644 index 0000000000000000000000000000000000000000..ed77773cefb17310938b05fa33bb7ba45751c2ac GIT binary patch literal 444 zcmV;t0YmImI9lN`v+gVzd}JbN>MU{{a900RR90{}2!m!YqX+0003; zNkl!4@f>S$Bf5qn>AFQ%qwge>OU@UV znCj*@XSH?Sn|%x85A6c_rORfQiv7O|!qdVX=%oxlNUGvkb!R6IV z9kY7|-Urz|G^3TQs)rR^_Rl9y6Hc4TwlijJbbf`&m;N&lU#%4#C)o4b$0WbcEP)1pw6b4|S-FGlr3YA0elis3B1KqMDkXw{?%I2k^zr1LyBx*7hB;O=M zr3PAA;xwkc*nM>5TGS$yIU+7WyY=yjJl)Uq=K6C-b1eLm!#v7w#K~Hzu5UM(DndU3)->e zv-0y9?aC<=ddd~>)_n*^ITh4EGou}RaGj&fw`vZNy@A3pO=FbK3nXWE?wz%vE&TnT z@u&7y;pbVFP7U<+W20$H6`W~F3n0J_h4U}q2N%Y##D(`dx3&2Oo}8^0!wKgN;;$j{ zg8UFC@&nkh(|TL1Kjc?(qendMA#uXR6ps-3iA6o)zs@IP|0jY~s^+r*0000 Date: Wed, 24 Jun 2020 00:19:57 -0400 Subject: [PATCH 029/241] Moved follower species into a proper union. --- include/global.fieldmap.h | 6 ++++-- src/event_object_movement.c | 14 +++++--------- src/field_player_avatar.c | 4 ++-- 3 files changed, 11 insertions(+), 13 deletions(-) diff --git a/include/global.fieldmap.h b/include/global.fieldmap.h index 16684758a..f72b07c20 100644 --- a/include/global.fieldmap.h +++ b/include/global.fieldmap.h @@ -207,8 +207,10 @@ struct ObjectEvent /*0x1F*/ u8 previousMetatileBehavior; /*0x20*/ u8 previousMovementDirection; /*0x21*/ u8 directionSequenceIndex; - /*0x22*/ u8 playerCopyableMovement; - u8 unused; + /*0x22*/ union __attribute__((packed)) { + u8 playerCopyableMovement; + u16 species; + } extra; /*size = 0x24*/ }; diff --git a/src/event_object_movement.c b/src/event_object_movement.c index 226c1ce62..4b230b143 100644 --- a/src/event_object_movement.c +++ b/src/event_object_movement.c @@ -1617,11 +1617,10 @@ static const struct ObjectEventGraphicsInfo * SpeciesToGraphicsInfo(u16 species) // Set graphics & sprite for a follower object event by species static void FollowerSetGraphics(struct ObjectEvent *objectEvent, u16 species) { const struct ObjectEventGraphicsInfo *graphicsInfo = SpeciesToGraphicsInfo(species); - u16 *oldSpecies = (u16*) &objectEvent->playerCopyableMovement; objectEvent->graphicsId = OBJ_EVENT_GFX_OW_MON; ObjectEventSetGraphics(objectEvent, SpeciesToGraphicsInfo(species)); objectEvent->graphicsId = OBJ_EVENT_GFX_OW_MON; - *oldSpecies = species; + objectEvent->extra.species = species; if (graphicsInfo->paletteTag1 == OBJ_EVENT_PAL_TAG_DYNAMIC) { // Use palette from species palette table struct Sprite *sprite = &gSprites[objectEvent->spriteId]; const struct CompressedSpritePalette *spritePalette = &gMonPaletteTable[species]; @@ -1639,7 +1638,6 @@ void UpdateFollowingPokemon(void) { // Update following pokemon if any struct Pokemon *mon = GetFirstLiveMon(); struct Sprite *sprite; u16 species; - u16 *oldSpecies; // Avoid spawning large (64x64) follower pokemon inside buildings if (mon && !(gMapHeader.mapType == MAP_TYPE_INDOOR && SpeciesToGraphicsInfo(GetMonData(mon, MON_DATA_SPECIES))->width == 64)) { if (objectEvent == NULL) { // Spawn follower @@ -1656,14 +1654,13 @@ void UpdateFollowingPokemon(void) { // Update following pokemon if any } sprite = &gSprites[objectEvent->spriteId]; species = GetMonData(mon, MON_DATA_SPECIES); - oldSpecies = (u16*) &objectEvent->playerCopyableMovement; - if (species != *oldSpecies) { // Move to player and set invisible + if (species != objectEvent->extra.species) { // Move to player and set invisible MoveObjectEventToMapCoords(objectEvent, gObjectEvents[gPlayerAvatar.objectEventId].currentCoords.x, gObjectEvents[gPlayerAvatar.objectEventId].currentCoords.y); objectEvent->invisible = TRUE; } FollowerSetGraphics(objectEvent, species); sprite->data[6] = 0; // set animation data - *oldSpecies = sprite->data[7] = species; // set species + objectEvent->extra.species = sprite->data[7] = species; // set species } else { RemoveFollowingPokemon(); } @@ -1860,8 +1857,7 @@ static void sub_808E1B8(u8 objectEventId, s16 x, s16 y) sprite->data[0] = objectEventId; objectEvent->spriteId = spriteId; if (objectEvent->graphicsId == OBJ_EVENT_GFX_OW_MON) { // Set pokemon graphics - u16 *species = (u16*) &objectEvent->playerCopyableMovement; - FollowerSetGraphics(objectEvent, *species); + FollowerSetGraphics(objectEvent, objectEvent->extra.species); } if (!objectEvent->inanimate && objectEvent->movementType != MOVEMENT_TYPE_PLAYER) { @@ -5111,7 +5107,7 @@ void SetTrainerMovementType(struct ObjectEvent *objectEvent, u8 movementType) { objectEvent->movementType = movementType; objectEvent->directionSequenceIndex = 0; - objectEvent->playerCopyableMovement = 0; + objectEvent->extra.playerCopyableMovement = 0; gSprites[objectEvent->spriteId].callback = sMovementTypeCallbacks[movementType]; gSprites[objectEvent->spriteId].data[1] = 0; } diff --git a/src/field_player_avatar.c b/src/field_player_avatar.c index 4f85ad628..b2729cc99 100644 --- a/src/field_player_avatar.c +++ b/src/field_player_avatar.c @@ -931,12 +931,12 @@ static bool8 PlayerCheckIfAnimFinishedOrInactive(void) static void PlayerSetCopyableMovement(u8 a) { - gObjectEvents[gPlayerAvatar.objectEventId].playerCopyableMovement = a; + gObjectEvents[gPlayerAvatar.objectEventId].extra.playerCopyableMovement = a; } u8 PlayerGetCopyableMovement(void) { - return gObjectEvents[gPlayerAvatar.objectEventId].playerCopyableMovement; + return gObjectEvents[gPlayerAvatar.objectEventId].extra.playerCopyableMovement; } static void PlayerForceSetHeldMovement(u8 movementActionId) From 693246f711230cbe52962edac273e47900b69c9b Mon Sep 17 00:00:00 2001 From: Ariel Antonitis Date: Wed, 24 Jun 2020 01:45:49 -0400 Subject: [PATCH 030/241] Added Unown OW forms. --- extract_sprites.py | 40 +--- .../object_events/pics/pokemon/unown_a.png | Bin 0 -> 280 bytes .../object_events/pics/pokemon/unown_b.png | Bin 0 -> 299 bytes .../object_events/pics/pokemon/unown_c.png | Bin 0 -> 348 bytes .../object_events/pics/pokemon/unown_d.png | Bin 0 -> 330 bytes .../object_events/pics/pokemon/unown_e.png | Bin 0 -> 305 bytes .../pics/pokemon/unown_exclamation.png | Bin 0 -> 2556 bytes .../object_events/pics/pokemon/unown_f.png | Bin 0 -> 301 bytes .../object_events/pics/pokemon/unown_g.png | Bin 0 -> 316 bytes .../object_events/pics/pokemon/unown_h.png | Bin 0 -> 321 bytes .../object_events/pics/pokemon/unown_i.png | Bin 0 -> 263 bytes .../object_events/pics/pokemon/unown_j.png | Bin 0 -> 286 bytes .../object_events/pics/pokemon/unown_k.png | Bin 0 -> 289 bytes .../object_events/pics/pokemon/unown_l.png | Bin 0 -> 294 bytes .../object_events/pics/pokemon/unown_m.png | Bin 0 -> 319 bytes .../object_events/pics/pokemon/unown_n.png | Bin 0 -> 323 bytes .../object_events/pics/pokemon/unown_o.png | Bin 0 -> 317 bytes .../object_events/pics/pokemon/unown_p.png | Bin 0 -> 278 bytes .../object_events/pics/pokemon/unown_q.png | Bin 0 -> 313 bytes .../pics/pokemon/unown_question.png | Bin 0 -> 2741 bytes .../object_events/pics/pokemon/unown_r.png | Bin 0 -> 276 bytes .../object_events/pics/pokemon/unown_s.png | Bin 0 -> 322 bytes .../object_events/pics/pokemon/unown_t.png | Bin 0 -> 260 bytes .../object_events/pics/pokemon/unown_u.png | Bin 0 -> 299 bytes .../object_events/pics/pokemon/unown_v.png | Bin 0 -> 272 bytes .../object_events/pics/pokemon/unown_w.png | Bin 0 -> 271 bytes .../object_events/pics/pokemon/unown_x.png | Bin 0 -> 281 bytes .../object_events/pics/pokemon/unown_y.png | Bin 0 -> 287 bytes .../object_events/pics/pokemon/unown_z.png | Bin 0 -> 313 bytes spritesheet_rules.mk | 84 +++++++ .../object_events/object_event_graphics.h | 28 +++ .../object_event_graphics_info.h | 28 +++ .../object_events/object_event_pic_tables.h | 224 ++++++++++++++++++ 33 files changed, 369 insertions(+), 35 deletions(-) create mode 100644 graphics/object_events/pics/pokemon/unown_a.png create mode 100644 graphics/object_events/pics/pokemon/unown_b.png create mode 100644 graphics/object_events/pics/pokemon/unown_c.png create mode 100644 graphics/object_events/pics/pokemon/unown_d.png create mode 100644 graphics/object_events/pics/pokemon/unown_e.png create mode 100644 graphics/object_events/pics/pokemon/unown_exclamation.png create mode 100644 graphics/object_events/pics/pokemon/unown_f.png create mode 100644 graphics/object_events/pics/pokemon/unown_g.png create mode 100644 graphics/object_events/pics/pokemon/unown_h.png create mode 100644 graphics/object_events/pics/pokemon/unown_i.png create mode 100644 graphics/object_events/pics/pokemon/unown_j.png create mode 100644 graphics/object_events/pics/pokemon/unown_k.png create mode 100644 graphics/object_events/pics/pokemon/unown_l.png create mode 100644 graphics/object_events/pics/pokemon/unown_m.png create mode 100644 graphics/object_events/pics/pokemon/unown_n.png create mode 100644 graphics/object_events/pics/pokemon/unown_o.png create mode 100644 graphics/object_events/pics/pokemon/unown_p.png create mode 100644 graphics/object_events/pics/pokemon/unown_q.png create mode 100644 graphics/object_events/pics/pokemon/unown_question.png create mode 100644 graphics/object_events/pics/pokemon/unown_r.png create mode 100644 graphics/object_events/pics/pokemon/unown_s.png create mode 100644 graphics/object_events/pics/pokemon/unown_t.png create mode 100644 graphics/object_events/pics/pokemon/unown_u.png create mode 100644 graphics/object_events/pics/pokemon/unown_v.png create mode 100644 graphics/object_events/pics/pokemon/unown_w.png create mode 100644 graphics/object_events/pics/pokemon/unown_x.png create mode 100644 graphics/object_events/pics/pokemon/unown_y.png create mode 100644 graphics/object_events/pics/pokemon/unown_z.png diff --git a/extract_sprites.py b/extract_sprites.py index 74ecdb188..86a2d7c3e 100644 --- a/extract_sprites.py +++ b/extract_sprites.py @@ -31,13 +31,12 @@ def extract_sprites(spritesheet): offset += 1 -def stack_sprite(index, path): +def stack_sprite(name, path): joinp = os.path.join - name = f'{index:03d}.png' 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, f'{index_to_name[index]}.png') + output = joinp(path, name) subprocess.run(['convert'] + frames + ['+append', output], check=True) print(f'Stacked {output}') @@ -85,14 +84,14 @@ def paletteify(path, output_path=None): 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 = png.Reader(joinp(PKMN_GRAPHICS, species.split('_')[0], species.split('_')[1], '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) + apply_palette(joinp(PKMN_GRAPHICS, species.split('_')[0], species.split('_')[1], 'anim_front.png'), output_path, output_path) # Sprites from https://veekun.com/dex/downloads @@ -101,33 +100,4 @@ if __name__ == '__main__': if args: paletteify(args[0]) else: - f0 = open('graphics_info.h', 'w', buffering=1) - f1 = open('pic_tables.h', 'w', buffering=1) - f2 = open('event_graphics.h', 'w', buffering=1) - f3 = open('spritesheet_extra.mk', 'w', buffering=1) - for index in range(1, 386+1): - stack_sprite(index, 'overworld') - try: - species = index_to_name[index] - path = os.path.join('overworld', f'{species}.png') - output_path = os.path.join('graphics', 'object_events', 'pics', 'pokemon', f'{species}.png') - paletteify(path, output_path) - except Exception as e: - print(e.__class__.__name__, e, file=sys.stderr) - continue - d = 32 if species not in {'steelix', 'wailord', 'kyogre', 'groudon', 'rayquaza', 'lugia', 'ho_oh'} else 64 - line = f'[SPECIES_{species.upper()}] = {{0xFFFF, OBJ_EVENT_PAL_TAG_DYNAMIC, OBJ_EVENT_PAL_TAG_NONE, {d*16}, {d}, {d}, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_{d}x{d}, gObjectEventSpriteOamTables_{d}x{d}, gObjectEventImageAnimTable_Following, gObjectEventPicTable_{species.capitalize()}, gDummySpriteAffineAnimTable}},' - f0.write(line + '\n') - lines = [f'const struct SpriteFrameImage gObjectEventPicTable_{species.capitalize()}[] = {{'] - lines += [f' overworld_frame(gObjectEventPic_{species.capitalize()}, 4, 4, {frame}),' for frame in range(6)] - lines.append('};') - f1.write('\n'.join(lines) + '\n') - line = f'const u32 gObjectEventPic_{species.capitalize()}[] = INCBIN_U32("graphics/object_events/pics/pokemon/{species}.4bpp");' - f2.write(line + '\n') - lines = [f'$(OBJEVENTGFXDIR)/pokemon/{species}.4bpp: %.4bpp: %.png\n', - f'\t$(GFX) $< $@ -mwidth {int(d/8)} -mheight {int(d/8)}\n\n'] - f3.write(''.join(lines)) - f0.close() - f1.close() - f2.close() - f3.close() + stack_sprite('201-question.png', 'overworld') diff --git a/graphics/object_events/pics/pokemon/unown_a.png b/graphics/object_events/pics/pokemon/unown_a.png new file mode 100644 index 0000000000000000000000000000000000000000..7646b5fe82c31e0b3a5921f3ba49bf8b91050309 GIT binary patch literal 280 zcmeAS@N?(olHy`uVBq!ia0vp^2Y^_Cg&9b0+m^KrNErn9gt(qPyXHT`e+asF@819a z{{;jDmMmFPTwEL!6a<%oGbZzX{R-5(*we)^q+-t7DI2*C8}PW8{ygpUBE5p6efRV_ zAmjQ?CC-vk-?oN6o#ox{6Qy+~c`XfEDZMggj`!-1O*doaJ!9Y9@bt{?ra*qC1L@a= zgAWw37aVxHP;J|Wg{_v%Q{Mh{V$gZf)gaTrdn$VYtHpyCd@==M3K7>nACZlGAN;ra5L zYZ4MKo1MAYx#Zn!NyY_nQjD?;dqUQJXJg=El9|B#hEsr}mCu9Gb@}<)qp^|inWb58 zFtPlSv0?sFxLa9cf_D78Vzw9MxArpzd@=vb!!z#y<3@qThvppdk$)yO&tv+**KvHl e^xxh4+||GM=Cn7xm?;DF0fVQjpUXO@geCw2sD2ax literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/unown_c.png b/graphics/object_events/pics/pokemon/unown_c.png new file mode 100644 index 0000000000000000000000000000000000000000..d7f631f31e0ee3a0e8a55a1d8370d114d9fa8881 GIT binary patch literal 348 zcmeAS@N?(olHy`uVBq!ia0vp^2Y^_Cg&9b0+m^KrNErn9gt(qPyXHT`e+asF@819a z{{;jDmMmFPTwEL!6a<%oGbZzX{R-6k+|$J|q+-t7DS>>440xP>Po3=Bk^CijQx(Gz zL4o6HIYKJuuC2QzzG&Kyf}r2ItP?L?0D}J>4Z**e|L${aTKjIcQ=ENu>)O43tNu2X z-%(i+P%<;Me!bQ?!vOggKTjCkV^)1FcTL!UX;1rq+-t7D~5cB6?j+!{O9O&Rq?dF=w=SF zb-J1?ZubAZn1{9Nq1nzKnptwTB^~V&)z%YnD7R4j{(QM1!^xfd7#MXXu?rjvmT>Vi zkvhPTaqraSS)6OGwu)cKVR`iR3{Qo@Q?oohepdI&n|WI_*b-UmJh}QBOKjeKU}#=( z|IUA5)^r9LIROKPN%QYFHvDI9%RN6=c1!T;!uZx3T>XwLRn*#|8^4>EYV L`njxgN@xNADrbuh literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/unown_e.png b/graphics/object_events/pics/pokemon/unown_e.png new file mode 100644 index 0000000000000000000000000000000000000000..741a5ef42e1427da054fe295f6bf44ff6257375a GIT binary patch literal 305 zcmeAS@N?(olHy`uVBq!ia0vp^2Y^_Cg&9b0+m^KrNErn9gt(qPyXHT`e+asF@819a z{{;jDmMmFPTwEL!6a<%oGbZzX{R-5($J50zq+-t7DUMu+4R}~;Kb>}ZX>n!0P^s++0bV-_;Bameose=Tt%ES_Ba+HURpA!PC{xWt~$(69DW2e}Di0 literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/unown_exclamation.png b/graphics/object_events/pics/pokemon/unown_exclamation.png new file mode 100644 index 0000000000000000000000000000000000000000..4271c7ab99a223d67cfe3431f957ca0a2ffc1213 GIT binary patch literal 2556 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 A;s5{u literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/unown_i.png b/graphics/object_events/pics/pokemon/unown_i.png new file mode 100644 index 0000000000000000000000000000000000000000..39aa3b8572199448f2de292cce8c0766a7b9300b GIT binary patch literal 263 zcmeAS@N?(olHy`uVBq!ia0vp^2Y^_Cg&9b0+m^KrNErn9gt(qPyXHT`e+asF@819a z{{;jDmMmFPTwEL!6a<%oGbZzX{R-4O$$#$Ar5WnvEgPA% z!x>n6cF#yid=_(7*TLiaQPG44i=-~F6(l`W6=3ALQN_&qhE?GBTl+x&uwO3s_$IJ& uT(PVWZeU)$K-%EWdG-g-O>XJ0;Xk=N@U+L_x#>XHF?hQAxvX(@qeEzV?bZ+Zeg1ZjqVB3 zYLgujf-g5X@H6Ot-Zev%F<^@}LtMTOgVpS*3<8XNFBl%gDl*+?>f(F+_sH5c-)H_T zZqRjDFu!>@gG~bKc}6FuAJUhmE?{SvVz&tTAG!`#cr_2zyf)7FJd zf2|J`EHX}busS~W;@;*U$MqeJ=e=EvlkOa3e$l{W8UBF3;q2dk41ecr`^J8aNjED- UdaHnQ3((yRp00i_>zopr05D8_e*gdg literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/unown_l.png b/graphics/object_events/pics/pokemon/unown_l.png new file mode 100644 index 0000000000000000000000000000000000000000..b11096a1ab728da126eb4716749078ff2a215c94 GIT binary patch literal 294 zcmeAS@N?(olHy`uVBq!ia0vp^2Y^_Cg&9b0+m^KrNErn9gt(qPyXHT`e+asF@819a z{{;jDmMmFPTwEL!6a<%oGbZzX{R-5((bL5-q+-t7D+f6b8}P6O%(aQskUiY~;Uj~p za*NM|%Gb$X>`xSOw>JIr-L^PgMm=q&kJ{vue{_~EI;I^UST4cvd}BN-W8s^04zpVd z&AF9U4G!5KWLZ)gUTw%GdQMmD#yADIxj$6$<92yK)FHJa@&v^LLj=mEUzt-i| z$$j9JxKjDSRGPuYAnOC8K=a?z9nYULu9BR=>Ki9@U+O!emZa9pT%$aE?}L{Xd+1&PNZ02V1?tO7M}3L(p`+{$t9Hq`$Bl{d=M>QUtn@2e_jaC`sU|3CgtjWb=^GFemo`ct5<7(8A5T-G@yGywqji;t)P literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/unown_n.png b/graphics/object_events/pics/pokemon/unown_n.png new file mode 100644 index 0000000000000000000000000000000000000000..8b39392831594ab8b339d753942688f6a021164c GIT binary patch literal 323 zcmeAS@N?(olHy`uVBq!ia0vp^2Y^_Cg&9b0+m^KrNErn9gt(qPyXHT`e+asF@819a z{{;jDmMmFPTwEL!6a<%oGbZzX{R-53&eO#)q+-t7D}h{x40zZc*nCZKwsDhp%ea43 zxkFuG&)S(?-v9KLIt#S?;cqTcjkmrg)zC420)AA0q2>kFo@X^brM*IvGR zO-yHl6?fRVIib!hOQ)V$p|^wa#w_7@{YXXzqm$L&4yLZ)5184<DP!>VI`4~|8O$bJjXv|gM<-6J zZusU=`@`UnNSbBDbH+b40{n5}X+IecJXok3e(3FN-6?aTCp>3}d2fD?TW7-k>UBk| za~MBZiA5}6mH7XgOXhbP0l+XkKtCouE literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/unown_p.png b/graphics/object_events/pics/pokemon/unown_p.png new file mode 100644 index 0000000000000000000000000000000000000000..f3699ebdcdbaf109114d2873dd3c3bce8692e251 GIT binary patch literal 278 zcmeAS@N?(olHy`uVBq!ia0vp^2Y^_Cg&9b0+m^KrNErn9gt(qPyXHT`e+asF@819a z{{;jDmMmFPTwEL!6a<%oGbZzX{R-5((9^{+q+-t7D+f6n40u>C%(0r;k^DtrKA%FL zg5QHZRf1>!Pf(iI@+bP%q;Rk3%|2?APo}(^(j~Rt!S&8UW|`mLL|BgOlU2Nt(af_g zv52AZ+5>Bj6AV{VojIPN6{!+JsLH=d%boFyt I=akR{0Oh`QQ~&?~ literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/unown_q.png b/graphics/object_events/pics/pokemon/unown_q.png new file mode 100644 index 0000000000000000000000000000000000000000..1e2bc7f46f774d5d50ec9383ffc3a3cd5f1b8ea1 GIT binary patch literal 313 zcmeAS@N?(olHy`uVBq!ia0vp^2Y^_Cg&9b0+m^KrNErn9gt(qPyXHT`e+asF@819a z{{;jDmMmFPTwEL!6a<%oGbZzX{R-53#M8wwq+-t7DF^uuDG0cH-xBY(YW_uM<3o3U zu(o~K?5clPHYszfoX?EgB?nMv7Lz}u^|2h zi&LvSL)Vo)8`j4Q_kDOO-TLG-y9&1kZ@0hdR%xMc%s;ZUd!9$XKXkTXs;P8YKI4lY r=fWSqoB2-Rugrmb|JNUXE88;UC;L@9PFWBI^bdoltDnm{r-UW|^+Au# literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/unown_question.png b/graphics/object_events/pics/pokemon/unown_question.png new file mode 100644 index 0000000000000000000000000000000000000000..e4d210288364040bd08298e5864d79e4640eac28 GIT binary patch literal 2741 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 literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/unown_r.png b/graphics/object_events/pics/pokemon/unown_r.png new file mode 100644 index 0000000000000000000000000000000000000000..70194b27cd4be0cca5fab171251e248211bc05a3 GIT binary patch literal 276 zcmeAS@N?(olHy`uVBq!ia0vp^2Y^_Cg&9b0+m^KrNErn9gt(qPyXHT`e+asF@819a z{{;jDmMmFPTwEL!6a<%oGbZzX{R-4O-_yl0q+-t7D~4Q$4R}}se61oiY}?qCOByCA zx5(|j*R;=}>ve#}i+rbN_SJ@gOM_O1Xr(V%`_}Sxz5F&tuFbZZXEIM{Jwo873F=^?0+g zCZAl*5P6_!@m&VKJxnbMj2H446asz}GyI?T=JW5xH4HwULDwJLpBxKxDubu1pUXO@ GgeCygLvnWj literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/unown_s.png b/graphics/object_events/pics/pokemon/unown_s.png new file mode 100644 index 0000000000000000000000000000000000000000..2dacced84728e9d77dcc101e3cc21aa475efd128 GIT binary patch literal 322 zcmeAS@N?(olHy`uVBq!ia0vp^2Y^_Cg&9b0+m^KrNErn9gt(qPyXHT`e+asF@819a z{{;jDmMmFPTwEL!6a<%oGbZzX{R-53*3-o?q+-t7D~5cB6?hy1{paYcs^V!op;UcU z*~QZFT(sLC*@u_>LO-TS|6vjmoN1VRtjC^<_m?L7-@pb-#%HayOQe`01Q}0Q-f!MI zrCK}ZI%D)U?msnWXWwO-!0@R=t~y##qv}n%I1hv7>AhsE?7P5P7{laMHLf!9e0P`_HB>WtvP4>w~#@agGoVxd250f!^N)&JU`kmKdY%= zxzBLt{K1BI#|u7QQf6Q^-}K*7p5e}c#yj#)>}B*HnkVNU)!v;4^caJutDnm{r-UW| DD5Z*s literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/unown_t.png b/graphics/object_events/pics/pokemon/unown_t.png new file mode 100644 index 0000000000000000000000000000000000000000..cb476bf5ee9217da3d6fe97088d88cdfb6b45da4 GIT binary patch literal 260 zcmeAS@N?(olHy`uVBq!ia0vp^2Y^_Cg&9b0+m^KrNErn9gt(qPyXHT`e+asF@819a z{{;jDmMmFPTwEL!6a<%oGbZzX{R-6E@9E+gQZeW4l!KfN1_CVaQ&Syvl=&?m#p^h( zao7<3ak=!4P-m8h-^}N{QJLg&gTe~DWM4fP~dSU literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/unown_u.png b/graphics/object_events/pics/pokemon/unown_u.png new file mode 100644 index 0000000000000000000000000000000000000000..2bde3485416f3bfe5c014a55a657b72eef7ce422 GIT binary patch literal 299 zcmeAS@N?(olHy`uVBq!ia0vp^2Y^_Cg&9b0+m^KrNErn9gt(qPyXHT`e+asF@819a z{{;jDmMmFPTwEL!6a<%oGbZzX{R%R|)5S5QV$Rzsj$DTgcvwm=opyR@T*J{_tzYZ( za`WmZLD_dB+8h=xIO{35Iays`qL13-lPPr)Q;K7h5B75HFnBaIP3+OvFV-sz9?d;) ze!{MpZnNxt7c5>ic$X-@__gD4@Bt?coxaH%gn!&*iMY)qwyEKnB%|o24{IDY#GHD- zmQ>puF2?ok?}3FMxXTZ5HtK53x+(5vBXVPhZF{RCKdTq}E&hmSl^QpsY}~(3ZQJwP fwB`S@|0kt2UgjOoYCg*d^Z|pXtDnm{r-UW|v+Rdd literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/unown_v.png b/graphics/object_events/pics/pokemon/unown_v.png new file mode 100644 index 0000000000000000000000000000000000000000..0bb8dba96c8ee604ff3aa40de9017de606116df2 GIT binary patch literal 272 zcmeAS@N?(olHy`uVBq!ia0vp^2Y^_Cg&9b0+m^KrNErn9gt(qPyXHT`e+asF@819a z{{;jDmMmFPTwEL!6a<%oGbZzX{R-4O+tbA{q+-t7DTZ7}6hvIs+C)Ya@pK!^uzMqT zNUqxV`8oCa6JA{hy8L=lbkFg;m~F#Umc0eJweiu3Pj9y5HqQ4{ zc`~mx%%SGZw)h6|klO54hT}ixuRUNO`%}x?@!uO~9oEuW-KSURX*eZJ03g}R`FT?=+g`BU4Li3lI3`I-mkWf|CD&>swn%P;v&XCXEJ!Y`njxgN@xNA DHgk8n literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/unown_w.png b/graphics/object_events/pics/pokemon/unown_w.png new file mode 100644 index 0000000000000000000000000000000000000000..d49a4cf96cb94452d43965c5f6cc87e14eefb037 GIT binary patch literal 271 zcmeAS@N?(olHy`uVBq!ia0vp^2Y^_Cg&9b0+m^KrNErn9gt(qPyXHT`e+asF@819a z{{;jDmMmFPTwEL!6a<%oGbZzX{R-4O%hSa%q+-t7DTZ7P20X6DPg9iSl%0RR(35kt z*>+XaEk~zI;fdwmWq;(YJVaO=1z6+{>HqGGyZ1F&k(<})f_rnwnY&KX0k0)%Vhc*x z^o?IPys^44^S;K5*?bz6|JL2rRalZ4;=X4$*MYWq??XfioGyLexO3MbweuqPG*3uR zzatV+&duSg?Yf=&u-&Hc2P`&vAIuB({JQ@|K1|;>Hu%4H{~w?$89ZJ6T-G@yGywoj CD|8+J literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/unown_x.png b/graphics/object_events/pics/pokemon/unown_x.png new file mode 100644 index 0000000000000000000000000000000000000000..e1621d278bd6be49e0b8f4b04d1f21761dbceecb GIT binary patch literal 281 zcmeAS@N?(olHy`uVBq!ia0vp^2Y^_Cg&9b0+m^KrNErn9gt(qPyXHT`e+asF@819a z{{;jDmMmFPTwEL!6a<%oGbZzX{R-5(#M8wwq+-t7$%b5q4R~Blf2OE?k&ruc{HAxm zKvmNm^H*t}3R^v=HN~A!_`g7%-DQf3=OmSr*BkC%I`@3eucoaF*9J4+H8|DTc1b(& z=Kb66I2PaG@`;uI+?nUWeE2Nqz6D>d3(phiQQpE7I=zoC(0ienM50ar@752i8Um*O zJo3lro%*Nw`3Y)kPOmk0_-&JvU|2NeIMbwV=6?>?>hjDjZ@j60#30BUy#D&3mMuW{ OGI+ZBxvXlh2G5yhHYX9TR;Pv6JzhQjQXLm8y+O@0JGh}W&M$<4-@$I* z??i^ZG0aouPb+I`4Oue7vXl40pPNURyrwctkcFtX) zzq&Toj_(Dxz>4AzdJODw2XhZR{`a1tZEo)`Zik3R3%)ZJ>~`C`YuUNd+R1+FtCFQ- TCeB<9bTxygtDnm{r-UW|OrU*A literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/unown_z.png b/graphics/object_events/pics/pokemon/unown_z.png new file mode 100644 index 0000000000000000000000000000000000000000..e2097128e7d62e1d276f67ebf23ff60753af5c88 GIT binary patch literal 313 zcmeAS@N?(olHy`uVBq!ia0vp^2Y^_Cg&9b0+m^KrNErn9gt(qPyXHT`e+asF@819a z{{;jDmMmFPTwEL!6a<%oGbZzX{R-53#M8wwq+-t7Db{>UhCD9YKb;KgNDf%zw$NRM zv9QTj|H4Ca4Yp})nwNi0t}GNvoz(^cbxSWS%$oR%Pc%WdVIvbm!eJ(6xnSnTHP#at zj(um1b)Lq1Vj{0X$$^a;)(0NFR!x6!!m3eq!P(y>%M5y!*=){V!Qb(;#*2Z$*=zl= z22%%bBZdnM9rp7MG(A}h?3v~JG{xozvT_)1bJ-uq_)5_H*tVq) rmX__l&v2uh$KhT5$J=5b Date: Wed, 24 Jun 2020 16:10:10 -0400 Subject: [PATCH 031/241] Refactored and added support for shiny followers. --- include/global.fieldmap.h | 7 +++- src/event_object_movement.c | 82 ++++++++++++++++++++----------------- 2 files changed, 51 insertions(+), 38 deletions(-) diff --git a/include/global.fieldmap.h b/include/global.fieldmap.h index f72b07c20..36c050f0d 100644 --- a/include/global.fieldmap.h +++ b/include/global.fieldmap.h @@ -209,7 +209,12 @@ struct ObjectEvent /*0x21*/ u8 directionSequenceIndex; /*0x22*/ union __attribute__((packed)) { u8 playerCopyableMovement; - u16 species; + struct __attribute__((packed)) { + u16 species:11; // 11 bits for 2048 species + u16 form:4; + u16 shiny:1; + } mon; + u16 asU16; } extra; /*size = 0x24*/ }; diff --git a/src/event_object_movement.c b/src/event_object_movement.c index 4b230b143..7c208b5ad 100644 --- a/src/event_object_movement.c +++ b/src/event_object_movement.c @@ -144,7 +144,7 @@ static bool8 AnimateSpriteInFigure8(struct Sprite *sprite); static void UpdateObjectEventSprite(struct Sprite *); static void UpdateObjectEventSpriteSubpriorityAndVisibility(struct Sprite *); u8 GetDirectionToFace(s16 x1, s16 y1, s16 x2, s16 y2); -static void FollowerSetGraphics(struct ObjectEvent *, u16); +static void FollowerSetGraphics(struct ObjectEvent *, u16, u8, bool8); static void ObjectEventSetGraphics(struct ObjectEvent *, const struct ObjectEventGraphicsInfo *); const u8 gReflectionEffectPaletteMap[] = {1, 1, 6, 7, 8, 9, 6, 7, 8, 9, 11, 11, 0, 0, 0, 0}; @@ -1438,8 +1438,17 @@ TrySpawnObjectEventTemplate(struct ObjectEventTemplate *objectEventTemplate, // Set species based on script header if (objectEventTemplate->graphicsId == OBJ_EVENT_GFX_OW_MON && objectEventTemplate->script) { const u8 *script = objectEventTemplate->script; - if (script[0] == 0x7d) // bufferspeciesname - FollowerSetGraphics(&gObjectEvents[objectEventId], script[2] | script[3] << 8); + if (script[0] == 0x7d) { // bufferspeciesname + u16 species; + u8 form; + bool8 shiny; + gObjectEvents[objectEventId].extra.asU16 = script[2] | script[3] << 8; + species = gObjectEvents[objectEventId].extra.mon.species; + form = gObjectEvents[objectEventId].extra.mon.form; + shiny = gObjectEvents[objectEventId].extra.mon.shiny; + FollowerSetGraphics(&gObjectEvents[objectEventId], species, form, shiny); + } + } return objectEventId; @@ -1588,12 +1597,10 @@ u8 CreateObjectSprite(u8 graphicsId, u8 a1, s16 x, s16 y, u8 z, u8 direction) } struct Pokemon * GetFirstLiveMon(void) { // Return address of first conscious party mon or NULL - struct Pokemon *mon; u8 i; for (i=0; i 0 && !(gPlayerParty[i].box.isEgg || gPlayerParty[i].box.isBadEgg)) { + if (gPlayerParty[i].hp > 0 && !(gPlayerParty[i].box.isEgg || gPlayerParty[i].box.isBadEgg)) return &gPlayerParty[i]; - } } return NULL; } @@ -1601,29 +1608,30 @@ struct Pokemon * GetFirstLiveMon(void) { // Return address of first conscious pa 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) { + if (gObjectEvents[i].localId == OBJ_EVENT_ID_FOLLOWER) return &gObjectEvents[i]; - } } return NULL; } // Return graphicsInfo for a pokemon species -static const struct ObjectEventGraphicsInfo * SpeciesToGraphicsInfo(u16 species) { +static const struct ObjectEventGraphicsInfo * SpeciesToGraphicsInfo(u16 species, u8 form) { const struct ObjectEventGraphicsInfo *graphicsInfo = &gPokemonObjectGraphics[species]; return graphicsInfo->tileTag != 0xFFFF ? &gObjectEventGraphicsInfo_Dusclops : graphicsInfo; } // Set graphics & sprite for a follower object event by species -static void FollowerSetGraphics(struct ObjectEvent *objectEvent, u16 species) { - const struct ObjectEventGraphicsInfo *graphicsInfo = SpeciesToGraphicsInfo(species); +static void FollowerSetGraphics(struct ObjectEvent *objectEvent, u16 species, u8 form, bool8 shiny) { + const struct ObjectEventGraphicsInfo *graphicsInfo = SpeciesToGraphicsInfo(species, form); objectEvent->graphicsId = OBJ_EVENT_GFX_OW_MON; - ObjectEventSetGraphics(objectEvent, SpeciesToGraphicsInfo(species)); + ObjectEventSetGraphics(objectEvent, graphicsInfo); objectEvent->graphicsId = OBJ_EVENT_GFX_OW_MON; - objectEvent->extra.species = species; + objectEvent->extra.mon.species = species; + objectEvent->extra.mon.form = form; + objectEvent->extra.mon.shiny = shiny; if (graphicsInfo->paletteTag1 == OBJ_EVENT_PAL_TAG_DYNAMIC) { // Use palette from species palette table struct Sprite *sprite = &gSprites[objectEvent->spriteId]; - const struct CompressedSpritePalette *spritePalette = &gMonPaletteTable[species]; + const struct CompressedSpritePalette *spritePalette = &(shiny ? gMonShinyPaletteTable : gMonPaletteTable)[species]; // Free palette if otherwise unused sprite->inUse = FALSE; FieldEffectFreePaletteIfUnused(sprite->oam.paletteNum); @@ -1634,13 +1642,14 @@ static void FollowerSetGraphics(struct ObjectEvent *objectEvent, u16 species) { } void UpdateFollowingPokemon(void) { // Update following pokemon if any - struct ObjectEvent *objectEvent = GetFollowerObject(); + struct ObjectEvent *objEvent = GetFollowerObject(); struct Pokemon *mon = GetFirstLiveMon(); struct Sprite *sprite; u16 species; + bool8 shiny; // Avoid spawning large (64x64) follower pokemon inside buildings - if (mon && !(gMapHeader.mapType == MAP_TYPE_INDOOR && SpeciesToGraphicsInfo(GetMonData(mon, MON_DATA_SPECIES))->width == 64)) { - if (objectEvent == NULL) { // Spawn follower + if (mon && !(gMapHeader.mapType == MAP_TYPE_INDOOR && SpeciesToGraphicsInfo(GetMonData(mon, MON_DATA_SPECIES), 0)->width == 64)) { + if (objEvent == NULL) { // Spawn follower struct ObjectEventTemplate template = { .localId = OBJ_EVENT_ID_FOLLOWER, .graphicsId = OBJ_EVENT_GFX_OW_MON, @@ -1649,18 +1658,20 @@ void UpdateFollowingPokemon(void) { // Update following pokemon if any .elevation = 3, .movementType = MOVEMENT_TYPE_FOLLOW_PLAYER, }; - objectEvent = &gObjectEvents[SpawnSpecialObjectEvent(&template)]; - objectEvent->invisible = TRUE; + objEvent = &gObjectEvents[SpawnSpecialObjectEvent(&template)]; + objEvent->invisible = TRUE; } - sprite = &gSprites[objectEvent->spriteId]; + sprite = &gSprites[objEvent->spriteId]; species = GetMonData(mon, MON_DATA_SPECIES); - if (species != objectEvent->extra.species) { // Move to player and set invisible - MoveObjectEventToMapCoords(objectEvent, gObjectEvents[gPlayerAvatar.objectEventId].currentCoords.x, gObjectEvents[gPlayerAvatar.objectEventId].currentCoords.y); - objectEvent->invisible = TRUE; + shiny = IsMonShiny(mon); + if (species != objEvent->extra.mon.species || shiny != objEvent->extra.mon.shiny) { // Move to player and set invisible + MoveObjectEventToMapCoords(objEvent, gObjectEvents[gPlayerAvatar.objectEventId].currentCoords.x, gObjectEvents[gPlayerAvatar.objectEventId].currentCoords.y); + objEvent->invisible = TRUE; } - FollowerSetGraphics(objectEvent, species); + FollowerSetGraphics(objEvent, species, 0, shiny); sprite->data[6] = 0; // set animation data - objectEvent->extra.species = sprite->data[7] = species; // set species + objEvent->extra.mon.species = species; + objEvent->extra.mon.shiny = shiny; } else { RemoveFollowingPokemon(); } @@ -1685,19 +1696,19 @@ bool8 ScrFunc_getfolloweraction(struct ScriptContext *ctx) // Essentially a big u16 value; u16 species; u32 behavior; - struct ObjectEvent *objEvent = &gObjectEvents[GetObjectEventIdByLocalIdAndMap(OBJ_EVENT_ID_FOLLOWER, gSaveBlock1Ptr->location.mapNum, gSaveBlock1Ptr->location.mapGroup)]; - struct Pokemon *follower = GetFirstLiveMon(); - if (follower == NULL) { + struct ObjectEvent *objEvent = GetFollowerObject(); + struct Pokemon *mon = GetFirstLiveMon(); + if (mon == NULL) { ScriptCall(ctx, EventScript_FollowerLovesYou); return FALSE; } behavior = MapGridGetMetatileBehaviorAt(objEvent->currentCoords.x, objEvent->currentCoords.y); - species = GetMonData(follower, MON_DATA_SPECIES); + species = GetMonData(mon, MON_DATA_SPECIES); if (MetatileBehavior_IsPuddle(behavior) || MetatileBehavior_IsShallowFlowingWater(behavior)) { if (gBaseStats[species].type1 == TYPE_FIRE || gBaseStats[species].type2 == TYPE_FIRE) { ScriptCall(ctx, EventScript_FollowerHasWetFeet); return FALSE; - } else if (SpeciesToGraphicsInfo(species)->tracks) { // if follower leaves tracks + } else if (SpeciesToGraphicsInfo(species, 0)->tracks) { // if follower is grounded ScriptCall(ctx, EventScript_FollowerSplashesAbout); return FALSE; } @@ -1857,7 +1868,7 @@ static void sub_808E1B8(u8 objectEventId, s16 x, s16 y) sprite->data[0] = objectEventId; objectEvent->spriteId = spriteId; if (objectEvent->graphicsId == OBJ_EVENT_GFX_OW_MON) { // Set pokemon graphics - FollowerSetGraphics(objectEvent, objectEvent->extra.species); + FollowerSetGraphics(objectEvent, objectEvent->extra.mon.species, objectEvent->extra.mon.form, objectEvent->extra.mon.shiny); } if (!objectEvent->inanimate && objectEvent->movementType != MOVEMENT_TYPE_PLAYER) { @@ -6248,14 +6259,11 @@ bool8 MovementAction_ExitPokeball_Step1(struct ObjectEvent *objectEvent, struct return TRUE; // Restore graphicsId and set palette to white } else if ((duration == 0 && sprite->data[3] == 3) || (duration == 1 && sprite->data[3] == 7)) { - FollowerSetGraphics(objectEvent, sprite->data[7]); - sprite->data[6] = (sprite->oam.paletteNum << 4) | (sprite->data[6] & 0xFF0F); // Save old paletteNum + FollowerSetGraphics(objectEvent, objectEvent->extra.mon.species, objectEvent->extra.mon.form, objectEvent->extra.mon.shiny); LoadWhiteFlashPalette(objectEvent, sprite); // Restore original palette } else if ((duration == 0 && sprite->data[3] == 1) || (duration == 1 && sprite->data[3] == 3)) { - FollowerSetGraphics(objectEvent, sprite->data[7]); - // FreeSpritePaletteByTag(OBJ_EVENT_PAL_TAG_NONE-1); - // sprite->oam.paletteNum = (sprite->data[6] >> 4) & 0xF; + FollowerSetGraphics(objectEvent, objectEvent->extra.mon.species, objectEvent->extra.mon.form, objectEvent->extra.mon.shiny); } return FALSE; } @@ -6283,7 +6291,7 @@ bool8 MovementAction_EnterPokeball_Step1(struct ObjectEvent *objectEvent, struct bool8 MovementAction_EnterPokeball_Step2(struct ObjectEvent *objectEvent, struct Sprite *sprite) { - FollowerSetGraphics(objectEvent, sprite->data[7]); + FollowerSetGraphics(objectEvent, objectEvent->extra.mon.species, objectEvent->extra.mon.form, objectEvent->extra.mon.shiny); objectEvent->invisible = TRUE; sprite->data[1] = 0; sprite->data[6] = 0; From c9834ba967597811d8656ee47d71d8a92454384c Mon Sep 17 00:00:00 2001 From: Ariel Antonitis Date: Wed, 24 Jun 2020 17:28:41 -0400 Subject: [PATCH 032/241] Changed tracks behavior for airborne followers. --- data/scripts/follower.inc | 4 +- .../object_event_graphics_info.h | 178 +++++++++--------- .../object_events/object_event_pic_tables.h | 84 ++++----- src/event_object_movement.c | 4 +- 4 files changed, 135 insertions(+), 135 deletions(-) diff --git a/data/scripts/follower.inc b/data/scripts/follower.inc index 0f467c1e7..877983112 100644 --- a/data/scripts/follower.inc +++ b/data/scripts/follower.inc @@ -8,13 +8,13 @@ gText_FollowerDefault:: .string "ERROR 404: Script not found.$" gText_FollowerHasWetFeet:: - .string "{STR_VAR_1} seems unhappy about getting\nits feet wet.$" + .string "{STR_VAR_1} frowns at you. It shuffles\nits wet feet.$" gText_FollowerSplashesAround:: .string "{STR_VAR_1} splashes around happily!$" gText_WantsToFly:: - .string "{STR_VAR_1} looks adventurous.\nWould you like to use FLY?$" + .string "{STR_VAR_1} looks up at the\nsky restlessly.\pWould you like to use FLY?$" .macro playfirstmoncry callfunc ScrFunc_playfirstmoncry diff --git a/src/data/object_events/object_event_graphics_info.h b/src/data/object_events/object_event_graphics_info.h index 898ec3d65..5666bd837 100755 --- a/src/data/object_events/object_event_graphics_info.h +++ b/src/data/object_events/object_event_graphics_info.h @@ -297,8 +297,8 @@ const struct ObjectEventGraphicsInfo gPokemonObjectGraphics[] = { [SPECIES_PARASECT] = {0xFFFF, OBJ_EVENT_PAL_TAG_DYNAMIC, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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_FOOT, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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_FOOT, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_Dugtrio, 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, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_Psyduck, gDummySpriteAffineAnimTable}, @@ -310,9 +310,9 @@ const struct ObjectEventGraphicsInfo gPokemonObjectGraphics[] = { [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, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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_FOOT, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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_FOOT, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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_FOOT, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_Alakazam, 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, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_Machamp, gDummySpriteAffineAnimTable}, @@ -328,8 +328,8 @@ const struct ObjectEventGraphicsInfo gPokemonObjectGraphics[] = { [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, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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_FOOT, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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_FOOT, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_Magneton, 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, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_Magneton, 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, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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_FOOT, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_Seel, gDummySpriteAffineAnimTable}, @@ -338,8 +338,8 @@ const struct ObjectEventGraphicsInfo gPokemonObjectGraphics[] = { [SPECIES_MUK] = {0xFFFF, OBJ_EVENT_PAL_TAG_DYNAMIC, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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_FOOT, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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_FOOT, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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_FOOT, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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_FOOT, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_Haunter, 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, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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_FOOT, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_Drowzee, gDummySpriteAffineAnimTable}, @@ -355,8 +355,8 @@ const struct ObjectEventGraphicsInfo gPokemonObjectGraphics[] = { [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, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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_FOOT, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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_FOOT, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_Weezing, 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, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_Chansey, gDummySpriteAffineAnimTable}, @@ -375,7 +375,7 @@ const struct ObjectEventGraphicsInfo gPokemonObjectGraphics[] = { [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, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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_FOOT, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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_FOOT, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_Gyarados, gDummySpriteAffineAnimTable}, + [SPECIES_GYARADOS] = {0xFFFF, OBJ_EVENT_PAL_TAG_DYNAMIC, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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_FOOT, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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_FOOT, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_Eevee, gDummySpriteAffineAnimTable}, @@ -387,16 +387,16 @@ const struct ObjectEventGraphicsInfo gPokemonObjectGraphics[] = { [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, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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_FOOT, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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_FOOT, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_Aerodactyl, 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, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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_FOOT, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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_FOOT, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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_FOOT, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_Moltres, 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, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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_FOOT, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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_FOOT, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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_FOOT, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_Dragonite, 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, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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_FOOT, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_Mew, 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, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_Meganium, gDummySpriteAffineAnimTable}, @@ -409,19 +409,19 @@ const struct ObjectEventGraphicsInfo gPokemonObjectGraphics[] = { [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, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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_FOOT, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_Noctowl, 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, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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_FOOT, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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_FOOT, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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_FOOT, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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_FOOT, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_Crobat, 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, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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_FOOT, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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_FOOT, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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_FOOT, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_Togetic, 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, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_Mareep, gDummySpriteAffineAnimTable}, @@ -432,13 +432,13 @@ const struct ObjectEventGraphicsInfo gPokemonObjectGraphics[] = { [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, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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_FOOT, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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_FOOT, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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_FOOT, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_Jumpluff, 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, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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_FOOT, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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_FOOT, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_Yanma, 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, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_Espeon, gDummySpriteAffineAnimTable}, @@ -446,41 +446,41 @@ const struct ObjectEventGraphicsInfo gPokemonObjectGraphics[] = { [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, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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_FOOT, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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_FOOT, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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_FOOT, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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_FOOT, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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_FOOT, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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_FOOT, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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_FOOT, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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_FOOT, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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_FOOT, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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_FOOT, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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_FOOT, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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_FOOT, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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_FOOT, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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_FOOT, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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_FOOT, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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_FOOT, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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_FOOT, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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_FOOT, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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_FOOT, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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_FOOT, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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_FOOT, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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_FOOT, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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_FOOT, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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_FOOT, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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_FOOT, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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_FOOT, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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_FOOT, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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_FOOT, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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_FOOT, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_Unown_Question, 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, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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_FOOT, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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_FOOT, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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_FOOT, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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_FOOT, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_Gligar, gDummySpriteAffineAnimTable}, - [SPECIES_STEELIX] = {0xFFFF, OBJ_EVENT_PAL_TAG_DYNAMIC, OBJ_EVENT_PAL_TAG_NONE, 1024, 64, 64, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_64x64, gObjectEventSpriteOamTables_64x64, gObjectEventImageAnimTable_Following, gObjectEventPicTable_Steelix, 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, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_Gligar, gDummySpriteAffineAnimTable}, + [SPECIES_STEELIX] = {0xFFFF, OBJ_EVENT_PAL_TAG_DYNAMIC, OBJ_EVENT_PAL_TAG_NONE, 2048, 64, 64, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_64x64, gObjectEventSpriteOamTables_64x64, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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_FOOT, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_Qwilfish, gDummySpriteAffineAnimTable}, @@ -498,7 +498,7 @@ const struct ObjectEventGraphicsInfo gPokemonObjectGraphics[] = { [SPECIES_REMORAID] = {0xFFFF, OBJ_EVENT_PAL_TAG_DYNAMIC, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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_FOOT, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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_FOOT, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_Mantine, 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, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_Houndoom, gDummySpriteAffineAnimTable}, @@ -521,9 +521,9 @@ const struct ObjectEventGraphicsInfo gPokemonObjectGraphics[] = { [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, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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_FOOT, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_Tyranitar, gDummySpriteAffineAnimTable}, - [SPECIES_LUGIA] = {0xFFFF, OBJ_EVENT_PAL_TAG_DYNAMIC, OBJ_EVENT_PAL_TAG_NONE, 1024, 64, 64, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_64x64, gObjectEventSpriteOamTables_64x64, gObjectEventImageAnimTable_Following, gObjectEventPicTable_Lugia, gDummySpriteAffineAnimTable}, - [SPECIES_HO_OH] = {0xFFFF, OBJ_EVENT_PAL_TAG_DYNAMIC, OBJ_EVENT_PAL_TAG_NONE, 1024, 64, 64, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_64x64, gObjectEventSpriteOamTables_64x64, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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_FOOT, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_Celebi, gDummySpriteAffineAnimTable}, + [SPECIES_LUGIA] = {0xFFFF, OBJ_EVENT_PAL_TAG_DYNAMIC, OBJ_EVENT_PAL_TAG_NONE, 2048, 64, 64, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_64x64, gObjectEventSpriteOamTables_64x64, gObjectEventImageAnimTable_Following, gObjectEventPicTable_Lugia, gDummySpriteAffineAnimTable}, + [SPECIES_HO_OH] = {0xFFFF, OBJ_EVENT_PAL_TAG_DYNAMIC, OBJ_EVENT_PAL_TAG_NONE, 2048, 64, 64, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_64x64, gObjectEventSpriteOamTables_64x64, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_Sceptile, gDummySpriteAffineAnimTable}, @@ -539,9 +539,9 @@ const struct ObjectEventGraphicsInfo gPokemonObjectGraphics[] = { [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, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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_FOOT, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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_FOOT, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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_FOOT, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_Beautifly, 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, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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_FOOT, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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_FOOT, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_Dustox, 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, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_Ludicolo, gDummySpriteAffineAnimTable}, @@ -549,22 +549,22 @@ const struct ObjectEventGraphicsInfo gPokemonObjectGraphics[] = { [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, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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_FOOT, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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_FOOT, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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_FOOT, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_Pelipper, 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, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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_FOOT, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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_FOOT, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_Masquerain, 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, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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_FOOT, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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_FOOT, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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_FOOT, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_Shedinja, 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, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_Exploud, gDummySpriteAffineAnimTable}, @@ -585,38 +585,38 @@ const struct ObjectEventGraphicsInfo gPokemonObjectGraphics[] = { [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, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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_FOOT, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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_FOOT, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_Illumise, 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, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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_FOOT, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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_FOOT, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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_FOOT, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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_FOOT, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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_FOOT, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_Wailmer, gDummySpriteAffineAnimTable}, - [SPECIES_WAILORD] = {0xFFFF, OBJ_EVENT_PAL_TAG_DYNAMIC, OBJ_EVENT_PAL_TAG_NONE, 1024, 64, 64, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_64x64, gObjectEventSpriteOamTables_64x64, gObjectEventImageAnimTable_Following, gObjectEventPicTable_Wailord, gDummySpriteAffineAnimTable}, + [SPECIES_WAILORD] = {0xFFFF, OBJ_EVENT_PAL_TAG_DYNAMIC, OBJ_EVENT_PAL_TAG_NONE, 2048, 64, 64, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_64x64, gObjectEventSpriteOamTables_64x64, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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_FOOT, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_Spoink, gDummySpriteAffineAnimTable}, + [SPECIES_SPOINK] = {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, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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_FOOT, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_Flygon, 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, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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_FOOT, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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_FOOT, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_Altaria, 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, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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_FOOT, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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_FOOT, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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_FOOT, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_Solrock, 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, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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_FOOT, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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_FOOT, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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_FOOT, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_Claydol, gDummySpriteAffineAnimTable}, + [SPECIES_BALTOY] = {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, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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_FOOT, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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_FOOT, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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_FOOT, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_Anorith, gDummySpriteAffineAnimTable}, @@ -624,12 +624,12 @@ const struct ObjectEventGraphicsInfo gPokemonObjectGraphics[] = { [SPECIES_FEEBAS] = {0xFFFF, OBJ_EVENT_PAL_TAG_DYNAMIC, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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_FOOT, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_Milotic, 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, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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_FOOT, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_Shuppet, 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, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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_FOOT, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_Duskull, 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, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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_FOOT, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_Chimecho, 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, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_Snorunt, gDummySpriteAffineAnimTable}, @@ -645,17 +645,17 @@ const struct ObjectEventGraphicsInfo gPokemonObjectGraphics[] = { [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, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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_FOOT, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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_FOOT, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_Metang, 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, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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_FOOT, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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_FOOT, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_Latios, gDummySpriteAffineAnimTable}, - [SPECIES_KYOGRE] = {0xFFFF, OBJ_EVENT_PAL_TAG_DYNAMIC, OBJ_EVENT_PAL_TAG_NONE, 1024, 64, 64, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_64x64, gObjectEventSpriteOamTables_64x64, gObjectEventImageAnimTable_Following, gObjectEventPicTable_Kyogre, gDummySpriteAffineAnimTable}, - [SPECIES_GROUDON] = {0xFFFF, OBJ_EVENT_PAL_TAG_DYNAMIC, OBJ_EVENT_PAL_TAG_NONE, 1024, 64, 64, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_64x64, gObjectEventSpriteOamTables_64x64, gObjectEventImageAnimTable_Following, gObjectEventPicTable_Groudon, gDummySpriteAffineAnimTable}, - [SPECIES_RAYQUAZA] = {0xFFFF, OBJ_EVENT_PAL_TAG_DYNAMIC, OBJ_EVENT_PAL_TAG_NONE, 1024, 64, 64, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_64x64, gObjectEventSpriteOamTables_64x64, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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_FOOT, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_Jirachi, 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, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_Latios, gDummySpriteAffineAnimTable}, + [SPECIES_KYOGRE] = {0xFFFF, OBJ_EVENT_PAL_TAG_DYNAMIC, OBJ_EVENT_PAL_TAG_NONE, 2048, 64, 64, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_64x64, gObjectEventSpriteOamTables_64x64, gObjectEventImageAnimTable_Following, gObjectEventPicTable_Kyogre, gDummySpriteAffineAnimTable}, + [SPECIES_GROUDON] = {0xFFFF, OBJ_EVENT_PAL_TAG_DYNAMIC, OBJ_EVENT_PAL_TAG_NONE, 2048, 64, 64, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_64x64, gObjectEventSpriteOamTables_64x64, gObjectEventImageAnimTable_Following, gObjectEventPicTable_Groudon, gDummySpriteAffineAnimTable}, + [SPECIES_RAYQUAZA] = {0xFFFF, OBJ_EVENT_PAL_TAG_DYNAMIC, OBJ_EVENT_PAL_TAG_NONE, 2048, 64, 64, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_64x64, gObjectEventSpriteOamTables_64x64, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_Deoxys, gDummySpriteAffineAnimTable}, }; diff --git a/src/data/object_events/object_event_pic_tables.h b/src/data/object_events/object_event_pic_tables.h index 5cb413eba..5c6093e37 100755 --- a/src/data/object_events/object_event_pic_tables.h +++ b/src/data/object_events/object_event_pic_tables.h @@ -3847,12 +3847,12 @@ const struct SpriteFrameImage gObjectEventPicTable_Gligar[] = { overworld_frame(gObjectEventPic_Gligar, 4, 4, 5), }; const struct SpriteFrameImage gObjectEventPicTable_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), + overworld_frame(gObjectEventPic_Steelix, 8, 8, 0), + overworld_frame(gObjectEventPic_Steelix, 8, 8, 1), + overworld_frame(gObjectEventPic_Steelix, 8, 8, 2), + overworld_frame(gObjectEventPic_Steelix, 8, 8, 3), + overworld_frame(gObjectEventPic_Steelix, 8, 8, 4), + overworld_frame(gObjectEventPic_Steelix, 8, 8, 5), }; const struct SpriteFrameImage gObjectEventPicTable_Snubbull[] = { overworld_frame(gObjectEventPic_Snubbull, 4, 4, 0), @@ -4175,20 +4175,20 @@ const struct SpriteFrameImage gObjectEventPicTable_Tyranitar[] = { overworld_frame(gObjectEventPic_Tyranitar, 4, 4, 5), }; const struct SpriteFrameImage gObjectEventPicTable_Lugia[] = { - overworld_frame(gObjectEventPic_Lugia, 4, 4, 0), - overworld_frame(gObjectEventPic_Lugia, 4, 4, 1), - overworld_frame(gObjectEventPic_Lugia, 4, 4, 2), - overworld_frame(gObjectEventPic_Lugia, 4, 4, 3), - overworld_frame(gObjectEventPic_Lugia, 4, 4, 4), - overworld_frame(gObjectEventPic_Lugia, 4, 4, 5), + 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), }; const struct SpriteFrameImage gObjectEventPicTable_Ho_oh[] = { - overworld_frame(gObjectEventPic_Ho_oh, 4, 4, 0), - overworld_frame(gObjectEventPic_Ho_oh, 4, 4, 1), - overworld_frame(gObjectEventPic_Ho_oh, 4, 4, 2), - overworld_frame(gObjectEventPic_Ho_oh, 4, 4, 3), - overworld_frame(gObjectEventPic_Ho_oh, 4, 4, 4), - overworld_frame(gObjectEventPic_Ho_oh, 4, 4, 5), + 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), }; const struct SpriteFrameImage gObjectEventPicTable_Celebi[] = { overworld_frame(gObjectEventPic_Celebi, 4, 4, 0), @@ -4751,12 +4751,12 @@ const struct SpriteFrameImage gObjectEventPicTable_Wailmer[] = { overworld_frame(gObjectEventPic_Wailmer, 4, 4, 5), }; const struct SpriteFrameImage gObjectEventPicTable_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), + overworld_frame(gObjectEventPic_Wailord, 8, 8, 0), + overworld_frame(gObjectEventPic_Wailord, 8, 8, 1), + overworld_frame(gObjectEventPic_Wailord, 8, 8, 2), + overworld_frame(gObjectEventPic_Wailord, 8, 8, 3), + overworld_frame(gObjectEventPic_Wailord, 8, 8, 4), + overworld_frame(gObjectEventPic_Wailord, 8, 8, 5), }; const struct SpriteFrameImage gObjectEventPicTable_Numel[] = { overworld_frame(gObjectEventPic_Numel, 4, 4, 0), @@ -5231,28 +5231,28 @@ const struct SpriteFrameImage gObjectEventPicTable_Latios[] = { overworld_frame(gObjectEventPic_Latios, 4, 4, 5), }; const struct SpriteFrameImage gObjectEventPicTable_Kyogre[] = { - overworld_frame(gObjectEventPic_Kyogre, 4, 4, 0), - overworld_frame(gObjectEventPic_Kyogre, 4, 4, 1), - overworld_frame(gObjectEventPic_Kyogre, 4, 4, 2), - overworld_frame(gObjectEventPic_Kyogre, 4, 4, 3), - overworld_frame(gObjectEventPic_Kyogre, 4, 4, 4), - overworld_frame(gObjectEventPic_Kyogre, 4, 4, 5), + 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), }; const struct SpriteFrameImage gObjectEventPicTable_Groudon[] = { - overworld_frame(gObjectEventPic_Groudon, 4, 4, 0), - overworld_frame(gObjectEventPic_Groudon, 4, 4, 1), - overworld_frame(gObjectEventPic_Groudon, 4, 4, 2), - overworld_frame(gObjectEventPic_Groudon, 4, 4, 3), - overworld_frame(gObjectEventPic_Groudon, 4, 4, 4), - overworld_frame(gObjectEventPic_Groudon, 4, 4, 5), + 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), }; const struct SpriteFrameImage gObjectEventPicTable_Rayquaza[] = { - overworld_frame(gObjectEventPic_Rayquaza, 4, 4, 0), - overworld_frame(gObjectEventPic_Rayquaza, 4, 4, 1), - overworld_frame(gObjectEventPic_Rayquaza, 4, 4, 2), - overworld_frame(gObjectEventPic_Rayquaza, 4, 4, 3), - overworld_frame(gObjectEventPic_Rayquaza, 4, 4, 4), - overworld_frame(gObjectEventPic_Rayquaza, 4, 4, 5), + 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), }; const struct SpriteFrameImage gObjectEventPicTable_Jirachi[] = { overworld_frame(gObjectEventPic_Jirachi, 4, 4, 0), diff --git a/src/event_object_movement.c b/src/event_object_movement.c index 7c208b5ad..b7f02d2d3 100644 --- a/src/event_object_movement.c +++ b/src/event_object_movement.c @@ -8453,13 +8453,13 @@ static void (*const sGroundEffectTracksFuncs[])(struct ObjectEvent *objEvent, st void GroundEffect_SandTracks(struct ObjectEvent *objEvent, struct Sprite *sprite) { - const struct ObjectEventGraphicsInfo *info = GetObjectEventGraphicsInfo(objEvent->graphicsId); + const struct ObjectEventGraphicsInfo *info = objEvent->graphicsId == OBJ_EVENT_GFX_OW_MON ? SpeciesToGraphicsInfo(objEvent->extra.mon.species, 0) : GetObjectEventGraphicsInfo(objEvent->graphicsId); sGroundEffectTracksFuncs[objEvent->invisible ? TRACKS_NONE : info->tracks](objEvent, sprite, 0); } void GroundEffect_DeepSandTracks(struct ObjectEvent *objEvent, struct Sprite *sprite) { - const struct ObjectEventGraphicsInfo *info = GetObjectEventGraphicsInfo(objEvent->graphicsId); + const struct ObjectEventGraphicsInfo *info = objEvent->graphicsId == OBJ_EVENT_GFX_OW_MON ? SpeciesToGraphicsInfo(objEvent->extra.mon.species, 0) : GetObjectEventGraphicsInfo(objEvent->graphicsId); sGroundEffectTracksFuncs[objEvent->invisible ? TRACKS_NONE : info->tracks](objEvent, sprite, 1); } From bd01b80c1d266585d304bf9a0d76c3fa9cc6c84a Mon Sep 17 00:00:00 2001 From: Ariel Antonitis Date: Wed, 24 Jun 2020 18:57:48 -0400 Subject: [PATCH 033/241] Added Castform. --- graphics/object_events/pics/pokemon/castform.png | Bin 0 -> 2895 bytes spritesheet_rules.mk | 3 +++ src/data/object_events/object_event_graphics.h | 1 + .../object_events/object_event_graphics_info.h | 1 + src/data/object_events/object_event_pic_tables.h | 8 ++++++++ 5 files changed, 13 insertions(+) create mode 100644 graphics/object_events/pics/pokemon/castform.png diff --git a/graphics/object_events/pics/pokemon/castform.png b/graphics/object_events/pics/pokemon/castform.png new file mode 100644 index 0000000000000000000000000000000000000000..c87314166e428638eb154da9a01dfb311256a533 GIT binary patch literal 2895 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 Date: Wed, 24 Jun 2020 20:28:54 -0400 Subject: [PATCH 034/241] Added additional follower messages. --- data/scripts/follower.inc | 61 +++++++++++++++++++++++++++++++------ include/event_scripts.h | 5 +++ src/event_object_movement.c | 30 ++++++++++++++++-- 3 files changed, 83 insertions(+), 13 deletions(-) diff --git a/data/scripts/follower.inc b/data/scripts/follower.inc index 877983112..f071ed93b 100644 --- a/data/scripts/follower.inc +++ b/data/scripts/follower.inc @@ -16,6 +16,18 @@ gText_FollowerSplashesAround:: gText_WantsToFly:: .string "{STR_VAR_1} looks up at the\nsky restlessly.\pWould you like to use FLY?$" +gText_FollowerUnhappyFace:: + .string "{STR_VAR_1} is making an unhappy face...$" + +gText_FollowerHappyRain:: + .string "{STR_VAR_1} seems to be happy\nabout the rain!$" + +gText_FollowerMetLocation:: + .string "{STR_VAR_1} is looking around fondly.\pIt seems familiar with this place.$" + +gText_FollowerSkeptical:: + .string "{STR_VAR_1} gives you a skeptical look...\pWhat could it mean?$" + .macro playfirstmoncry callfunc ScrFunc_playfirstmoncry .endm @@ -25,7 +37,6 @@ callfunc ScrFunc_bufferlivemonspeciesname .byte \out .endm - EventScript_Follower:: lock faceplayer @@ -45,6 +56,36 @@ EventScript_FollowerEnd:: release end +EventScript_FollowerSkeptical:: + bufferlivemonspeciesname 0 + playfirstmoncry + msgbox gText_FollowerSkeptical, MSGBOX_DEFAULT + waitmoncry + return + +EventScript_FollowerMetLocation:: + bufferlivemonspeciesname 0 + playfirstmoncry + applymovement 0xFE Common_Movement_QuestionMark + waitmoncry + waitmovement 0xFE + msgbox gText_FollowerMetLocation, MSGBOX_DEFAULT + return + +EventScript_FollowerUnhappyFace:: + bufferlivemonspeciesname 0 + playfirstmoncry + msgbox gText_FollowerUnhappyFace, MSGBOX_DEFAULT + waitmoncry + return + +EventScript_FollowerHappyRain:: + bufferlivemonspeciesname 0 + playfirstmoncry + msgbox gText_FollowerHappyRain, MSGBOX_DEFAULT + waitmoncry + return + EventScript_FollowerHasWetFeet:: bufferlivemonspeciesname 0 playfirstmoncry @@ -60,6 +101,15 @@ EventScript_FollowerSplashesAbout:: msgbox gText_FollowerSplashesAround, MSGBOX_DEFAULT return +EventScript_FollowerLovesYou:: + playfirstmoncry + applymovement 0xFE ContestHall_Movement_Heart + waitmovement 0xFE + waitmoncry + bufferlivemonspeciesname 0 + msgbox gText_FollowerLovesYou, MSGBOX_DEFAULT + return + EnterPokeballMovement:: .byte 0x9F @ EnterPokeball step_end @@ -69,12 +119,3 @@ FollowerSplashMovement:: jump_in_place_left_right face_player step_end - -EventScript_FollowerLovesYou:: - playfirstmoncry - applymovement 0xFE ContestHall_Movement_Heart - waitmovement 0xFE - waitmoncry - bufferlivemonspeciesname 0 - msgbox gText_FollowerLovesYou, MSGBOX_DEFAULT - return diff --git a/include/event_scripts.h b/include/event_scripts.h index 564083029..66b481b92 100644 --- a/include/event_scripts.h +++ b/include/event_scripts.h @@ -5,6 +5,11 @@ extern const u8 EventScript_Follower[]; extern const u8 EventScript_FollowerHasWetFeet[]; extern const u8 EventScript_FollowerSplashesAbout[]; extern const u8 EventScript_FollowerLovesYou[]; +extern const u8 EventScript_FollowerUnhappyFace[]; +extern const u8 EventScript_FollowerHappyRain[]; +extern const u8 EventScript_FollowerMetLocation[]; +extern const u8 EventScript_FollowerEnd[]; +extern const u8 EventScript_FollowerSkeptical[]; extern const u8 EnterPokeballMovement[]; extern const u8 EventScript_TestSignpostMsg[]; diff --git a/src/event_object_movement.c b/src/event_object_movement.c index b7f02d2d3..a9726ce17 100644 --- a/src/event_object_movement.c +++ b/src/event_object_movement.c @@ -1691,21 +1691,29 @@ static bool8 IsFollowerVisible(void) { // Determine whether follower *should* be || MetatileBehavior_IsForcedMovementTile(gObjectEvents[gPlayerAvatar.objectEventId].previousMetatileBehavior)); } +static bool8 SpeciesHasType(u16 species, u8 type) { + return gBaseStats[species].type1 == type || gBaseStats[species].type2 == type; +} + bool8 ScrFunc_getfolloweraction(struct ScriptContext *ctx) // Essentially a big switch for follower messages { u16 value; u16 species; u32 behavior; + u8 friendship; struct ObjectEvent *objEvent = GetFollowerObject(); struct Pokemon *mon = GetFirstLiveMon(); if (mon == NULL) { ScriptCall(ctx, EventScript_FollowerLovesYou); return FALSE; } + if (!Overworld_MapTypeAllowsTeleportAndFly(gMapHeader.mapType)) // only return to flying if map type is relevant + ScriptJump(ctx, EventScript_FollowerEnd); behavior = MapGridGetMetatileBehaviorAt(objEvent->currentCoords.x, objEvent->currentCoords.y); species = GetMonData(mon, MON_DATA_SPECIES); + // Puddle splash or wet feet if (MetatileBehavior_IsPuddle(behavior) || MetatileBehavior_IsShallowFlowingWater(behavior)) { - if (gBaseStats[species].type1 == TYPE_FIRE || gBaseStats[species].type2 == TYPE_FIRE) { + if (SpeciesHasType(species, TYPE_FIRE)) { ScriptCall(ctx, EventScript_FollowerHasWetFeet); return FALSE; } else if (SpeciesToGraphicsInfo(species, 0)->tracks) { // if follower is grounded @@ -1713,10 +1721,26 @@ bool8 ScrFunc_getfolloweraction(struct ScriptContext *ctx) // Essentially a big return FALSE; } } + // Weather-based messages if (GetCurrentWeather() == WEATHER_RAIN || GetCurrentWeather() == WEATHER_RAIN_THUNDERSTORM) { - ScriptCall(ctx, EventScript_FollowerLovesYou); + if (SpeciesHasType(species, TYPE_FIRE)) { + ScriptCall(ctx, EventScript_FollowerUnhappyFace); + return FALSE; + } else if (SpeciesHasType(species, TYPE_WATER) || SpeciesHasType(species, TYPE_GRASS)) { + ScriptCall(ctx, EventScript_FollowerHappyRain); + return FALSE; + } } - ScriptCall(ctx, EventScript_FollowerLovesYou); + // Location-based messages + if (GetMonData(mon, MON_DATA_MET_LOCATION) == GetCurrentRegionMapSectionId()) { + ScriptCall(ctx, EventScript_FollowerMetLocation); + return FALSE; + } + friendship = GetMonData(mon, MON_DATA_FRIENDSHIP); + if (friendship < 25) + ScriptCall(ctx, EventScript_FollowerSkeptical); + else if (friendship == 255) + ScriptCall(ctx, EventScript_FollowerLovesYou); return FALSE; } From 92b76a98cb6b8b60054f4da5191e635a5cb15d84 Mon Sep 17 00:00:00 2001 From: Ariel Antonitis Date: Wed, 24 Jun 2020 21:16:49 -0400 Subject: [PATCH 035/241] Fixed follower behavior when seen by trainers. --- include/event_object_movement.h | 1 + src/trainer_see.c | 13 ++++++++++++- 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/include/event_object_movement.h b/include/event_object_movement.h index 37b0f8c6c..b6b155195 100644 --- a/include/event_object_movement.h +++ b/include/event_object_movement.h @@ -97,6 +97,7 @@ struct Pokemon * GetFirstLiveMon(void); void UpdateFollowingPokemon(void); void RemoveFollowingPokemon(void); struct ObjectEvent * GetFollowerObject(void); +u8 GetDirectionToFace(s16, s16, s16, s16); void TrySpawnObjectEvents(s16, s16); u8 CreateObjectSprite(u8 graphicsId, u8 a1, s16 x, s16 y, u8 z, u8 direction); u8 AddPseudoObjectEvent(u16, void (*)(struct Sprite *), s16 x, s16 y, u8 subpriority); diff --git a/src/trainer_see.c b/src/trainer_see.c index 9ce25ce23..b87e4dcb5 100644 --- a/src/trainer_see.c +++ b/src/trainer_see.c @@ -462,12 +462,23 @@ static bool8 TrainerSeeIdle(u8 taskId, struct Task *task, struct ObjectEvent *tr static bool8 TrainerExclamationMark(u8 taskId, struct Task *task, struct ObjectEvent *trainerObj) { u8 direction; + struct ObjectEvent *followerObj = GetFollowerObject(); ObjectEventGetLocalIdAndMap(trainerObj, &gFieldEffectArguments[0], &gFieldEffectArguments[1], &gFieldEffectArguments[2]); FieldEffectStart(FLDEFF_EXCLAMATION_MARK_ICON); direction = GetFaceDirectionMovementAction(trainerObj->facingDirection); ObjectEventSetHeldMovement(trainerObj, direction); - task->tFuncId++; // TRSEE_EXCLAMATION_WAIT + if (followerObj) { + struct ObjectEvent *playerObj = &gObjectEvents[gPlayerAvatar.objectEventId]; + s16 x = playerObj->currentCoords.x; + s16 y = playerObj->currentCoords.y; + // Move back player's location by facing direction + MoveCoords(GetOppositeDirection(playerObj->facingDirection), &x, &y); + direction = GetDirectionToFace(followerObj->previousCoords.x, followerObj->previousCoords.y, x, y); + followerObj->singleMovementActive = FALSE; + ObjectEventSetHeldMovement(followerObj, GetWalkNormalMovementAction(direction)); + } + task->tFuncId++; return TRUE; } From 04ce1eaf83a2182d36012290cd8e69770c70c7a6 Mon Sep 17 00:00:00 2001 From: Ariel Antonitis Date: Wed, 24 Jun 2020 21:58:52 -0400 Subject: [PATCH 036/241] Added Mr. Mime & Farfetch'd. Fixed transparency issues. --- extract_sprites.py | 17 ++++++++++++----- graphics/object_events/pics/pokemon/aipom.png | Bin 736 -> 747 bytes .../object_events/pics/pokemon/alakazam.png | Bin 750 -> 761 bytes .../object_events/pics/pokemon/ampharos.png | Bin 696 -> 703 bytes .../object_events/pics/pokemon/anorith.png | Bin 722 -> 733 bytes graphics/object_events/pics/pokemon/arbok.png | Bin 708 -> 710 bytes .../object_events/pics/pokemon/arcanine.png | Bin 961 -> 962 bytes .../object_events/pics/pokemon/articuno.png | Bin 1196 -> 1195 bytes .../object_events/pics/pokemon/banette.png | Bin 1003 -> 528 bytes .../object_events/pics/pokemon/barboach.png | Bin 513 -> 518 bytes .../object_events/pics/pokemon/bayleef.png | Bin 692 -> 700 bytes .../object_events/pics/pokemon/beedrill.png | Bin 785 -> 803 bytes .../object_events/pics/pokemon/bellossom.png | Bin 633 -> 630 bytes .../object_events/pics/pokemon/blastoise.png | Bin 834 -> 846 bytes .../object_events/pics/pokemon/blissey.png | Bin 594 -> 593 bytes .../object_events/pics/pokemon/breloom.png | Bin 581 -> 582 bytes .../object_events/pics/pokemon/camerupt.png | Bin 869 -> 890 bytes .../object_events/pics/pokemon/chansey.png | Bin 490 -> 514 bytes .../object_events/pics/pokemon/charizard.png | Bin 948 -> 950 bytes .../object_events/pics/pokemon/chikorita.png | Bin 457 -> 466 bytes .../object_events/pics/pokemon/chinchou.png | Bin 667 -> 674 bytes .../object_events/pics/pokemon/claydol.png | Bin 386 -> 391 bytes .../object_events/pics/pokemon/clefairy.png | Bin 456 -> 457 bytes .../object_events/pics/pokemon/cloyster.png | Bin 1057 -> 1062 bytes .../object_events/pics/pokemon/corsola.png | Bin 621 -> 625 bytes .../object_events/pics/pokemon/croconaw.png | Bin 778 -> 788 bytes .../object_events/pics/pokemon/cyndaquil.png | Bin 654 -> 653 bytes .../object_events/pics/pokemon/diglett.png | Bin 419 -> 420 bytes .../object_events/pics/pokemon/dragonair.png | Bin 1034 -> 1046 bytes .../object_events/pics/pokemon/dragonite.png | Bin 786 -> 789 bytes .../object_events/pics/pokemon/dratini.png | Bin 635 -> 624 bytes .../object_events/pics/pokemon/drowzee.png | Bin 537 -> 538 bytes .../object_events/pics/pokemon/dugtrio.png | Bin 688 -> 691 bytes .../object_events/pics/pokemon/dusclops.png | Bin 825 -> 829 bytes .../object_events/pics/pokemon/dustox.png | Bin 734 -> 730 bytes .../object_events/pics/pokemon/electabuzz.png | Bin 580 -> 587 bytes .../object_events/pics/pokemon/electrode.png | Bin 386 -> 363 bytes .../object_events/pics/pokemon/espeon.png | Bin 739 -> 751 bytes .../object_events/pics/pokemon/farfetchd.png | Bin 0 -> 570 bytes .../object_events/pics/pokemon/feebas.png | Bin 517 -> 514 bytes .../object_events/pics/pokemon/feraligatr.png | Bin 980 -> 984 bytes .../object_events/pics/pokemon/flareon.png | Bin 744 -> 762 bytes .../object_events/pics/pokemon/flygon.png | Bin 933 -> 933 bytes .../object_events/pics/pokemon/forretress.png | Bin 523 -> 525 bytes .../object_events/pics/pokemon/furret.png | Bin 805 -> 805 bytes .../object_events/pics/pokemon/gengar.png | Bin 615 -> 615 bytes .../object_events/pics/pokemon/geodude.png | Bin 396 -> 398 bytes .../object_events/pics/pokemon/gligar.png | Bin 992 -> 993 bytes .../object_events/pics/pokemon/golbat.png | Bin 698 -> 704 bytes .../object_events/pics/pokemon/golduck.png | Bin 581 -> 585 bytes .../object_events/pics/pokemon/gorebyss.png | Bin 806 -> 813 bytes .../object_events/pics/pokemon/granbull.png | Bin 654 -> 658 bytes .../object_events/pics/pokemon/graveler.png | Bin 624 -> 625 bytes .../object_events/pics/pokemon/grimer.png | Bin 541 -> 544 bytes .../object_events/pics/pokemon/growlithe.png | Bin 597 -> 601 bytes .../object_events/pics/pokemon/grumpig.png | Bin 626 -> 629 bytes .../object_events/pics/pokemon/heracross.png | Bin 753 -> 755 bytes .../object_events/pics/pokemon/hitmonchan.png | Bin 563 -> 566 bytes .../object_events/pics/pokemon/hitmonlee.png | Bin 540 -> 542 bytes graphics/object_events/pics/pokemon/ho_oh.png | Bin 1936 -> 1957 bytes .../object_events/pics/pokemon/hoothoot.png | Bin 579 -> 580 bytes .../object_events/pics/pokemon/horsea.png | Bin 488 -> 496 bytes .../object_events/pics/pokemon/houndoom.png | Bin 714 -> 723 bytes .../object_events/pics/pokemon/houndour.png | Bin 549 -> 555 bytes .../object_events/pics/pokemon/ivysaur.png | Bin 584 -> 585 bytes .../object_events/pics/pokemon/jirachi.png | Bin 557 -> 558 bytes .../object_events/pics/pokemon/kadabra.png | Bin 708 -> 711 bytes .../object_events/pics/pokemon/kakuna.png | Bin 451 -> 452 bytes .../object_events/pics/pokemon/kangaskhan.png | Bin 698 -> 701 bytes .../object_events/pics/pokemon/krabby.png | Bin 541 -> 542 bytes .../object_events/pics/pokemon/ledian.png | Bin 899 -> 879 bytes .../object_events/pics/pokemon/machamp.png | Bin 914 -> 916 bytes .../object_events/pics/pokemon/machoke.png | Bin 629 -> 627 bytes .../object_events/pics/pokemon/machop.png | Bin 398 -> 405 bytes .../object_events/pics/pokemon/magmar.png | Bin 724 -> 730 bytes .../object_events/pics/pokemon/mankey.png | Bin 566 -> 570 bytes .../object_events/pics/pokemon/mawile.png | Bin 642 -> 639 bytes .../object_events/pics/pokemon/meditite.png | Bin 478 -> 480 bytes .../object_events/pics/pokemon/meganium.png | Bin 798 -> 807 bytes .../object_events/pics/pokemon/metapod.png | Bin 463 -> 463 bytes graphics/object_events/pics/pokemon/mew.png | Bin 556 -> 549 bytes .../object_events/pics/pokemon/mewtwo.png | Bin 792 -> 815 bytes .../object_events/pics/pokemon/misdreavus.png | Bin 736 -> 737 bytes .../object_events/pics/pokemon/mr_mime.png | Bin 0 -> 687 bytes graphics/object_events/pics/pokemon/muk.png | Bin 669 -> 672 bytes .../object_events/pics/pokemon/murkrow.png | Bin 420 -> 419 bytes .../object_events/pics/pokemon/nidoran_f.png | Bin 444 -> 436 bytes .../object_events/pics/pokemon/nincada.png | Bin 571 -> 572 bytes .../object_events/pics/pokemon/ninetales.png | Bin 703 -> 701 bytes .../object_events/pics/pokemon/noctowl.png | Bin 1018 -> 1035 bytes .../object_events/pics/pokemon/omastar.png | Bin 734 -> 734 bytes .../object_events/pics/pokemon/phanpy.png | Bin 420 -> 425 bytes .../object_events/pics/pokemon/pidgeot.png | Bin 1077 -> 1081 bytes .../object_events/pics/pokemon/pidgeotto.png | Bin 818 -> 833 bytes .../object_events/pics/pokemon/pidgey.png | Bin 393 -> 395 bytes .../object_events/pics/pokemon/pinsir.png | Bin 709 -> 723 bytes .../object_events/pics/pokemon/poliwag.png | Bin 427 -> 436 bytes .../object_events/pics/pokemon/poliwhirl.png | Bin 526 -> 537 bytes .../object_events/pics/pokemon/poliwrath.png | Bin 681 -> 689 bytes .../object_events/pics/pokemon/ponyta.png | Bin 601 -> 624 bytes .../object_events/pics/pokemon/porygon2.png | Bin 522 -> 525 bytes .../object_events/pics/pokemon/primeape.png | Bin 733 -> 737 bytes .../object_events/pics/pokemon/psyduck.png | Bin 482 -> 486 bytes .../object_events/pics/pokemon/qwilfish.png | Bin 578 -> 581 bytes .../object_events/pics/pokemon/raichu.png | Bin 779 -> 781 bytes .../object_events/pics/pokemon/raikou.png | Bin 927 -> 930 bytes .../object_events/pics/pokemon/raticate.png | Bin 551 -> 558 bytes .../object_events/pics/pokemon/rayquaza.png | Bin 1943 -> 1946 bytes .../object_events/pics/pokemon/regice.png | Bin 793 -> 793 bytes .../object_events/pics/pokemon/rhydon.png | Bin 744 -> 750 bytes .../object_events/pics/pokemon/roselia.png | Bin 437 -> 446 bytes .../object_events/pics/pokemon/sandshrew.png | Bin 467 -> 470 bytes .../object_events/pics/pokemon/sandslash.png | Bin 623 -> 624 bytes .../object_events/pics/pokemon/seadra.png | Bin 709 -> 718 bytes .../object_events/pics/pokemon/seaking.png | Bin 971 -> 970 bytes .../object_events/pics/pokemon/sentret.png | Bin 554 -> 553 bytes .../object_events/pics/pokemon/shroomish.png | Bin 358 -> 353 bytes .../object_events/pics/pokemon/skiploom.png | Bin 492 -> 488 bytes .../object_events/pics/pokemon/slakoth.png | Bin 618 -> 620 bytes .../object_events/pics/pokemon/slowking.png | Bin 718 -> 723 bytes .../object_events/pics/pokemon/slowpoke.png | Bin 609 -> 614 bytes .../object_events/pics/pokemon/snorlax.png | Bin 820 -> 826 bytes .../object_events/pics/pokemon/snorunt.png | Bin 395 -> 396 bytes .../object_events/pics/pokemon/snubbull.png | Bin 618 -> 620 bytes .../object_events/pics/pokemon/spinarak.png | Bin 562 -> 567 bytes .../object_events/pics/pokemon/squirtle.png | Bin 361 -> 368 bytes .../object_events/pics/pokemon/suicune.png | Bin 950 -> 945 bytes .../object_events/pics/pokemon/surskit.png | Bin 355 -> 357 bytes .../object_events/pics/pokemon/tangela.png | Bin 533 -> 538 bytes .../object_events/pics/pokemon/teddiursa.png | Bin 527 -> 528 bytes .../object_events/pics/pokemon/vaporeon.png | Bin 816 -> 824 bytes .../object_events/pics/pokemon/venomoth.png | Bin 1022 -> 1030 bytes .../object_events/pics/pokemon/venusaur.png | Bin 778 -> 779 bytes .../object_events/pics/pokemon/victreebel.png | Bin 895 -> 899 bytes .../object_events/pics/pokemon/voltorb.png | Bin 274 -> 272 bytes .../object_events/pics/pokemon/weedle.png | Bin 534 -> 542 bytes .../object_events/pics/pokemon/weepinbell.png | Bin 625 -> 629 bytes .../object_events/pics/pokemon/whiscash.png | Bin 687 -> 694 bytes .../object_events/pics/pokemon/wigglytuff.png | Bin 545 -> 548 bytes .../object_events/pics/pokemon/wingull.png | Bin 550 -> 550 bytes graphics/object_events/pics/pokemon/yanma.png | Bin 861 -> 868 bytes .../object_events/pics/pokemon/zigzagoon.png | Bin 714 -> 712 bytes spritesheet_rules.mk | 6 ++++++ .../object_events/object_event_graphics.h | 2 ++ .../object_event_graphics_info.h | 2 ++ .../object_events/object_event_pic_tables.h | 16 ++++++++++++++++ 146 files changed, 38 insertions(+), 5 deletions(-) create mode 100644 graphics/object_events/pics/pokemon/farfetchd.png create mode 100644 graphics/object_events/pics/pokemon/mr_mime.png diff --git a/extract_sprites.py b/extract_sprites.py index 86a2d7c3e..32e21aaa5 100644 --- a/extract_sprites.py +++ b/extract_sprites.py @@ -57,7 +57,7 @@ def closest_color(c, palette): min_d = float('inf') best = 0 r1, g1, b1 = c - for i, (r2, g2, b2) in enumerate(palette): + 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: @@ -75,7 +75,7 @@ def apply_palette(palette_file, input_file, output_file): # Apply one file's pa with open(output_file, 'wb') as f: new_rows = [] for row in rows: - new_rows.append([closest_color(src_palette[c], target_palette) for c in row]) + 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) @@ -84,14 +84,14 @@ def paletteify(path, output_path=None): joinp = os.path.join _, tail = os.path.split(path) species, _ = os.path.splitext(tail) - front = png.Reader(joinp(PKMN_GRAPHICS, species.split('_')[0], species.split('_')[1], 'anim_front.png')) + 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.split('_')[0], species.split('_')[1], 'anim_front.png'), output_path, output_path) + apply_palette(joinp(PKMN_GRAPHICS, species, 'anim_front.png'), output_path, output_path) # Sprites from https://veekun.com/dex/downloads @@ -100,4 +100,11 @@ if __name__ == '__main__': if args: paletteify(args[0]) else: - stack_sprite('201-question.png', 'overworld') + 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/graphics/object_events/pics/pokemon/aipom.png b/graphics/object_events/pics/pokemon/aipom.png index 2cd8776ed40fcc1f0c55d889fe4360fd1b848fe8..51aeeaa5bd69c76425aa6b5008761195dc9aecda 100644 GIT binary patch delta 663 zcmV;I0%-l<1?vTnV1IT=L_t(|obA-nikmAq(0RQQRrdTI>DS@a8FgCsEbkgP?zFH2$z4_)XiNX>axsn5<3Mx3+G00APp5r2$J z&BKraD;IGdVt2q#ZUcl~Cv8Ayu+(`(zTsJ;`=T9k-!aayjl^z(kp;?#-wSsLn3G4I zrAB}tDxfsY*?vRPGm1#>XcsUxlA1Q^rrwARWuh~DJ%8f_)tL9CY0h2(X>|SR)pbT^ z6UGO!Mf7km;!gC2&GP0mMb(7qD0}I^dOUx+T|Qmi&nEmZM=8+tG^>r?uzCA@N4;=)Xq~KE@YwwLPe?eh!1!X9JTE)D*ZewNDPD1$oIN0(xx2M xneKXArxh4$^!5elUzLaS8}$Z$wejDs?^A%yZ4eHTjwJv9002ovPDHLkV1g-^OJx86 delta 652 zcmV;70(1TA1>gmcV1H{#L_t(|obA*xYuqpt2k=M19PS`}h4R2dyy&C!I4~g|;;)b; zgbbx$!309l4OR(w$SwXzG2OiQjKBnII9Kk)mgJt(7D}NIEyqvK*8e@765Cp}TR(BjA1nf8nVGIhSrNVE)aMgA^>K4Kz<;l+(#%j2lGUlXydD~u zO{ll58N7AmJOpiUhOBvCr`f2=A8hyEHS+)}tQovM*j?xz#u)}*Iztk{cs7w#TrjH$ zqTBPv4xs!XI&(i|L6qw*8e%z{hNKPjZO~`*O56bQ6S; zsQQ#x&ZwZr9)A>rO^B?N#j&gyks$^!TCxtnZ}sPBNKybX8X!i*Ace=Qv22Ev*anE3 z1jhq@@(>{HIvWB;gQw49Y7KsG`(haK*fDN!h{SP%nI)3X|f@WTd`#2~b+Hzq^*>G_U_$sQbEaxwnQlJov* z)nB);pOnrigC1ltt|im002ovP6b4+LSTYXg+){V diff --git a/graphics/object_events/pics/pokemon/alakazam.png b/graphics/object_events/pics/pokemon/alakazam.png index c4216a38ea53f4a639c2ded23b2bb4a95ffe25fa..a11f2af5dd680b08dfddebda48a812c8f8615bed 100644 GIT binary patch delta 677 zcmV;W0$Tm<1^ES#V1I;3L_t(|ob8n{YvV8!$2Drxdc#47(yb6ET-PopWHa2M;vwLJ z_C$t&zk-I?XfXIQwcyf0(68c4EaM^YPKu&fcH^2G@8}y8etOdX|NJBrgg)al{*Ms7 zpZ9D6^ZuS5PYL9Q#rSoMO{4>Z9#0A6uibc#&EosP2lRMK0Dnt<9L}>TI6?$Qc}f7w zNN*WuJwtzz{o5!{3gjig((A~OasHC*Wi`r^0(mLrhb-k8t zK(|XrG|C4-zheVNLM^2%V==~<8m4@V^YTiTUcp1g3B8u`nKt}9BazZ&Nu#cSK4W=v zMX7hh14fymmw!^;(0Fy8Fr7C0Bq)oE1-E40AijT^F*ygagm$^ zhm02j73-H)xAt%`(#WwjM4Pa#gCGoBd#soimg|L6q<{2@c@M>a(-;I@zfb|{P?G34 zvVt6Kf?$DgWDQcsr+WnQ>C2;cs(lvmR~f5V$tSooyaUJ9PzwqY1bY4Mu!rbXhQ-m) zOzojzo;5w`+sZ;P7r}no)W+^FrLTfuaIf1sxeOEMJZTNjgBB!g0CS3u2#`5`z(%^^( zjP{z&qQ$AtY zS|Xe{gWU7&9)UdIO>nAx7U^83I@R(33(F_)>dAW>x2pDufdS!G#V4eit!8WtGz z`J~jbj_deLlrtcn$-)U@26e0iBF;b|LFyP7KY0yB;59=*K+HNm5z>}X)RsySxBAA; zKw;QtO@HQZrM;(3)@*^3o53uP+t5JGpkqaHDz#c>(04&q) ztss!6!AoK%bdXi2HPdBf|lDMY{V08yK%Fbn2C+6dm7wl)F? zRFF4icY?;yjL?(#_TvG%7zqAdo&Y?+e>#2xJ`+Cn?2I(DhX4Qo07*qoM6N<$f|vn7 AbpQYW diff --git a/graphics/object_events/pics/pokemon/ampharos.png b/graphics/object_events/pics/pokemon/ampharos.png index efc07213b3b6733e8605f5b60e10f87790f85f1d..076d853d035d00096907463e52259562df05647b 100644 GIT binary patch delta 618 zcmV-w0+s!^1-}K5V1G(UL_t(|ob8pdiW@NyhE-f6fuCj!VHW}iRuS#%TxCMKD_j~Z zFzZUND!e+E2Z1AgfuuRO!h~?|5^2{f&B&3j2q^+Ljrm5ae@3GjnXz|!xBtR~Gpucg zpFeW2*)!dfGye91MO$kC)wQO;&fJ`iw>Sa9!KG*b%0gEiK!3fNoEQ8?0^W9-2FTc| z&BvEYHwAtx0XF+N*UlxqoSEnsr{jEQO6&sy&;$sd9-*#wNiS!w2!|&yMfL#!Xaa-} zFVN1BV9tKWhsNHSD-7Ps9BxFS<(&P78lW>*IAmO84tG$YlII*;VZ*x2Lr$#30{op< ztjNJaS6pK*<$t=!L&4B;&Vz4(D{$sl#F|bLGkU!kJ?$@r9K0wJ?;Y^+r~O`iluPK{vIcBz|mZ6n76b<*3Dz_~Q)dD8 zUQfEDuw%au0a8hXU9B4QJPn-UG1n|A{8r@b+fp{lq1VF)u=u@m&V53H;@**eB)@JI z<-W!2&rBW8I~X-rgfXTmlec|CndgqbwTp-sj(=sp0q^8V-=&s;#{d8T07*qoM6N<$ Eg33515C8xG delta 611 zcmV-p0-XK71-J!}V1GkNL_t(|ob8ppiW@Ny$5ptIz)v%VunPghs?omARVL&e3>KJm zC0I49a~TL6@e3r)!4)QidzVQ2A8>Z zO1A}mD*?9txzWxgy_}gCn(JkAG9~r_0cZk*uV0|9PDw9kuL$QSFh%wO0cZk*&o9tz zkYLV!$A{KFm^%#K${cP)qUD_Zh8mzZcQ|BRWDXBdp_1nuTw%k$%wtZh!~*=CSFFgv zLRZ{lF6F++V}HTWa?Yc#!4;VK6|tt1M0o%pC6AmGxYBz({(;w@5(`BqC*w}LG2=yH zW~8vvYRj${hFSbb8eA)M=GTnFaF0U~6(&XsT4}}3PmJ)=2tF^X(pa(e*Jr{(N{)9P z6=sgD#2YC$dtoRq%fCMJ4L}o97T*TK!DYvyM}?W=uzv|S?!cq~BfBNX$M2l>h2wdj z2$11xZU}Ri)lg)*@nUe#AzU5J2;vtq%_s3nW((p|j({UOko~+(d_MS@0 zc1VH~r$(^qxYKRAwu$3`dS?Moo~SANGifPhr&_{8Qm~RSnQ&$#SknM)odqynPr9UF zRv|ztiCnOZwdi>oImKhHZ7Td$rfOk)T*P@{i=#t)e`1nEjcl x!+8gz=87=IG-dK;TFN|k{H@(Yym9<1`wgv^L-$9Rq@4f&002ovPDHLkV1m^wDp~*l diff --git a/graphics/object_events/pics/pokemon/anorith.png b/graphics/object_events/pics/pokemon/anorith.png index 4442109dd317886cfd4dde55b89e780bc3b108ec..4588e2fe1fd55696a8e835bd60f3dbc531fa3518 100644 GIT binary patch delta 649 zcmV;40(Sk<1>FUZV1H;yL_t(|obA;yYvV8!2XGD7!Em7O&`yOyAZ>?)0}pkEPCiIF z931#7nWi0{3Dztx{tg#z2n6yuvLwcK28ED!l4IGjTZe;gch&Y2@%!t^vO>t`_#B_( zpBWY*{yBemP~S?}SdQE+Pqjs4g-)P$$Q(zk>wu=^Oh01* zt4m4)Hxl9ZBwUYv>Vj7Es{A9;iN~!iSa#f!4ikaLa2UjdVC5-~5^XDDHb5qHL2I^B zJ}k5$7n==pp?_-eVT$UHqX7C`%RzQK<=3|MCF#QC*EPTdvb8lbXFaT zv^Tc1`?S|(h~nJcNBS58ER~l~PHZmRo78b}$`jLK$aDdkpyObDf3+>Q!rRHMsT?Tt z%9-pI#eY%7DHM>oCv_6rS^l84rvTdY_!Jd;&X7)lE$6yQr|>joS~C#_jjUXUFMf8G*&e jfUVy&|DxLdpT{3ihWBDkM~spH0000^j%P)j{jj!=F{+U4u ziEjDRgGE%{GGR?#_;Ud?VgQmxUH-_}hYi9$gjx|*zRx4tWq%XdEO%i(9V=%Jyy-Zr z5}0@Qiul~mbSNmvbGDp%gm8@ z{qvG_;LLbv1DU7vo)XCO0OS=D#(p2TTJ)s7B`wE-n}3(8$|IvdJmZX%XS5r~i(I|E zOvA9aIc@8L5*G(#bwJZFf6v2x@ZH|qSf80Tq~(!rrr~kDfAMkHbXHvo$tGSlkgUs) zF7n`z+G`B3GG0MBvAqv^(hqPZq-!!zDCf7y#?tK zwogM)pJ+~7_8+UXCj)cbWxRb>)$gmaHR-ya^|SuhB~zNeTTtoL02-i-#`w98*X4~p z7FeEjQAp`=JZ$ zCKES<9!qs&0Do$7nis|ntb^#m_?EBl5Jp_L~@rNMcfxr_L#P_V@jSOm_I2epr zPCCRh&Qr<}7%bjf0*WbXC-;p5FfN)Ag7r*G1CeDTz<-C)B-#-}*0<1%K)_gk#QgIa zLD4`dL1obCF(pg&y~}#IQ$?(Si=LUr-%k!qcqDATPTWlj_pTgC@3M|;B)o=^0b7kv ztpcV-_YQA~ljTS>;7fLU%76*hLHUK>H3t~`e0JTlG=SyL8*QvWU5*4ls>$aqp)*iB8VX;cFaJNnMl7cTYxM%aOBAO9zz!qd5a{4NKQyHj z6X5Wv-d^ej=o7m}x#j9!2?X+jW?_sQ9&~PKmV8I3p_6sWKfC?{HyCt@Qc9FQ00000 LNkvXXu0mjfW!GCjuP#4H~)1Fsw;GRG6 zxGhKuL-E77U5PNg(I;T5<7!|R)*sAl1PM^J5OzH;Ujz4n%1B{LpI8_X>;$1l(_i`k zwz>tLG_|bZn3(1np|nRpJzz!##$CgofVJUIt1}Yk`QZS{2_w*Lrpwp*1l;v;=mNVT z;%+ctscsBF&3{fagIc#h37gCpMH@xLU5j~Cq&zdY-Ic!GGjP{O#u*4Rea5VXf{5jZ zR@y&r+(5$h;-4Q3xM|nD0j})=xI(a>A9wZ;{Pn^gf`lgmFQp)Ul8${bsDa{SFkyMo zAzpEwT#mqC@!l4om`OW%Y@C2`)r=6VXIdJFEE@qnOn)Yo9q}ODhh~HVjP*yPpU()Y z43rX72A!T#vZa1-q#t9ch&6E43)A@f$$<%vgw5B9(WEeT`A7ywINAeyd_TNBhi2_*&QhlOt22}FZ`i7z}VNT>t4A5EPwT7V*~1ZB=}K{eH_st$;m>@ zz*ZB0zG!Mn1u$a=N#+erK<&y<_!52o{}DD~c{#9FuK>J6an1njF!Bw74&L)aQ%W%b z4xeiORZL$)X*aNj!=(I)+zt&`VEU>b56R`6QckC002ov JPDHLkV1mxMB|iWF diff --git a/graphics/object_events/pics/pokemon/arcanine.png b/graphics/object_events/pics/pokemon/arcanine.png index 010af6bea306e3972199001c49f610cc3e8c23d7..b3263b06a44c2c8dbefc2182a44a6c400ab9c793 100644 GIT binary patch delta 879 zcmV-#1Cac|2f_!CV1G?XL_t(|oYj`iYTPgsg|+flFVQDxLRJk~#00t+<`o7y2n-(l zGR1Jg#Sc>$FsK;9UC}E?ce721(aI6 zvO+Sh1lRno{s>S8@2Djb3OhyK;CCD91NVw_iKM4+EXj5LkbeOWrW7I8!F&>w`FUHg5?yP#@10(8+Hb1&9N%| zu`hYL1+XX*$P3OwkUTS{x3zA*%m(S5nAjN7yX~h3!ByKC1IN}7yKYTz9>`@*A1ZxUwRd(wcavdj z3@LP9;eWuo+gR}a0_!cmnS%4p8CafY96d~RA^jQYO6SrT>YJ~Y?dc}o4wqP;%JBRG z@Z1b`k7ssK&QJ~w+!@oU4y~br3YQl@-aa-L8Mi<^-&emrcUCZ&Sy)2_H4j&C7z?aZ zX%AhA5@#I8H;qyuKdHG)((%X0D+yL`&50aQuYYdc3guX8_Lr4xJ5;<^^Ji}2IJSsE z(`O20Y7H{OHc3gIiBK?+oi)u$AcQ$jlYgJjT+9eXS|tdAjp_9o$mckk7dmE(0JQN+2DRKeM1Am=`r}QPLF}$ z^cakv&D{1IZ_tq_?#QC81=sD3@tK2e{l|0l=kvd9e*nQ=E!lnAvxEQu002ovPDHLk FV1kcurojLJ delta 878 zcmV-!1Cji~2f+uBV1GQxE}Sv6!46X;@?R~YCZFnI9G z6vG7@aOS$WEn7nrET`Z!wvM9Ouro+&j#cT8 zeaX`;fJKo&UhqETVop<3o8UNs%&;rm=%?WP)z|ToQGYO3Smh{~)(bXy|W9tn+#iH zNTK@*2Y=Sx#)9`3Sa12w6r69)!16rf=wYf0>CZ@4I+w;!-+Z-fPdD*)xWxKYhUXW6 z=Vq{bJhO{(hH_}&&X`VhXblxqxV-rB_OZFhxCQF@zWVjKvx3RY!Wt^5dANeZSYVw> zd+17(IO90JX_N~2NzG-Fjz30TNw9)zPUMJsb${ztD92K>zpP~2q2j%oKXVhuu|*7; zK2s=DYmgbXNlNlego26ev;hORB-ygVe$%S?YCvw-$s=K+3X>bvhVA=NRWN>(PB6(2 z13wCI(Wa^ag>^bwMT$R`9?4-VUWID?9(S5Iju{)2Or0Pa9@H@SXwz6nRtcWjj#FAk z9%sop9@Nlo{B^u()NqbHgN{UTM;2`@xNdKZ&m45?Kc1^UpZ{(9143sli2+hPz5oCK07*qoM6N<$ Eg3ML2@c;k- diff --git a/graphics/object_events/pics/pokemon/articuno.png b/graphics/object_events/pics/pokemon/articuno.png index 3899abd57bbb79d8ab2697f7f3c994ad94397267..776024b0467a6fde992a22d96f6ded351b81554e 100644 GIT binary patch delta 1114 zcmV-g1f~0|39AW^V1G7AL_t(|oW)kXj@&j7W|6QIuu0$|MSznwDpI6a%B+G#d>pe- zq2~HPkQf$1un!drDpcG%*M#U9+h72kG=xpyHg@F)QEI*O_KF$nhNJ9S4roT8N ztv$8vboH%?|B+7Dq38Yw$A6TyhhY-=7<}6F3!Ak9>3AF1Mt|t`fgZ=+C|KC!kyNLz z2~Z8N8`sCu@24rpO`($>TLlZ-Q*ORZh9PBvVEUB5fnjF>?o!9@Xcct7tyg0YWiK@t z7g3hh$&^%NB~8Y+6%M~_O*!oCYewe|O(+@wsG!05P>rQFBBNRGm0)=ylZsX}W8efV zj$}rQ{?yldtbZJ&sitLLYE%H-SZ|Q7ABgV8%|!G|p7fVhp}^)X6aa$*e{wd2!)09~ zrlk)sq_rg+$Duhos}Q4U&V|5E^>xm!Q^Sg19i_!PfpsFf$=EsKD9}Pq*C8R7MIVLZ zT+2uFvv($Ab#hA2q(vo9X>e$BRZR3L1G(&Qw1C~$bANZ8+NlwR`?z7Z9D~5=Ddm*; z5a24rQQ$gPXY~Y(@rX(1k8EoM_`EO_@TYLYp6tk2%QE~Gxu-PPTSLh6IP;2$!c!WI zft2pZh=O0wA0CUPV19K2@p>;EWaFxMgPN*ukT%$PhgSxzF{SNSx!BK!L0$n0^23VKz9WJf_ymvlC{1)XY zCae9Rf&bF|!Hei(YVb}V!7Z_9K*KoF$3y$|JAcLjDn0gt#}CFn%wRhuky3sbq>NtI z1_wEuAp{d)7;{?*2CdI)LJ!{oz=S16di-GQ^8(}oZQH6U8enm77`Ce_RP<2B44zpK zxVy6v_Js8A$LxXIqUku*yYCOXQmzVvi=7Fb9^&QRdKx9XD?>`L?Do z`hQI(cZb8zfsHbbIA^;k&|!$Ds$rlJt0+J*1i#lrc>yXj`Cj8G@-`;o@a--Ff+Ln} z9|aw557fsph?wrq(FNciEcfG|b=bqwmE(P2SWbKj1b6`;UNYtlG<8+Q`$?NZj#!9j zqk6BOVeI{mvG6YI^*&y3osKRxMbltYMSmk9-b!vp2Y`KA4s9#KBJ^SM4B`4lfgwC4 z>>eNEb%$A18{BNEMGaxEeOlsWfp=*y(cijlqZ2WUlO;eDh(mtdHB749V!B-*9bTl! z7VPgZG}_{t-h9P832|$P(5p)znih-MusMIY|K3GRnLmZkg!`KmSRVJrebf@h-BXx0 z7Hm%?s=!Cg3g8ik{Ikow!0l(}e4c!F#RBc$V&T!YJufxv-eaF3nWvj$>-4gJV=J#e gBG=1nqhGZB3s9%DNIv9QHvj+t07*qoM6N<$f_JJP0RR91 delta 1115 zcmV-h1f=_`39Jc_V1GABL_t(|oW)kXj^j2EW|2%Oz)5gLiU2D)E>fg0b*us-x0++2 zLe2JpATcb2z|RyUf(jM;4tW!0<+#{F&yXR-AMM?Fk>Y?5Fw9RRzmGG+8IrO8v+2*y z2(_oSovyw$@jue(I`rKC;Q05l_ApFhAA*mYeqpm#C>?Ku>wgHWA7DTBM!~}75J`3V zngD3T&A8r|em_k)t_q#>*eY1q9uMZ*WEfH&2&Rwu8yq$k&@OfCj#feU>v}czSoTt* zaS`yePNt+{3u`j5u5kEeYsz73Uo$#)Xa-~el7dF(Lp7G#h>T{z7X?2gGO3_~jH45< zIFcDH_@S@2SbsSPsfMyIH7THOtT$NK4@`ICY9jgNko4z8k-+LL5*Sc8SW8Nt(%{hMDxcsfLwVicXaT>k=YQ@pwNq2%?&FHxateZgV=93A z5YQ^ZQQ$IHC-sD!i-=k0k8EoM#C+u>;7{R-J=vb~mS^<0d88`ESmD$#e9d46cEW;d)AP6iHQ7 zmFajF8-Kjad4vSC03A;d&HPAfO9?@HOM!KvP#$yq~lw^XB>OKV=BDY<#Hb{xK2kGo1$s3sehu8kZvV6qeG-VltbGVVG;Q-dB$*klfV$3 z5_XS|@w%g|sts<|)B;1;YoC^MS~ zm!biFDR;RHc#ypGu4FJZX#>VNk)ca_7i|x)>=UvLaF2W3;~sw}tpA;1xZ%E9_o-dC zb^eAMzv{YJwF$IlJ1`Lse#MBQ8%*J9N%Lp6*b$ZJbvwjXH@KSWDt}pWZi@v`ohHal zL`|<6;^zZax=kMkP_2Xp{Qkxd(C{#IB$*224A~U=7hNcK0dp0_tce|12cC?*W~VH%aW8N zH`p!W(RZvmCd6cKOMhm&dlaA6JTnCM^3X6}N)l@vEoLfFT=A)viH6Uf$AgI*f7q)w z<%T&F&1J=|86AJqlu+D>+GK*IhY66e0t=^_cTL#JjNDT*fS4liF{ZZ p@*CvpKDqTi-Y-6TaFybp#uw#O+Vq^w;rIXm002ovPDHLkV1f>p+ur~H delta 923 zcmV;M17!S=1nUQoBYy#eX+uL$Nkc;*aB^>EX>4Tx04R}tkv&MmKpe$iKeQqhK|828 zWT;LSL`5963Pq?8YK2xEOfLO`CJjl7i=*ILaPVWX>fqw6tAnc`2!4P#IXWr2NQwVT z3N2zhIPS;0dyl(!fWKa5su>&yRLwF{iMWu-t_q=7bfOPI41XdhF;kxt#Uwn(*FAiE zy^HZI?{j~S9wlcoz$XyTGTpFv%OftgRzYb`B$1oUnL7uPLK-UBXofPp7nG9*U|(Ddi? z!220}Qx@pI1-jSV-kSS3eE`zbRq_TnI0Qxul)dip?h&r`-u^w)?C%Ho!*X^LUZLrc zAwGWq32;bRa{vGf6951U69E94oEQKA00(qQO+^Rf1`-4)BD-bY5&!@JzDYzuR7l6| z)xA!HKo9`nEveNo{)K2Z!&A7kiRsYQgUA}*u-&f0^X_rCMmTn0&Me3G7?a?iOrYA(| zodkwFfaUoJ)M;B-C4&YU#0;DS8fXEkF+T&_0*joFCd_v#f&{RBxLm+gvu804h&J4ai_;S7g}|%|NpP zcySF0pt2zb_G`wV*<3t2-a!n$->=Vah}f=AKpnz8Kln57?8d2nJY{+}fL0&Ze47yY zwB$1gAUj3&b&pjof~qGvOW2S1G=P6$o4(?5lQntkMbP_o0$v79I8y5?wxpk6d5o)} zH1K2Tp99Eh0qt&id5l4w)9yN9$JF}(jw3eC_~UdA1GG~x?DDkMMWAw?`h-_gBI~9l xKZ^XMxX!KzM-dqA2lt~3>bp0>edE;sY#;m8(yFZV%~k*a002ovPDHLkV1iScqALIZ diff --git a/graphics/object_events/pics/pokemon/barboach.png b/graphics/object_events/pics/pokemon/barboach.png index 893b3ae3649353c11dcc4e55a439c779f7f06bae..af6e0f1f4b1b89f03fb2e5432fa25d8c8ae27642 100644 GIT binary patch delta 432 zcmV;h0Z;yc1cn5VV1JQGL_t(|obA-TYQr!P2XJW;)QbcLgFhZ35IS@-5#91A1qTWO zCwZ4?06w74icQljboOm5&0)IRbY@7UAF1X)xEaixJ z9SJ#dS7Y16ZF$fArc%n1cpb%Z(y`%vK=^hFD%$V_nLr=eL=S}y;8n{os2inSe zDK6as=g@^RZ_b9;ES9G4_R!8iLi9fWNVMOHDf){Wua}QkMsL^9&Om!2Q#=&h@4R?j zt%%q2ZYi{=pntdS9V`!>I0T%$q~OCtW?9ko4YF|G!O{r#fJdgP79k(#Ds2KLtk<_3 z+Py(SQ!S7a0t!9c5S!`dxdL8*0i@OqGWsFqq6vDY6$fl8&}UjJhe~VMw->+yt>FNc zX3mk>CWTMHj%+rS)30%Vo>k!jZQTKFi~p=><}CQ3KPg+I0&CGkRr&C>Kn45ksG@M; azvdHeW2A!0d3weG000055QXBwQ$rV@!$;VH z5J>C0*i&G=7!Z1Bg?jR!m!1Tx@8TW=XQu9YC5XYa9tt0dIqkM&J8qw+fyuUEr!!N{A?UQwNudE2ovd zzyr>xRShR-LvA@RknCQm(Lewv%lFKMoqed}{3ht@$4hXV6*U^@PXxmUrNSz#r}q(OFFE<}m}Q|v(lTrO4lHPVzypiA(J}AEGH)XWnYdd;jc*V{ z?lf}-r0_;JJY$RfBL-<-yNBi=iQuD%p%_oSN Vh8KboEXn`?002ovPDHLkV1nS=&HDfV diff --git a/graphics/object_events/pics/pokemon/bayleef.png b/graphics/object_events/pics/pokemon/bayleef.png index 95ef810c94928a9b624d8b58e200dd3a2528aacd..58545acd1babf83b4a8439238ff232c426ac73d3 100644 GIT binary patch delta 595 zcmV-Z0<8VC1-u22U;#&wVHkh&lw>M0Ipk(QfWl*dLM!Q|tE8o`(ZrJdKY$TfTcZ9W$H=R?CXOVjtZDzdBrwW*s}U?KZv zvmE-W#OdOu%R>WXEJtgwhV|(s{R{VpX4p~#&T7{hd*8(pr)qy(*QP)JxrLn3YHesj z&Z@TnrjI2~b$lK;p9^QT^Ts-wkh8#BfNL5c!SIXF5m4@j$N1*bEo+B3(4YNcAH&{GtuWeix5+5cnz5MtsjcA!01T-~6t| hteYAt|8D-D^&OaPOka>8QOW=S002ovPDHLkV1l80DkcB` delta 587 zcmV-R0<`_S1+)c_U;#goVHkfiP$0>e$ssob0u&y-XcfJ5wY2ozSh$wE=pph3rPA8E zV|!`Ptw3)3&iwEHDVmZ}@AY1}G$L;xR{t=jRLx^ejNIWI+rj~P2K|Q!7-M2czq!uelnufe$<*AE1i_p$zcSYXddN8oU^&WVnC8G z>S8jKKji$g=6lb#Z2FEk=7CJCnfAJddj|Hzba9CMP$x0pP#jpEpKDl47f*cvXhaTe zb6k-)p+#5~Td2DOzQX1fV38yahYi4*7!*7SAk>gv<6I)^SOY98CGpgPfKbW&Z5sF> za!$kiOIGR#T}wAr@?U=pa6)pfCFg;QReigb`7|lEA|IEZ0CoqFbLS(#^IB%JS=GxV z@)4e4;aZWEddjDk9%ME)v^I%c!&k8Gi^#to8p^C)-}_2rT?1NIH%VZn`)0Eo`by$_ zar5P&0SeZmcUZ&v@{<0I`%^P)sR3uRKRCbZlEk^1&>ixh|Jr{-&giXmG$CixdjQub ziF2J_2F~Zg+3Z{A15L%1iw%@>>#duJUn=)LuRHqiMMdq)%Ag;rHF8)vPjH+f?AvO&8Y zN8*`JaXgW$GB!WM4ZTP=%`j5^hz-AJ1G3*$@`FO1Xd_kZ6QV{D-txN{i*9b1^1Jze Z)(>0`NQ_hrrON;S002ovPDHLkV1lHz9C-i$ diff --git a/graphics/object_events/pics/pokemon/beedrill.png b/graphics/object_events/pics/pokemon/beedrill.png index 6c1c26361dd63b357ba360dd0d5401f04ed9b269..7a163b62974aa6545146d60928183bff918f935a 100644 GIT binary patch delta 719 zcmV;=0x&AnF%&x5qe91Xn+NVsJQUIp_{DmC?T39};D_1}^o79h zFz}T7wy@H+g@3rA6J!|5v4=t$K&&S~)CcmU^SyD%*RH$cp)Cy1dsEn**l7V=PHYP? z@Jes_rVk`#)cP}+XA*=P_roqQN5~`IIy5_Q+Vv!M2d%@z7M9U3to*V!kG+J}wQ-GG zntO2XOY@96^Q8@(U3n42WNKT8fnVL(HycQMoB4GZWPfun<3t;0k(UHvNn(w`xGMWbk{dHA0MASrPWZ-`oX%|ukcLwD`gT@ z>#FHg_;m`KI!bD;19yH5on!l0Z`H;V!x42ZjRlX>Y^~BPT;zS?Uc1Y~K!_p963lA@ zSq%yhNq>z05VHogDdCO`iEJ?C0IKoMR1Mw7qQFFL%+rM!n5(7|N|s$9Ye=PV_%Jh~)ajvuCdG`A*!# z&HPL)Rey!4*0KGkwh9zHz-|v!SNk@T(M+xF#MTM# zw01&D_}Vb%)c?Lsl4Mp7fsx@+V3a1^6VE0*1X2S0Zoj|Jh!f@+F$}p21inGxEzd$= zV>krjgl-TCQGa6|0%;D+41m}PdC~KuXTtYMa^fTe=E$uN>{slz2CgO?0#Ud!Q(ihD zh}iNc@OzSzL-OvF`z7Qtw@myDB3n-pW?-2VAyC9WG4gZkw_Si`*KCdYOjxEHM71FvbAvRo|Ttf8z`Q<~|3;~v(0ypgr*R- zC~kzOj6u&VZ0mzQq;m9MwJbbK&dO@9%ZjXpGq#3%9}00~Q5ER3LOiE5AQbkCuR$LK zY+x|5fqyB-!=p4Js#{Hde$GZ7KQ|<0BZJC7wn{j+B z$w;(I!&Oqu00000NkvXXu0mjf(0)x; diff --git a/graphics/object_events/pics/pokemon/bellossom.png b/graphics/object_events/pics/pokemon/bellossom.png index 062218cf5a083eb2dd6198f97d47cb4b4121a146..70a83c2f4de1bcee4f2b966c6a81f49f1166e426 100644 GIT binary patch delta 545 zcmV++0^a@k1oi}wV1EHgL_t(|obA;yYui8+2kgF!c4H#&CdyQ!8 z9di)C4YTjrFxcilFf8+G2y8zgqOa>51OvnDIv{t#z_$F1L0%pjaImcvfUV991Pj%U zZ*)TrTJ2XnFMsu0;h^~&(09r~1-w%8?@8{1u$f|LuLePQQ2iFV9|ys@tAm`(=O9?S zH>Y28BkksMZB?D6eBxxKcTiqZP zoAn9FNfbv>FQ*B~U_@T+N93g_&>>kZ*wO`)r~~7XdI##ddT@pm=)e!;NQOH9MYJLF zyN2;dJ>I5$;3I|v=s=`*CYP?aq$iZF_q6)^Iwa4oB>g7IBYFv0U{$iBpY6Y9^}wp= j??Qr{jT-%fy`=FAhaq);ks?=?00000NkvXXu0mjfUW5U5 delta 548 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 diff --git a/graphics/object_events/pics/pokemon/blissey.png b/graphics/object_events/pics/pokemon/blissey.png index 2a3643dc8d78acf686af809636de1d1c5786fac5..573f40d3f070296220d08db4687430d346addfcd 100644 GIT binary patch delta 507 zcmVTintcd|vX~L?|d(RFejrsXEC{FSetXLT@VM*#y3)y!Rv#2xFJH#3epYC~@BZ z8(x|T+MZ%c3G+$#SzG&B5H{iKebye(wM4bROrmhxLwq%^Fn@8|rX*jgW5b?JLDIZ# zOT-`bdzjdFoyu|9I#Aah&p9H;B5_+9+2C&jdbV5QIr7$ldd`~yd~jR7ITudX1-v!y z#4@#Czg-BoJz3Nn&XwD?VbL4Vb;X+#my{Fhg!Hf&$qYGXgqbgKWS(czRed9x@-VLw ziJJ{&rWaV5=YPH=JZ!G)7bEQ1^C;wkun#lj=31k%+iabhj<;zl2-}9XfN~5I^NYam z5KNu64eMwP=-88XH?09Z-&|!2bE51qoI1^-rr+IxCtiIsyBW`rvcJRq3fB93?e-w} zS~m;=w@t%Qbr;Tn@*vdP6|D5jgm464_6rcZ&DK9*7j$d*H?VKE4d74u7(huof{3>F zJG}Y=+aM;){B3YuOhBJ;7@jd3+(cuTm!#QzXA1Q6!)Al|?l|sX(N3tRc(XjxE1u%c xf8KlRY*TdTNHASeXu|KTpRD#XCy7rRe*q6^+X}wskG=o^002ovPDHLkV1lp){WJgo delta 508 zcmVxA^ExKbGk0ffOG z6NQ@%WzY+(&42Sy5gxTyb`OM^Jx_^3688BFg}K)0*lk#+rsG|jO2W3GEub9piTOp~ zM;=5@+lEba2K3C7-A!k}z_-`g!kj333?ru@YWsaY@WiVRW;f#*QucSaU-9++LA&jF zZ<~gm=eBA1rv4JnfU+0rYQ?4gIUziK2WG#(W4B@b6?Jy8=6?nb4cmbKNFM`U(T-qB zn|%+j-}7w{69#`9+!Pb8&o~Uv7`)r*n9nQHFyEO19sRSxo9~X}4wl_S`4n%KN3!B6 y?)~TeZ5=j6kB$WBib5NHZ~bI-m^n$j+V~CV7}uJ~O8uVz00000 diff --git a/graphics/object_events/pics/pokemon/breloom.png b/graphics/object_events/pics/pokemon/breloom.png index 18ca83cf5726c87be1fed79b7233deb2db7530c0..cf8eb0c718c3f1e7d2095c9282de481b28f12555 100644 GIT binary patch delta 496 zcmVhbp~AFl-=Q5Lj?;ab<`gjwEt0o!uF-vcX>MF)Gdw2;6j^R`buUkPxt| zUG3_h715(ilnffAH9f*~q0f^6<7lpRaWvqW*5|U#IAe&0_kZD!*59tjTROPt0`>it zU7LoRuHol+OPk|-d1VE!QtMK*2|T_s&lG}zdD%6T#eln#yw>{7m3~-u zZLZukEVpzpFTcOGmR$qtc1uOIt%-Wvu(@J73X;w9f(sTseM-buo@>B=M)V|-4dPJ) z(QgmJZ~@ssJb!w=e_6}+2qWXIX`HIuZdNPmI|6mqK3C6TcD=|lGB-|!GS`-Z~N)={_jpm2-wxG zcJMS&2hfGvI1S3k!)su>A2qz+FjRYyIX*KPw>%1&f|OC1NYjHQ+xZdJ@S7@u-35 zw+CUkfNUThJ%8W7tY!OgLCZ*VyB{7#P<132es;OHH_Ak#&1XfLL$a!~tin1S35Gw- ze;u@oNHXedy=-HM24@pAM3v+?jO);TM2=PGN;am4S*2zVFOKVgrwi_V+I!oC{)J*qB4u8-Vwtc4+6{RxgnI lYpTIU*#kE^+<^bN{sOYZx;Mm|MI8VD002ovPDHLkV1lAt_aOiP diff --git a/graphics/object_events/pics/pokemon/camerupt.png b/graphics/object_events/pics/pokemon/camerupt.png index 5d77d49c5139592ab26ffc2f34ddf78ceb13de6d..498075fe1708b7600fc462f1e74072ec2eadb067 100644 GIT binary patch delta 808 zcmV+@1K0fJ2Kok&Uw;DyNkly&u-c<9LM84L2O5*LTZ)RQ&(}QS@}S5cKiS{{DVW z90$YrUj%mWt7Ti;`LzOqZROnt5N>C`v6XjfpB!7|44^awuz!^QLI=UnDrewh!Rgkk+dB^VrDGE2`= z)_!oc>94ZMAoCjxdU^(7IC>(-bNQoXIRK3A$iqBac||r{9|_NHI3;X1@hk|wW8c!V zL2IK~(37*W^nYwJ!Kf=(J_D5j99MchJc1=`&^L|VwD*)P?IN2V|()gqJA$JAT7&=i62hXr2(wg!>|rfYFJ<-AfGRooh4AYDlaGUYbST#4(^$T;|l8{oYcL%!i3WVyoRf| zO0&4a;Qgc-j{I0n?!9EGJ@#7&;Vs`K21Q0(oD0wA*)mRf72gl){@Id@cE4>9Sl!C>%pk?lnV22_ra zhpS`oW8f_r$ERt60yyKdVs6oyH4=~9;$0Syc!kjM^!hoBS*1n^Km zv49jA`ZCS~I7tUBPM^WGCq0dWE?!i?@RFq|+$Sh$>tZUDT_97@-?EI4hy2f>L{SFd ze-S*uFP4w?^GgMl*vp3vFy7Beyq6E^h@GN#hFBXy+{%BU<9~FF+8HKPNk4Ao!@?c^ z1fo`kQkYLG9~2xfmH2tn&RAf5wDP9OURD-+XI_}ZtixIu_dla_baEw-o3+qUYCRb? zdjg9j7C3S<%(BTNJ6-A@C+h)la?9?Q)yiu!2os_rKMq>hAJ9dbey0g?GvK|+A_aO@ z$jzQmf`>}fGk>rd;;HUQC%A&&S0UN_6n|ms>+eF3X3>wTLg!2bPq9P$FxqqrJNsgCe6hJB*tPOCtpJjba zO2Y;dh2?T3{3?OXU41!8(mT8Tc6=usY%1)lY}SwJ3JWe1$R6#|F0bMi!%wq8Hc5;I zGJ4KhNc>hxMe7fRL6eD87b;3*wTw&N#E;Vc^lI?#`ttg6Xu34n7>G6hau=@a=b+&7 zCQCUmM}M7Qhv8z}mt6Xn!}H;}l!49LAs+uV8jZfLs=cVekn0ip2we<+jH0!W^t?>a z;LQjs(louAjU;!{vq#rHqmbJAvVC{3L(- zx+r*Px>&qjh>&u;c%Zw6hIzI3P|kfScjMC6ZGT1lX`W(z$%K&G+umfY5PG;Curb60 z!l0~J$3tny1*_xu34}rj^DWq;loF;-MS{Td0J9BEQ^f&r#6ca`ISImypmMhYID{k! z!*YmuzgdPF0N#B?>Nv0y0_%?rWO@**dk|9qGpAY&!)MwbH_>Jfr_H~oKidmHQ?I79 RpbP*2002ovPDHLkV1gCnbIt$& diff --git a/graphics/object_events/pics/pokemon/chansey.png b/graphics/object_events/pics/pokemon/chansey.png index 1532d1cca06af30a10ff7b934d4b085daba930e0..72b42352c66f178fb59ced1bce7e6d39dcc86f43 100644 GIT binary patch delta 428 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 Z@c}yZ{s@ug{4@Xn002ovPDHLkV1hyNygC2? delta 370 zcmV-&0ge9B1IYuBV1HCeL_t(|obA-XY63wF0MHZ+o%sDD~Do-!9~gU_47PX0#9 zux^5BUg>Rbj+U`gr=ZjS5w3kk~A1)>FzU;!cSWBoMrmp58scRq1gI0WQMJ3D#46(*y^lCZWn0aVXQ+=|z7lh=<_nQ_EBQ zfjq%nO(j%YLNE!{M8`glfp~(u6|PPX6I=)BY9nD16VM)W;IpR{1~EC=$F7FhWU)6wGlTnJAvT<`9EMsG)yQeK(N zE4E$lmvG+e(KK9`1dD$)oR8=z#Y)YF?fyCK2q%c8Y<%A3!5IqnZOiC{W$Vdq8JuB) ze)!cqpREnU?Y#12NhvE_f^f0%7(36Vl)jwsJ6#brZdsY3JI+|Q+hKfb3x;ho8NxX@gG?4(sDN%EuZ)+=`FA^P%p*w36G@~aDv;{wW3694ol z56+e{PRb;%@5C@tF?j1A%2pbH&x5wle-8=rj|@l0Cj=b+k@yWQ$peL`vl9CN0000< KMNUMnLSTYd{#X`D0sU{ z6c7?P1ks4fo!}wgt$>W^M@YUH!Q@2+*ZN@bBMZ!G`^iKiz!ZOHhAoLdKS#<%C^JWm~S7 z#B$?20eCVA{HJutjYt9K95Ct!00000NkvXXu0mjf DQTz=+ diff --git a/graphics/object_events/pics/pokemon/claydol.png b/graphics/object_events/pics/pokemon/claydol.png index 9f9b8c0859697c9674b29c2b648b72bd047062e1..13bd51356fb8d9f0f4af3fb0c811736111ada80e 100644 GIT binary patch delta 304 zcmV-00nh$|1BU~UV1E)xL_t(|obA=IZi6ro2H?9lxZg5F^;A%&zJ(=}ouLnqN1#J9 z)2SUhhK)*DoW_Z6l^up#%5 x>_FgbNB{5PlO!xxnezn?4GUkL5uB6=MJZ002ovPDHLkV1kQimXrVh diff --git a/graphics/object_events/pics/pokemon/clefairy.png b/graphics/object_events/pics/pokemon/clefairy.png index de4e5680cee3786212b60e9fa179b8d7edb0914d..38bd950172ed85c9c7cb1215b0667925a8566a5e 100644 GIT binary patch delta 370 zcmV-&0ge911IYuBV1HCeL_t(|obA*xii9u}2H@9PWjI}DRxdX5pOM$we|sh%$$t$!ZqoC7Ao#3NEhmRz90 z^TjvQY8)I)kgV2iK`*+n&J9ym;9z2)?Xn3+e=LyN893j;-sw(!r_YO~XaHNuPVGQ* zEjprtH#SHv$~Nt(sU@rKwiWb}w}u`M=peZ$!Hm4X-U@MF;9!b92KXjOE_4qpx|XaA zTG+CZOz|he&TH8b9Zbz?jW0>`>Tb|YC0gl5pE)gPY*osRC3X{zrbTOA2HA?!r8sly zsMkR>6+JIsndg>y_gr$n`>*c(vU@G(JBNIL=X*GNUR9vCu!wEK$ASNwUxtOPtJxVd Qp8x;=07*qoM6N<$g39i+&j0`b delta 369 zcmV-%0gnF31IPoAV1H9dL_t(|obA*>ii9u_1<=|G4LMJrEC>OwAk0Dp!K)0+A_P9> zB8>)I1VOqct~%P3y_wB`-_?sGRS6+PSFT*Sa^>&R)*sxSn}|Xzl!Nfq@WfPA6SRl1CaK3}R)1CNEpBGKh0Jf5y+JWX; zbVLPjY>-@(ZQ4^)OIF=&E9fO}4Lu&vL2^-o8F_)d72>|Y!4!K8@J*0h=pI;fEm;|~ zuw^Bg;!lK~vuYzcn3~lZUy|t6-JqLFw9<_}b6U{Ys+1i|>?Rydi`KdfvK6OGapu%f zuY+hRdS1RV&n@%rx#WKLU)}p<_gc<(4*3Aj_i*;Ssz7gH5!-~11OGR_yUML+MiPmC P00000NkvXXu0mjf(@C%c diff --git a/graphics/object_events/pics/pokemon/cloyster.png b/graphics/object_events/pics/pokemon/cloyster.png index f855f0727840bbaa11e1cf48491e2c781636bc6b..d979526f72568aa3642af620cdf9689eab287a8d 100644 GIT binary patch delta 980 zcmV;_11tQY2&M>-V1KbmL_t(|ob8seZsax)hPO#~;zLO7TE!01QGA8~fhq^iQ@T3f z5SVafN-(TeR0I)QnVfroE0Q5Ol-EYi!2x$j6IT0axc|=?4n-Xf|BtT?{K0~v{m%Mt z1>Z0p#QF^!;a^tl)T^jmy?T%9b-NTGphxcsBKDVD8T7+@e18gCcfnIziRSSgK?i2f z5NRdVjNazoA_fXaNO3kO@u~fDi3S4yK`^m2rewIac$lS<@=+kAEoxk=Ne8Fx0b^Za zd^+I<7jcLNU5=-*AYM9DhQ?U3t04dxK<7?z{?@1&qJdl>);Y#CWdOrPynPrOjwivb zuJOFS7>s1Nr+?rY54vr%bWMCDPD)D>lrWwY$2Hgq%pNx&pFK#9CxZrRb$&63hIn66 zfH4Uwt+;+pw{~f?hn3?1gNBPZNbdnSPQ%t9X~HjuoyiceFq%_4FSQ)=eBpJC^RhLi zs%VnI9yjzmkilMM3=Q1(AkVz%7?R=6)zsp{h>b1&r+@b5VZ5n3Zp3-k(2?Gpxgvz% z=mGyh{Pk&r{^wue-la`ROooLIGYd)<(Dj+P-x@v&mCPBGlQ3}xx|{^+pvE;0?(ctF z3nxS7<#g^ppZiU*fxAi^nvnnRWfGKftNyV7rRBLmDOiJS}*3n#Ch`&>ktuc^U>bhlvYY&P}vzKe(Xqb7cPs8WF?|%<>EO4}$=OzjW2YR5B+-c1V zkjw@YXV8DysB4UwxUu^$*)Xxdr{VdzzkUvPOMemwN1J)R!c-$K=Nh-;EV+c58Mto` zV!Ul+XMp;5WzL4oRxPyRn}yr5n!=g553aPK@mFN)OWS*ynKzwA-#1+|Ni*~7fjAj5 zlOlfnwChE~^T%5(hSd0h1h0IFS0?kz3*Fy3bvKy7@Y(ja$#CZxEr!LHwywrNZ%2!} zfPW7PvGZlYWSH3Q20!)Agw}+4+&LLCSIUIN`f)!=8-M#S51tN#;J=dRJ<`Hjj^;`p5Rx1c?IHxZdt$1 zv%LV00000>n z5SVafN-(Te6a*1lnVe_HkQ~ZuBj@0NJERG#{WRSF=M0CUs_Osoy@9`2P;@_8|GnTl z#!75Iz!Cms#ZJA6%FU~fxY_ng0RnpTks#u5$+ba0e#ED+_kR~WceQArJ`i+Zjtr4j zQZMLj{w-plaD)_RgA$*+r!^V~{0G6r(wLIr-eI*!CFPSqN?SCz)w2#x+X`b{VthW~ z4i|BV27QjFu_9hN)P}}XvTGm!89?t&asJ+_1)_mmA=Wv@HDv(fMZ9~QT8<~dy=m~g zy&6npc%R>ViER5#VEo&pEJYRU-;Ii&*sVbUe zaKsJ$4rFjt8AA&X1IROPI)-F;a6NbUIALpx|EaruoPTbco*QvlH1wpmWUdJzIC{W; z5Y@LGhTs2y2bVS_F&P%F78aB&pqn%Cu(x~^YMC=ACt>CcbU6vsL9J^YJUsll6;6iC z>*+jf=V4cD;I0#gHst?%nFOWWcmXD}KF%VZo2j8ExA<4#Xvi!)3tn*r?``JiRCE!j zYiB#pT7TL&0j-u0S;DxMT^V+{lL6+EL{5f@g_GAW!|iYrt{@4(z0Lfr6~*_4mI~|K zYja8mtu>HY>ZW6Z8xM+3vzJ@pXqb6#PUAKV!!;8zvU`JifdPH!tCSO#1CK6P~o53?5uglnp*DZCSuR z3A53b+BL@!7dlwW%Igti9@*k?#RzGfx=6S}#XCdNm`cm#34ZgJS0K*l*6sUDYY=ZP x{db1(JLK(G$Pa$T^h0-eTB^aG~47cF3>Qu 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 Hu0mjf#3v5) diff --git a/graphics/object_events/pics/pokemon/diglett.png b/graphics/object_events/pics/pokemon/diglett.png index 149d1b8c9d1615dc2532f8bf445fd03d472ee775..ee7fb302ae66cb3b45988c99e17635a092e443dd 100644 GIT binary patch delta 333 zcmV-T0kZz11Ed3xV1F-3L_t(|ob8Y?PQ)+}MO}Kg$dPEE<`_}jP;6r=WKl%6i-;vO?xLN<_bb*2~9quzCEf=TQ9m4AV^s~ziq2)EvPPdN%H zi@{p^dRq8?b6|Zg6u!H@^@i{)BrIpaaGJMaV!R0H{j(1T4}@o7V&Ue&y*bI7k@F&? z_c)Eir!tA7(ADXny|cE%qfz!Rj77UJ860^JeS_Gf1E*lzBRm}ku}5r`OFTd5(}3#{ zT1AAY(AAiJ0Y;#**Jyz0V^D33x;!iLRlK=$P0*# faaoUS{~z-W&cMtO=G7M~00000NkvXXu0mjf+C!fj delta 332 zcmV-S0ki(31ET|wV1F)2L_t(|ob8aYPQx%1MLoJ5@<}W(^BGaSplMg_JP8vEHw_-mB5wxHvyk57 zIP{;&B#uH?r-SCf+7{17*}X6p&CFzQ;5~FZ#9caY3Wg)X(|Hg(#74Qq(}OMzxDKIF zM2HGqjp-KvDn(0PAbvs(JHirehn6y^n*2iPpg~}LTofc=g`;f2aE?zXOCue50kJVI e>yhpMW4-~Y+ROz7DhU1n0000E4 z3^=FU_d|sve1j2?p6z?lZZBQ}(vx0@Zax6Gs8^9^K-Z#;E<8N}lI$Qvy?qh5xu3s$=0e=hh7KmciKe$gJZ!_kfd3*y6`ptS(|b%$sQhi6oyo|k zOK}1Wy4U5;9dU+ZpsWYzoLY-Ltn?D7@l-sNdc|mLLw_?sdNc;@=YHRr0elKXy#Pp@ z`dq(nuJk}Pp+L01E>u|59u5{5Jeg^JT8sA^Z763k2I6&_Hp3bQ0P$iubU+T!c9eBX88g3TpOxcc)rS z7?=cZzJH!8Qu$~rBoLb_O%AWFk}6?b$Fm;;i{}RP>EpumqVIlqJb$BqO~Flzz?5^7 z1HI|uV{r*w8q#k|35@Moqt-DWwBnvGNFn1b%_jNC-UPCH6HyLHe9U(Mi;dOYQ@&#$ z4b{Tu?5=1T`sI;~w45-oZ_w3=rxAgkfjDNmf&Rvg~ja#r&8at#b9WN`xghcq270i_yTCPAo`qItaA& z6Ms$dmn-sT%zc@J!?B m<&VcO#u^L8dOZBUeSHU6&L(tQpXwX{0000NC=J3CD6P}Xa8!YG?4aIs)NlZ&;Gud+11E|{Fhgu zK7;hH0d%FlwhsX__51qq22&tCQo#8`z-&c1|09D55H;tiZ+|cbrbnfyi&UWjf!0Jx}A;u+ATXbJW71W2--5cT>&U`kQ90}*B2RjUD5 z3ISE+RWt>Xxe(X0p@Io;qUnVYH|uaP;BSPe!XvK&2jq`4$U)Ri>I}lSVm-O^%ki0RNRz$$7p1mW`J~W4BD%H+kcq_dAqGK(<~uZyG^_Amg57U@s{*+G+^>cnk~1=@$B=!N`E z8mcTjpz14S%sV7iwb7F9Rf0iPv1n9*1-hQ)JJ@nY`_vei4xIluRHX9O zMo1tQRezd3JUNZ4m~q{n?HE|xH$d*f)S~aczdd}VzfHh-i@=0)(+7IqMf>6exHP0c zQwfahtWo=z4_a{#7o?EwEzKcWu~&ht-n1x(INIkMfW^w{?k?XjkcMjGb9UL^coleB zCKNUi?Q4uHH6UvuvP4bICNIAtu-q^fI}O!S)PKrQmYv6moXD!|mW;GCIA(F)*Epf| z!y+{rcDCiT|8fS^am=E0(BwGInR-{2%Af~m)vq6K$wC+mA3m72O zI|#$hzLTt`da`VA6~+EBy;}9v)2bsZKF1r0d031F#&pMm1k*vFjh|?WV=hRbIWhGn zoPQ|&+C6$HV@ZNI3)H%3oB;#)7KSc?o{nCL(bQ+DQnm2_Zd zgm?=Qe^yCDfA}JS*nd~Q*YX7W&lMYM88Hy~x^msJHC3bk0QWRbFMmBYW2`Y?tjEj$ a?dunKJ0D=+dse#u0000_gqBi~YQ~u+1x}{37Mb7vO zD;iv2{e}WgLC%=4ox43#tpwL<%0wNUyODEtcI$A@Y;n%L-G5G*ARvOAGDWrVxMxDb z4XRr^WeREWDI)|ysNC`>DDeb$D0@u`e_cQmrOcQ1HOkWU>J`|dc>^HN5-{bDP*IQ!Nb#9v%=MYcuYk_D1XzF#WS~qkayr{S`QQR;S@(r z?hw7`O)uOG2+b~3Yhez)q+#nZz$EZo$15@Kr!aLjp7GFTKMGWSXacI7np$DtzOZj+ zg@rsOmefg!yb+)gmqSa63E#L4e69wR0GJ4}vF;Bb?C&Zu-UKN`j#a>RE)lWfueQ{V z9M%Y1hJTHn=u86MEemKn;f=s=n9wDsz}sz<*tvlL4*&;jecv-H0S*FNjs}kRA{N#g zh7>V$fh`kP2F=cxF6CV58Doh^O_(U1?xB7i@0lcnakTdAmHPgw`detvk19I!k8;NG z6&}ZAc*TBZ8?0AzmT~;aoYN?Z%{Ru5*=r2e|2mj*zF$WBPfWD8mpC0~X6JnUyWvq? n=Bw+P0F{^d>bmx6_3zd%o~OUuk#Q8n00000NkvXXu0mjfLo`vL delta 702 zcmV;v0zv(i29gGlV1J!SL_t(|ob8s)Y9t{L$34WWFVmB22&9BLi7+Ju0zSEkX!UTS%tN!(2*-gm*^*0u^>93#iAFtB`Rf;Wg#@|@c z;0o&x6mSZ1#)R$M?U`yNxK>jp>fqeHoU^lAhkIs=bME6|%6|j_5#*F9s*T4z6B6!G zJ=iHzNQ+MyAqYa{mPbK}CwM~HYf||80%Ac+mE7={5O*9ncvuxOuaB^R$)OGt0R|_9 zk_ENlF5r%@E*W^U`pn#bA!K%-X9D*Cf`OMKum0K5yuls7oiL{CQeC)2#2hpMC^>{G zz-$W#lfd!pM}O`K81wcRcVrYeXA{(gOPa~KsK1;Q1Di`Gou~mnLKZLsi$3S!VqPDk z7t4(a$pJk!&P52W3*`Sh5Tz%ziVS#6Sj0fja%JRe3kkcJT!M=UEv3rm>L8cL)wC0a zB-l5^uk?snpO1`d!&1mbCxhqLwPuB@0r8lMicqE}i+^Ws2O;mk(X<{W=EEtDn%p6J z(VJel84#LXsMf+9d`ZLBV}MEEt&Ue>-cMobYCPki&3+W9{M-aoIW@Jyz1LWMkbQK-k|^V!R1bh#aec?OY;a#b0fy9XYHK zwhS9P(SMl)d|DRJcETHh-!P#|PJy@ED6w+`10Dbl*!sR_RstLZwj2!{??o)EHw-Ca z=mJ|Nt_+%;Fqk(w}3I^9G4I^Hu$2IFY$*(>$qUG=xno?ldS=wIZF<10Ll z$?%H($~IW9<}Bm*lR2kR6q|319kcfstp7RXd^f+0_FtH2Z?ADW&dkpF_IJaJy3RM( kEdeU8^UZbZ)9T-?Pw-N_B6%*Im;e9(07*qoM6N<$g0D4A+W-In diff --git a/graphics/object_events/pics/pokemon/dratini.png b/graphics/object_events/pics/pokemon/dratini.png index 2715d80d409add2e80a56d563c0483132611b9bb..68568b1aac45d907197af1fa58a2559539fbab22 100644 GIT binary patch delta 540 zcmV+%0^|Mr1n>lqUw;AnNklic zCh}?iTcD-PEv8gx?L5K12p*D^C;jZM6b!&+8-o9DatgE@m0OY zkI~5FH5!E$ZHtlF6^|RAfM@6o4fMiF@6b*3-0NWArGLzNG$+pzk29xn0C!r`z;2~` ztt!k$H(|!&%?r`^jlaf6VH1SB*Mvu*Y?MEUF^9Ln3l-Ys8z0}1P!(UpMwQ75B=INA z3n}GsibtU;!sF#Pz!!P{2bqygiJ4uAKjKkXMyESz(+UBvw& eX`uWc*A*wt&XbZcT#0S~0000$?wE*|J*S-Exss5)P=f4)# z9e`Hj{HH+2Svg8Wp>wyH_XoX8Xn=D26%P;sT@~Fe7X9GR9)CRXzZYBI(EuUXYs79f z&az)sSadpai?{@p@ z>0+^@oLO7m2-N3wIH!?))1OlsAcSy!m>+0EV{K0RMIeN!m-O5#5pWTb+vMonGYc?= zGYU2j4H-Jx%IpqdrA-G9dC>%gsz29?3IC3^}yq3hr+ z4N%@%9$3$8YfVnMv1Qz`{uzX1{leGvURXw> zH(8NsB$AbQp@H%c*BFUEE6C3{=b|F)tiYeQ_aJbrR9zgZ8$?#LK}kGemrXS1xZ!3} zs=ppYo&{`<{PiOG3g0R=(VXMR{uc4sSc&U8Ix4LNp1SrI*g77&@yB2nkuJ&6;aK;#Bu#SpyeI5Sv_7fXfuW~guo5Gj)fs#=Z51t uUx!+6149V005j!=^VNm*JnpB$|J4VkzzOW|cizPS0000jM5!o|7>!46j9U)Z~yy}~7W zM1#G=vkg2Ust;y3Wf(AOE%Iywh;10s_9+8+GBh%e#GS}B#eaD#GQf&9Y-FBkV2fC} z(TYqXk*vfs4U~ttm67;VL4L+L7ZqV^1wP&0fxxj+wQ;Dn7g^B;CGm)DHqn&hhKEt9 z?yeVk67Y27^NZ*!>?=0Wl;g<$5%JwviR(H#Dy;<`+x*Cg>0+;y*(>$wF9yYtQ-C^1 z3+$^cZmKk4WPi8f6N7Kph(l$P0kLQZ_eXv^cie@r!a6;ZF2sRq7BHG!2s?jy?7k&V zfrTeOeuNp9{Y(7vyzV)h#If=jd(`_&VKl@kuyn+(mlzs@onpV5<~4ZE3+Ht0+;a*f z-ZR64M22P=2FC+vnK5`xl}o^asAgZ{u>2m-@D7_SFFYDF8ABOD;D%nuLZ7d5!(o}P tL#@|=A%s|fiE_i~>dbl`_fz5j>I()c3CO5+Lnr_M002ovPDHLkV1l2W+NA&h diff --git a/graphics/object_events/pics/pokemon/dugtrio.png b/graphics/object_events/pics/pokemon/dugtrio.png index 4204b2aa69def8f0de96c16a47e145673fe97fdb..d7b34bef7e19a692b88cc92faa26207d6af03ce8 100644 GIT binary patch delta 606 zcmV-k0-^n|1+xW^V1GVIL_t(|ob8gaZrd;rhB?X}{2JamW$u#BeGJ3u(4h;B3`HmB z=t0Ot@D?LO5fK{nOc{)d@W5y2k)mYjWD7`#P9|W$-|6^&)KNm**L~gBef{&Qs@GY* zw&VQ+flDc$=6EW+((yj?xRg@9&hR8oSn8NboCL1rddLmi&VTw>{>(d=kO!6)$~gh! zM*jZ%V^En2d7wKzx|tI*K`mwdUj9_UUFj_&Dl;4%dkH-xSoK`-D!9_Z-C z&vGq4jRh7C*M-Z53AnHi{FRt){QPX8PMq0J&=#_C%;B5g#R?N9h7foNfu`l~>;R_+ z-?C5^Tns#$#B#*pn~$3u7e>yop#Mb(+=oJ@TdsY*Z+{z%BLrWA)v;k~JI2_s^yI5) z&!2(t!V8Ta3g>A~7>1T9gusWYh%B=FSR6f|GH9XzzbDp_1<(L|K@x;0IC$4`-X1{d zJT!l+FpUT|xZmpBsBT0#XjDjLNDajMoH`^kT2aiwd$=wowvMzJsrk`pXfFy120*Z7ZQznS@e&EpeUm* sC}Ow4zFp7=RD1qdfCVa8fcPKlFLVVNVCOJb`Tzg`07*qoM6N<$g2HnqRR910 delta 603 zcmV-h0;K)31+WE>V1GMFL_t(|ob8gaZrd;rhPhex;HSylC7t^ihSj0yMk7Pf$vJ8e zG7-GR$WTOt20c>-qar-;8G58BSvola+M$yP81Q#G{vUOe5chRo_jOPrkiYW zETD-(H9FBmxH*5RWPMf6ggh`D&%#*X2}$td17YK(bRz*1&H}@Y+p=zkxUFOYCfw2p z+_O9kBbo|lfq&t~Z9BO$7RWe^z)__S3ZNQ1(qKOT{nV3z=b@}(T!i^ zN^YkD3&m~Wrey*y90GqPrW?OJTWAtzwik4TteSH8<`1#Lgoz;p79r4d9G(?$e()U& zWx>V3i%Bde9KQLu$#G%i3`_c7hQMPeWV++VH^;8QIDbO$4Okr;_O@q?4I59shW7j( z39r1?=%I9;=7eErnL-F$)MaFm<)`xG0hK`$1^6wojx2x%;7gJqL_y(Q$9Z=ErSs7I zwZ=3e+~IMrbEEnZ<)Bd^l_50{A9L!6ob6BQjdtM9q&KeBTTYA!-OQ+cr;JMZfyszE z#f5j$dsL+~1@;X)L_@xG=hUkA26f)?8jf@r6MmxKpbWfZeO^d3>SaAV7J{OTx}u2P p28VV*BT(J>V*%EvU=8AbtUm+|7noNNGI9U_002ovPDHLkV1lr~9Z~=Q diff --git a/graphics/object_events/pics/pokemon/dusclops.png b/graphics/object_events/pics/pokemon/dusclops.png index 721d9523fb0a0588d81c38f15dafa19cfcfe4b39..ca92a233c2ae6c4477a31e0fc65c283207620074 100644 GIT binary patch delta 745 zcmV)&lMGWT9+tOaYzE ztxGIq3kpP#Cn*Ia`<}8#QBrKVVuyAqkel?8;{C_FBN+tm_HO^oLNEJgofTdVXI?(S z<>Dc;!IPJdY2o8POxuXkjgQ6ZQtyff%ZD5Uv&X{6;Z%9KQh%2@88T-?ZG0@%=7XP& zmxHiUrH4gMr^8=x5S$K##WH^E4=s1CCUFYW=&dh? zOnIWz?ofyee4ZyUF&P8aVL?44T@IW$CyTnA{nzxl+5KX5$0{ z+TPDI#D5%C#w}QVcidmu(@(LXk12IGuobjixgXeJ#6<-|4=%@sEMhAtQe~oDo}*0M zBSG7Z<5tjCk?UEd>7xs|5wx7%H+xzd0_zYK=(^yn`t-(2;00000NkvXXu0mjfQ7&pU delta 741 zcmVmKwg8)bd!H0d=KeN!w{#j?Gm&3W2PjI<- z%xv)F0w~m3uf4=>}0w^IN3UqV%v*YUANRBr4ZtlEngp z&wDw|F*{7AnYXk-h;=!|LjTm?pU(uxoLh&-N#;|_DZ{wx3lAOlttK&oD1PsYF;kH$ zwLg|q96Lo!``Q5U`*ZyGeOI;Rj>}VBm#L)?EqCQz-*jgK)d@z zj#$9jxPJxfAC8ABJNlLw`kGOH16x7Mwflh`##~e|^x$%A$Rc)vB2y;b7X`}HJrcCr zI_?B*6}g^umOZ+VTS3d&eY>ZXA+Qc%iLOf?Zd*Y~EsG}w+z|*m+CDi!Zfj;phgV5d z0FBDhZVOh>^1;0cv*j%s;$LRnL0X0YM5vc7i(ZlhN*e-y^@1!P8z<wB XE$NKl@jjI600000NkvXXu0mjf?ci>B diff --git a/graphics/object_events/pics/pokemon/dustox.png b/graphics/object_events/pics/pokemon/dustox.png index 9e66a5f81958a7e05042ce1dbd7248bee5cd3859..8bb0992b30d2481157f111647b4c0cfeaa13f830 100644 GIT binary patch delta 645 zcmV;00($-41=hG_Y~nLyi~@negM#1c zohIQeyy{&F$*Q;Ls+$xVvd$SgvS#ET-lDV*x@fcrd>ZDPk*r8r_85=x{|vL8P5AdN z;ARsvulSdvnH4bQdl#4qa~xI7!+sh1V-6E`T!6VjKTMeO7JnAI)9*2V&BXd4i`L*+ zShSf%8kS(5PgtE>0l!uDUW6L&*$r_~MfRPG!W8d$ zd4R~!i2`;f!sW2(!m?>B-0nExc`HJ@KJ@H66yYMqLE>GEQztzdcW$9Ps&LLh=o;Qa z5TV_C>)BqUKz|1&aK4lRo9}&md6Ax*u$m>N0y7Q?gp7L;LcNY$mn!tk)&3Hw#6>@z2id9!jJRBf|O`U|wT9EMe z0$6@%CBfS&GCCFFk(y%?TEsQ&xd*30ETO)pEl~z3z<el#AE zE#9k$IY-M7hbfooRQY>RKvAr2`cdl0dhUX-!Xz~Ij)Ci|#GCR=0C!NKu$2XbB~uIT zQ=>};=$RxV2%YyxMQJ36)I~%1J08JPSK8iWclxhI67O6;@pcxjc2BH zz+(_bu6~9sBDjJ33F$HsRt()X4R@U;02*GOV&-7QEju@5$kHHq3R5Y;P~hQ7GUTv= z(G%qf%hBDI!Rl!uoHGl^j|Ik)A3u49EKHuj+`OaaV1H>zL_t(|ob8ptirX*{KxNPec!UgwLLh?=xy0XK83h7`g@X6A zUlX$jpZYI_tkYN>k}z^_lQ8?*DgE+=h2^V@><1f#DL!&} zfXFbg0(M7-<+SO{ylEtCc9ihku+VG{Bl`han8!G9e28&3aF5!aI#~B2TyhXv`qu*s z&Gy^K=F9~K2!FpKpOsu-`+ba;XYRQPt0^%RSa3)P2O`_E5b90jdM(0n>-OikC9bY} zN^L*aY{+Rf(EmsUg!u@Nu!bO9MWJ$di+qV0Bpf{XMM&|@tI|WwaUDKBZ0jTxmVyqi zFQBpy9Vd8GMMf(^>|NU@p+VfZJtFUr4&6X~Nn0WeTz`Os-4X0jgvwtdUl~b=5dKI! zBpbX{5i>eAS%||uuhXgWx1xZeSY73#)RE=f1!09rsLc%n*B6dA*~tOiK!nVO7Z8^0 zIcybM zmF_Iin16(kt7(fIT*3Z?beS*xJyG7#h1pCDtEW5Rl1bqFT%f)4^CwTc9PXaLEQdKNzna~hZ?LB8_x=rq{0`N; k-#2;j1~2(B{^9rqg3J|fySG|+-jnAY?2b~|p?E&hg# zm$f~%9z4B$k<#plg2RP-Z4Vfw-u13`{j<{RH7f<*VNhnhV$Rdv zeVH|pcX-8?_;Ba^s8d!yX{NA;Q#O8>X&LGo_k0+hvNBUbf6o5bX8*{5jz0^4d1wrK z*5q!}O)f#l`@=7su|hXovVz}a=mt3v4qmGsc{~9+u6jzmVu;|m>-Xo7wLQ4p!Fr4V z@6fVz7-EonLx0QKP7wgZVvi>_fAE+C@2#HiALSYV2*FZEIzqdtya@NzNC=ddck6V+mm3i-qcJv`{ zkGxqvSeHP(@q~(=S?qRt=4m59{tM{IPN6UxV!$Yx^ls!D2v+EYWgB_gQ2%4v5k$cl zQd7!!6eNz7S$DFDIlUu`J{E4NlU(Aonb

Yo*?_iPOQgwfdbjwKKLPuQ*&Z#dsB58%5jhB1&H za>v#~un~BDlO@u7uLC-^o~*T~48F%=xbIf4S;t^yN?cd%yMHW^%uPVg#36B5-)3MA zp6=MO9R8Z0b;)Mnnd2TW*@j`}WvFZ1^I>?&#!eZ-H3ze~RR?tZRRGRIW7spWhY9o& zbi6kyhHSqB0aEW?J%UM z_lB0iO$m|W;(v}Ows7!R0w1kj?jQ9UAS&v33&;`ou+4{o9S^26kWkncy>QW`el32a zwJx&oR@sj97}-(z_GKq{at$QA$$NY1FD`nX6h|hc^Wz4#uCnZ1$&DeF?NK(%C&L*C zn@s4`3#;7@W|=l2mcIZ@Zi*+1Aw^26NiVK}=#+l4ZfB!R8|!}zJY!N!F*oHLkHO5T zvglqn5i%=X`XWs?4eJ4$ZCed#LpjgaD$84wu2~|Ns8Pna=s-Zz80K@pR)=OrrqQ!u k>;IPvyHn+#0Ibf#ZXfSNumAu607*qoM6N<$g7um6jQ{`u diff --git a/graphics/object_events/pics/pokemon/electrode.png b/graphics/object_events/pics/pokemon/electrode.png index 6ef9a1aed703893275fca195bc3eca1c1a1d0d01..824ed91d2e8ed927f47c1a3743a276b14b10a412 100644 GIT binary patch delta 277 zcmV+w0qXvO1M32iUw;7hNklH#b=1v@-hwdD4g-B6H zL>(+>h=`?9QmGPudv+2hEC5`&a^+W1(`2*S6@|8W9ahdZxXKqwoy!VK?+R@mQvs=f z_+D_X!68;OutdF@7wB{PzChV5h&O!Irx)FkV*}HI)fn|L>VNBg+xK4k^9Fy3XK+C5 zodKbp$OdH$m0Dx$F^{cmzky>98oQfhesf)~FWT{(q+KT)6n(Y29cVXdY?@`tS_V0lPRY*lqfz;b$CS`hRFw>%d~(^?BE~=imL{ zrLTpC;UT`d+rXpKe%8KZ7{nV|c95LYLe{=yEr2KTOxy+@9h3D-(J&*R-|Pgml5-QD zCuiWJWMGa*X?@B%<+=4hDOnd>y1Hql$FgCZ(^Bi4tn=KK9Trk#rJJ|+lEXWb!?3*3 y6USujU(1G>M3@GW{hr&qd@;=gZn$I# z2rB@us77e-vNy?Qj&meT4n{#7Q;Xu%>|YnC8U{f>NOb?GSLNJ}b+prTK*P8>yC zjXzlmt5tm$Ir@&>LMfKxtG5xCbr(Ch#{X)60TkT7Des;)b_W0e002ovPDHLkV1nL_ BJ!k*` delta 655 zcmV;A0&xBB1>*&fV1I5&L_t(|ob8pdj@vK{hB>kc_>T7geS&t;RJaxbbj@&pr$dk+ zfVcQ8cDT69ZNl;&QRecmrlC0ypMMB{sfd@_$rSc!ZD`0ttqnW}0n}IfI=7 zm>NDlLA|U%Ge;zUhGd8?>=vRJ3gaf2^b%t`IuK6vOLbbhSTlRP?c{M)cFu{dTEx@W zHRht1*iKa>I{kq4_ioupiaE2Pcd2QvIoM{yA#JDl5|GUB309x|+}N7qS=b!10E&S( zCR^(j&wpD%PDHLkV1i~FOMCzT diff --git a/graphics/object_events/pics/pokemon/farfetchd.png b/graphics/object_events/pics/pokemon/farfetchd.png new file mode 100644 index 0000000000000000000000000000000000000000..f07591e40048c04bb6e635c95005acddeece708d GIT binary patch literal 570 zcmV-A0>%A_P)c#16b4|PfILjHwu>_w@F5Ctl9YR8@d4~6OQFTDQh@-P0>y)&p`d8P z2{P0)S*nBi9t%@IJ0fxvVI%ux-ShA@+~N2i9w9d;x`&_?E>McQ3O0a(mWH zKq;Y~M?NJ8qcaKNsm2}xo8}QUn#fE6z|T4L_Tq~}y7qNYyTP^Ca^Z6g6d(5-}yAK7t^$vx?!V^4)70330>aZ}Vz)|}^fXW7| z!F#+S4aZiWHFq$3nD(at(GFH9P*nNG32Nir+@d5W`j!&1zw)PGlu_eiy>aXseYmg^KV zI|~Iz##3f|;6a8F7edTa>}oYf!I25C(G;T4UvuV!z?x*837DGNbRc+UP#7u^oH=58 zHBo>*VAB?YJ1_Xb7E9!KTVsHT$@QxaGwzOiU}{CNs=VNZVaKs*?@(}LXf={@fdO16 z_iOJ@!UcjC27ixJjcX9JBg49N@@Wa~vb0Z2Uvk5DMpW{1!=Cfd5+I`WT=oPr8G{b!4BYkc-Rf5DHX75n=98I|03ov-RlJZu)PDA W>+4p%3{Hpu0000rduDw znF@lUy&e1vd6To21ch>~OA?(FDhPBb&21mP`|qUForSpC)vk86e`FLe;4df8f#592 z2w?%2CU^@H+-jfq7-u!>qby*EGh&=I^-&hZkj6N9Xhe(!&VTTXc^{#Mntu;@yel!r z!Ulp9^HV0}Sb7x(oJ*O;m};GJ!HI!C1e41gf98awdzp zx_-NI{vgQ{JbyCt_`2ho3F5@8XO{Yx1#?%0y;-cA zJwREtW`cl)TBoj{UHM_EhE4%TW=Br4EaOd|nB5S9*2uThXh-I~d)kbqDKukhn?muf z?w`r$x8(S27~?r-s|avmOVVHU^8JhE(?@-4C?@+O5Xdp3j2f8 z-l&4jgh9V7FwX$htZ`=zHXeGPD%ecmgY%L=nZrY~;-d-<5nl@cK6rSVO;?j|;Tv7e z7iLG76}-dYyMH3VnM=t$n+fe#h%XB(oM**{=Ui9tcy04e8^PphHc4y8D4Iu&3Jx`x zl-2XNW#=$~w4pbgXA+1G$8TYLBAtTv?7}f+lu`m&+_A6{?C10L6>x%@32zpu{0^i6qFS6I9@s z0(Qxd-DB!fK7}cZI%X+G8C~J_ja0Tvp|)%d7|MpCoO60gYv@>GEr;LsKpx+5n;rl&TTWker)s9IJkq#bBXqqjvHsvPeXvJN4R2A!h!X11n3(JKI zz4a`L5#-*fH{?^`j#<0Kw=V#$P}+BrglKuAX@7GZ0vCfmg1=vx<9cqOk_icl$nU9@ zfS_}1Ibrbr7~XX;6W}R}4Sy)0PK8y6$j61{!i9cd)-Sm5H{`)B7d+?5cK71jvB+1L za#kotaM-Wsl{t}yGeaY&Ol678^Wc`=p~`rQ-;SvkbAgm)f#X46l__iUzY@kb>}4K@s>z1OA$uI6In2zkBro8h6SThX6nB`mqChENxb%spHZB;Zlar)8;J1z?jg1!b bziYn$5dQ?m^-m8&00000NkvXXu0mjf==HAR delta 897 zcmV-{1AhG22h<0UV1HjpL_t(|oaL6!P8%^0#uuTzL_$84bE`u80PQ#zq>3VsFGy$; z)$-^8TkaIOv^r zh81ik^txq%Sq7+Pjl1ix`Ox`X!Da&QotFg494?y`hZP(mz7_zy_wY2Et|s5cH@ccH z&5o`rc$dR>MSp@*my%gF6P8{fzAUV8mKE=xb6vrs^{qQ?1e2%PByA~1(F_|E9BMEr ztLJgc&S4B`LvJ|CBoHl+-ol7Ur=UH%a7-Dclt31DEUX0k`Fv>rT%pUzEE~bEVr_lv z2CZUkxL{&E}ftP#}u$j zehgNqOZgP0Eb5r07-clTog1lamqKmX8ZeX%MLFm6DXpPnjgeE-O2$IUfDJus&Xs4< zReErx8VXW_n0rnQSzFSOZNx^1)*$B-pJf&cE+xxu=?Mo^o@1^NwL%$+x)A^wT6Tu_ zLt<*weSd7?ZRwaI-rycMO3gZn+rmdcRE|kd*$J&xbN?{@LZ^&6HKct~oCHK;FE!k2 z#3^GVKj?RYRQN&1)fQU?TD4;mM5Kd96Pjkr?1*xca4L_t(|ob8prZrd;r#<_IyqL*TpK!BHc30(NqG$f0_iZ8(| z0s*0`0a{ZR1Ew@c3nBA*N-gTBLP?8E0m8{Y{`o%N@s48bYkZAQGXUP3_}EC)_MM3j z>UU}T_QYQS{+~hD@$LG=Cc_Ez%UAec3^?cXA1BDOK~iUl-hVP#uP|c=42hm!a-uko zQUYjD&C8c#vadF#Sz*Q=T8IP}ypfuhq9Q36)VcptuQ8F6a;lk>y3#)bM(r)x>;eivEBll8DRh)xZ^2+%Z0w(ON$gM$_4lZ!V zzt^UAp;7{eLX=m*`47m}n2Ad9ju?z>qQi2sGo}WImB(MNdFClc8!vcTxNv^S$-X1I z$390K4grn9vJ#_#ZX=#*KPiOLg`5SJ{L;mpH){2vQGdMg#<;zjnrG(8z%@>na1J?G za^F3S27$*uNAKED;oUp7TG#;x|MW4F`D;c7__lBRGKTokz~_uf_QAj>{oCBW zKk!$A{};eoVCw@}@f?71h5seM_)NyeXQZZJih*cW7~l|6qJR6B%p^b}$sj;IPv0+W zUuU{qVSqP_iNghFLcy8WM1o#sT-hi=r4jLQE!MaTHHSmt*@TG%ye`CnNN`LTsypiD zVTu(F0t^mOjjvE`a>A2FndgvKF7974+gqT`%LeQZ5w#9w#fMjA6P{|H zRa~k{%np`(dhVNf_~~M!c%;l|{`0-0< zH3HKqT>5%i%+&DSJ zB_G4uGk>Wf7x**>*ho-k-&)G0cWO5+VKOf{y*?KVgF`_Zjfa4ite0D1j3vB7)5eT~ z15k299CU%RsN?;d-Z$*&sM^xWh7GYT<*hCmjcSxf0x} zXqO`|Of4Ly6S-c9ZEnZI(z~+py4&^lv%Btptk=iFpaJh;}gG`{F7!P)JC z>Jr{6{@9bP0XbOb?w4{yjX=%y|NItU)~|mT+JJisFb_)rEII9F(d|a`zHY3yOQ7H^=HFNE;Qwtipfg}e!+rYUVnUZ3tOlZMJ#`V{V0pntn z<9@A=WYZPPp5K`^E5S@dNg?65pY(y6d3kpvLf#GdYKze^(FUFA_YXgUPF->t!%XoT zfO9R1l%PITbQ1&VC*t7{7G~ZlHpS3?i>Ak9i=*6J2kvGAo5Bdd?0Ll)7TV%e3Ff}IXSzHj&(Kwz%G1@3LMhlC=?-y>$2}j` zBaFG}(Z*+QM`u|hsJZDNT8@Wd>-uyRx9;QdnGg3mfqFg1XW@zD4mQ^r%8GeS^r-g> zJNKh#Xkk}`Cn9L^S_r?zN>cbXcEf|n#)S~mEuI!zthV@8?jAg`F$&zw#%d_D^Isc3 Y0T;j1(eLoL9{>OV07*qoM6N<$f*+YX7ytkO delta 638 zcmV-^0)hRd2c-v)cqttVlts`cP}rf^i(!yM{)jQ;Q(;R+-l_gyQVatf`k(Z$9NLpQ z$1^LDp&%G`a~Nz*Zt-t~+Y5u;Y@hwD2>sN?;d-l)*&sM_xWzJIYT>=GCmjbnxf0x{ zXqzK1Of4Ly6S-c9O>W1-(z~+py4&@4v%Bm&Ap=iFpaJh;}gG`{F7!P)JC z>JnZn{?L=H0XbNw?&tEJ8iAVY|M@MztY7~wv;p@NU>=wRZ#n-8CnW&cWSvm90Ft}s zl-x;&=Lc%2Ln_AlkO2Un&ar&x{2ffhT;KzpfJ$$3a@ZtzWTe*P=W?fjIJpOtJ^~zn zjLG2%&MLtcA62ZZ&B(NRR0@Mz&0Krz)Pja?AjtvG?%`aIOi3|RCbZxqymjPx?U3yu3RSA@2r!wZZ6!XoJr5`}-e3r!KjSVW#*M zz_}JhN>Cpvx`~1G6Y;PQ3p4K&_r=hEi>60pgQMJB2X2Xq^*7fNsZr#V@GatU_1nTu1pM}SgJJ?)jC@bbo(WBlk z?0gwTLkqhiJQhKV*FyL$R+7TEu^aA1HZFviZt%3&V70}!a(C~EjZxrcHdaHKo&VbS Y2~fP#i(EUfO#lD@07*qoM6N<$f)G|cbpQYW diff --git a/graphics/object_events/pics/pokemon/forretress.png b/graphics/object_events/pics/pokemon/forretress.png index 896b8774a10965fc4800bf0ead6c59af58f5ddab..36d721de0dbee93aeececf855be872b35f33b8a9 100644 GIT binary patch delta 439 zcmV;o0Z9If1dRlcV1JlNL_t(|obA*xi^4Dz0N{w5lcA{4-jA?^ws8FwM@b!Sa!8y- zYW_}(xHPwjIAyw3{ZW^;Nedp&JCMR1__i-EeJ^>?AoPr9JmVRECkD7*52xJe(}PLM zDeli`#weq!@gt^`gD#6zrautNGOs;q{kuFGXoxKRX4^pS*?%VG31!k0ur?n^T~J?H zEM?cAwk={`&R4LJ#PM|N`CbnArvu1YwTrgltv@c#dPCM5@7k;k+{P}p`CY7( zBC^dlF73bSug?x4_I#Bu+TLe7A)M4Fe#2%a)|UAFNC;6~-q;q1UM`+e-qnsYDzH?_ z?cR!ET+f_<4yuuyVEgWoDBt!+!(CjtdpgiWg*-luVK65lC-j~Jde8dx(~lE=z#*gD hhpkr}g8TG;jxS_b8eIDSw{-vj002ovPDHLkV1jCw*(d-2 delta 437 zcmV;m0ZRUj1d9ZaV1JfLL_t(|obA*xi-Rx}0N^KLhfW4*2fZJm1Y0=&L=TA_Zs`qX zFa1MG>0)jvrBkL`+y1DFnkclq-a!%Wpl=Yqyd*DqU;v)+jAuOK?}SB$wLRtDkhUfn zXJj~oo3os)+(*n9M_rXGM=gMls%Sj!{JT6@3gBcnHU-2kw|_I9vRvp5jP(McHdI%J z578HBY&Nv>h59<_wF~WW$Y7R-IlSrt<51^grzz-|ym8picd`|rh8SQ}Un)d=Rq)1Y ze#SYVh7wYBuZ2}0-sysvO90MSxIvI)ItrqoK>X7Igj+jC4Mft2&}8o-uG)frfw(Md z9|Y#{$y=s}Wq<0Qw9l=B&O+{qlmao#(@MGQ3SRs3?5#I+y$LSuh~>BTiOFvhDJ2zM zzIA2()o6Y4C^hG+eO3;>x(<=FIq@6OJux;U?*~e$?DN`YgZaxjkTSTKmd;Ber1bl@ z!cLl=Q`B+Yk|XZOKTsK&`e1L9+Wpf36FK9_(Z!w4I4))P9J6~?ub+CH$OE3`j7PZD fh)2ng{?G9ZCTQUO_XnE&00000NkvXXu0mjfA#U0* diff --git a/graphics/object_events/pics/pokemon/furret.png b/graphics/object_events/pics/pokemon/furret.png index 8a700e08d4f53f563f0600e6448ffde01914f35a..2ac228ea1e63252733ababf77f3c6e8293a670c9 100644 GIT binary patch delta 93 zcmV-j0HXh;2Bij&X+6EJqCgbK>68XvX5YXuQ`$(tMqXmbVB@th92>DANad?pXxxfe zT%(olnNi>jhI?;zbCcad}T1V zUdmBBQQ>HZh;)OJT}T+EcI|Y|T*z6pv%Il$j(#0t;a@P9(timtOI>BLs>Z>vYpo|I zI53BGeXA?X+{ROl*$isFk&=&mWnkBm^-yCjx=~oH@|8h@Af#;79#6cN$YVJRRyihw znLVLNJnUiBj-~^Z3BtD-Y^eBQXp~3798F=^tV|62;)^Rm3^VlK zz=Q+Q1dJ2ZAgC~~VS*aOHPiX?ss)$fIB{6=Z-Xmwe>L$`RiE4zQ_?~Kg$Dot002ov KPDHLkU;%=5R{IM8 delta 520 zcmV+j0{8vr1m^^hYJaZWAP_|@rL#N!dx{bUEwIi5K$h$q&}@XQ@-hDQQsPGNeq8Z5{ZpE3{GP)Xo@dFH9VgN$Ry zhKctT0<`WG41ZeXcw)$1;DKb>2};%MGBI_diqb2FN#`IuDvUonGl*@#3qS{kakuf~1oUkNM-@K|tq#aope+o$jhR7MLvbaDG{gT5 zEFFj^V4UCvq{6__1UHCl=IiH8E3V^t;AeH+cWA@E>0XleqfMgH$G#CLh zqm?SBDjWXp(fB{zie1;#)YR0})Kp~Ym{0plbVtl9;~DM&P#-Yw$6I+qxP@t_{+sW> zj&7HQ>p{YIHuOVc0WQ}O@m2*cyfsvAm;DeIV0sz~kUnyNVSlX~4wO>~OgxrA0}7#P zY0IyM0&rn9{8{I~#02?_;R^|?0A?Mk0Q8Dm%7#+kBTx8dAR9h3%+<)k1AQ(=LvxYx zvKn^e5|8v885(X_Dl~cxTv%lfVXCymT9y8y;T3f@j5AEU(rg32RGe)NOdL%45-F%U zpd&)4FM{Cx`Y>&tZQ|a#ddDV!r=&JFjfhTh9K)8yKmRK}rytzbOl8Aqn4tgw002ov JPDHLkV1gYYjbH!( delta 309 zcmV-50m}Z41B?TZV1E}$L_t(|ob8m|k%S-+giT;2|7}E!B7`nQ;y1Kf$iY%S;Wq*n8jCp0g!Xp6c6XyMRFHZ=!F&)(Z@&nk> z9kOsENchf%eo8FB4 z5bBE{c)xy`S1y})w65OK1n`tpbJK|E62~#LEZ+RD_?&(K&?QUZDWQvM00000NkvXX Hu0mjf-(Zk0 diff --git a/graphics/object_events/pics/pokemon/gligar.png b/graphics/object_events/pics/pokemon/gligar.png index 59a9738c89694eba6742b23b33b8fe23f5adceb8..7d89d630ef0a7e3997bde833f08ce7ebe7cf718d 100644 GIT binary patch delta 879 zcmV-#1CadS2jK^hV1H~$L_t(|ob8n{kJ~mB#|dz`NuPxP#lzhJ(n2Ylwa{!PYjM!c zw*{RV9FPt^4_&-i9Xen9H4f-hWRdMmGz8E}GF1KyeWXZQJ{lp8#{Xzga?Y3zfQ0FF#$kG$0kAw1z=(+xMfZMsozd6EPk*m7Ldh_m;W+n#kw(!w z*n7A~ICV>o`vKm+7O?oH31#p+6kul#k~k=KGZHCynCww9>)-L*!>&eM4W?CtcW%w` zpdwOChXRJZK&0wuw5O>murlw%;W&2Z)G2aMns%Eeu`$7hi~3Gd#iQRm5VVPA)C$(dFg_|z@S2*TjVv9^wICM3#2Y~7kpg*op#C@?23;D`50 z$g~LphI4-G@oN2aoIXF_e_ucKjy|m{>uUYr1f)n5g}T^y&;rUZBvHGFv6O#;-93aR zG91%C+yY)aE{}hI*45&p<(u_sF-sbh?+hwb8^PjJe+#V(~Rrz9FGZb6Neif$7!7DIK;y|0>=Cl4?^6o zLOjFSZAcglHCLJyr+g?fj86&CgGe7vjEP}1EQv_@3Z3&%A1(}8UgAGi7U&X3vWUq! z(-%9=|BzlX77e<@s3UQ6&iKU+OfK=|r!X{1U+{ls{0lT54ks49N|gWr002ovPDHLk FV1koKq~`zt delta 878 zcmV-!1CjjU2jB;gV1H{#L_t(|ob8pdj@vj8h6%9QO3y-o;$n9JsiBn4YG@{v)ohT? z>4K{gERZX_F0OH7U2*lsPZ40-AdPINq9K4*lH%lN$dDpwd9m;V+=T`Re-t(U{KGMg z(C_hk{Er4Dr;Oo5^wv+$Gy2~6>3?}fC>h2x9Oqsz(kOZj zd-rb{1=xv$Bo2z*ltc<1COec&`*%F|u&q&7gK5>^ty^J-^4O}llI*qC6$@$q1>yu3v;9SB_B5=_l@ zOgfX{w1xy#Lw~I!$Gsy8ej@c!O~By}6YI!vaD;GnSs$rqSCB}wAh3S327!$h){$rH zh@}${*iMxZFoo_^;7}!YtLko0GsA^_9Yr!1SgEN}HHNR&k!S0OjU`FcRw+f2HT0r! zi~32$GkQRm5VVPA)C$(dGb_|z@S2*TjVv9^wICM3#E5ASm z*Hm-i_G36=U@8X@HN9WtT*{h=+LujQKGhgt%UY zc!sm-;s4C|1xzIjn=T_|lK=n!07*qoM6N<$ Ef)P8WGynhq diff --git a/graphics/object_events/pics/pokemon/golbat.png b/graphics/object_events/pics/pokemon/golbat.png index c36a8a9744af109bef319038792d95d18e23bf81..30907c1c6ac4756c7f18f43c083e385c5789ce8a 100644 GIT binary patch delta 619 zcmV-x0+ju_1;7Q6V1G+VL_t(|ob8q|Z`&{sg*9m44+)Iy5-g2IO|;${1m087+HHs& z2}ls{XZJ{jcPB-OQxu(=g9m?!Fl00+bvFoHb9FE;&mWB>g+UbP)Q?!lT6iEPugV!FBTl)mgt`ko3LT zFZ9S_l^0!rHs<1)Wqeos*qi2{=mBSDz3h!KH`Zrn2lLCEYGZSLWVt@;N{i_?9AtyU zLZ1UzUk8{T>KBp|F9SX@i25G67J6b4u)DOQvmjaQQ3&G>Cp?7Uvq55^H@Ko&=!rSt z{A{bxket|)Tz|lDJMYZn)0G;nOf2-u+H1|aN-Q4HUaJtCmn;JS@5dP}8`$2^exTk| zSPkn_A03cEh)nmR9t~U4;gSM7^3b|!fTu^60q9U`t@#1L z-H;tEIR|8a;}Z9jaMCfJ4Ntn|{faf#C(t$dS%}>7rhksnFzc$fx5T!mz8oY>d#H2K=G5=|R9a7(2cv_9r56B;B|K%FS{0HpKDV|iw~ zS^+i{^<>qATaZ{m?>F=SnH9SX?ZQxXtM5Ri&#QsUtZ1DJ-4k=b>gN&zig!yKk;Q3| z0dI$^nm+h(y%(T1hkp?8DT8~Zy8HM1T}}QU2ju@1zX7uZCZL%DKGOgI002ovPDHLk FV1hvZC({4` delta 613 zcmV-r0-F861-b>0V1GqPL_t(|ob8rDZ=)~}g*l+e{|5vdBgNXyz11rBRu1q?910}ir5Vxg}A ztnUNN2=xoeiMIit8AQE7u7#dh1RSp2>?}wYdlbTazzJmtJ{u$!dW$Qng`SuLF28IQ zT9Olck_(uI%YVVB=NmOznONwRwYQpel~_EYy;UJNFIffv-j6dnHn5|i{Xo5~uv*ra z$PHT@PZcG78IUs`&neInD8g`_^H3jzMp>@>)Pme4E(4p2^^8(s1AJl*C{Acdx`UM!P{4B~y9SwC zn)ZNpD83OAD-Mu)=&}xNzILia(?$;5QmH1bPx;D%28k6=CrUj4>3s57UfJ$efK5ex zwcr*cR$egrJ9>c3ie08|W2pMwcc9Ye&A?^mqp;CEF$e5^E-|3^u*4DBoE91Iez>dU zlONYd0qXAX4+6eq@TgS(_@2M3#sA}g{J-KiE-ED4Iw+N-00000NkvXXu0mjf>wP99 diff --git a/graphics/object_events/pics/pokemon/golduck.png b/graphics/object_events/pics/pokemon/golduck.png index 82757bcf69649bb5cebc1612400a87e30e4e30d3..8710232a07b6eaabec79d3d09158d28bb2935e38 100644 GIT binary patch delta 499 zcmV>@=VONJxmv4d!qqzmaN=PbaP0{A?Al=zdTr88sKy4JP+7tf#9c(uTR zdyQ9$I|$&y#Xb%ON1AJ}UC$U%SU|mNbib%Vtkm+}wS5kB)rlGQoWO)C4R%L~D{G zo&Mf6c}wRBPk*;R2h<9x=KwAv_)$+&4oA=PMT$-1II()#eD`V!h}H9NG-?ChPCuHE zN25J*qnaHrJZii7(F9cQCwncmdY-O7R0DpI6dX_>1C5;n`rEC+0mU#owmSpGMy3)RY}o(+002ovPDHLkV1nmI@*n^J delta 495 zcmV5?%(56~eO=v@MI$&kQT z>X0D=N#_6}MIcKClJeL=G)vNf^eE?9fHM{F^Yl^TPnwpV0WNi^OMMi}pRaheoOSjq zUMXf>a5kLn!(gzanR2EJ>TK6IFDz*$of2N1u-E#80eI9R(0^u~lfoI&;JuLE(uPsU z5CUx{a#`9wQ=Tv{_lqs*)dkjE1GhWcT^Z=lHpHJfZ*NKSSMerZd{oE)TY89AbMtrMSThJSBVp`LPQ_vp^q)gy%!tG*3|(Xbrr% lA;GeEqVW01@h$&r{R3R?Km@)ZO4$Ga002ovPDHLkV1m~~_UQls diff --git a/graphics/object_events/pics/pokemon/gorebyss.png b/graphics/object_events/pics/pokemon/gorebyss.png index 7c4257998f0f0eaa5c5628daf2987b6b32c45ce4..1870f2abbe87028e1749d0606be5adf2976c1fba 100644 GIT binary patch delta 729 zcmV;~0w(>Y2CW8=V1KwtL_t(|oZXheYTGav$8{=3)pL{{a^7L|VMYg^LohikP=%61 z*dUlJ4-s}qira)8N0NeB!3nO&18nOaU@3cseUcsPlL9GWIgIII{_>~aPm*P0#{Q$m z{f^<01rra*zwN6|jxF$kYp?pR1wQaV0mt&GFZi`rFgr*vNq=z@2to_FvnxJu-8fhv zyv)*lz$|ieLg%Na=wyEXqQD3C+?+i9aLW1QiDur!bYgpqkU5B+FK{M2g5N14yUL;Y z%*d__@B~dN;JZM^>rR5E($~p+xD`Glfq&mVI00Rio(!r1g>ako`K3S&5sqMdXZWW- zO98)DdWQF#>VIU6qN^yUg050I6%e3#KQgfEW&BNf-IRh+k*D)Y5HtW*7j_5=ZPo$; z+!c&f5%}%Q2zbXVh$Zvtq^}yGj6T{SC=9DS-4zG``_MTCbC)Lta0Fls_UMYMdMG=u ztw0N_jAaz4-|zr{>=~4I``h(n2O5JRDG5U<`&Bl=Du1JZ0`V-KE&;;FZHMMjpcZN) z5$KY!bcHr^7pM=r&gr27^6AkzsdDZChi*1J4di_yL?f@Zgd3pcn-Z({1fmest>7$k z1(%U0V4nakEzlDRtjp^bs0F+Z?QI@iK47^_S>7*&wO2Tw4qMq3EY6@tKgW&`1&O+` zKrJL$z<;}k43zAAjf){!Si68|Db=~1vle_ND{zHz(s~P$3KEjDJMkC~HcRZ%MZnl2&@~Z^@KS_|Eh!L%I+J4;beU3ge9VNRd?q43 zq}dmWI8H54nM{Awy3B2Xmr>yU$N54%LGIyI53rOz!#>H5^+|!0upGv8F@O2_d*MbmuqJU%hV<`B2R4_kDFjKe)1b<#h_`iu|~!1W^lML*6n9T{Z#&JQPfI z5%~Sw3V6>>h-Hgvr*B%ZOg_0sP#9PF@lYTD+)L*e>|LG}zzKjgxUDO0nz8JWDT!k#hgG)1Dx-h`aepsftO4TZeTU&upb;7)5tx#x z^o1^SA80na$?8-AIeJXas+>HKV(yjW!%r&GdY8+7u_6NNMtZxPcIo-Qj&myTg(B4m990u8 zgf63!b@{1(F4jV1FG+L_t(|ob8mcj+;ObhF78_c^4$CrQkY{UHCCTLxDRiPeG)- zk|iuC_H>REi4-Pp;5Wzvq)6fHvNk)*X)h9~qTDYxAHVevJHsqv?|Rq&qcC`z|5hGW zZuY{EjlWt!s}Kxh@PS^ir~EMvxe#D7Cb@@MRA^#Aw4GG;77 zti{nJ&biCvlZw|%Sp{xL!(OrI3VEhlEM;Gx=;&hkP2Gya4Fflia`H#nE=;4Ni;`fui30p zgxQ*I@{GN8*#ea9?p~Akn)AnEtznP?<7>{%)LX~|DKO(FgzrLJp}jY?Ej8oU$(M;h z{gEHO)I~r~@1lz+2uB0o4MU&#_on(s%|kW$00~fkM&`Bg;qR5R=a=8%}9r3aGau z%ya*1rPbnF~YF##zPieS<)Nl$(m~Ll&?)F)@606waG^Okd zd2DjMb~dsd^gdUl2^q4}d`fv@xj->x^ue_6i)_$Qeb3HF=O00000 LNkvXXu0mjf2Dlz3 delta 569 zcmV-90>=H41&#%fV1F4&L_t(|ob8k`s@p&ih8J8axr;$&RrqxhcHv`4j0(Av(G&{g zN&=Zxu>l7HN@3*&zDJ4_&aT$h&g!u*pj096$IYkT{G*-GEMxC_*Z-q%{WkxtR#^IZ z6^3m5t(UP@hv2-j!yQ% zfpca7H0?Hkc7HmeVLLP!Mf_3LFJ+yPz&W!}6g(Bh@vFfPz2Rw9!Y?}SYJJ0Yl_E@c zbdzVi+7$wz5XVPN-W$%Ii?xG639N58vr`w4N>X6PF9<)Ryn%Q$RTPHt+vKZ6p#I2D zU+F5Lr+3j+=7ghxABUk&gGW|m%nnG8ISabyKUF>|G1Sp~geU=&COoCxI2f2q}Q_)7P>JoXKfS&7a1Vl zyJB9M$0_$*d{s7Go4`%FR)tz4Z-UNn9Z6hJQdPqMl3lPHITy`H<&mqI_Q^o|$h+W~ zOFxm?ExKSoMA1Oi9@(8^dfM{`DD?r;1sAZ^c){ddzkhIjf1NVcdQV8Y&o}+~7LV)) zE|hRHGaxURl;ew8WO`^T+rzcx?%0-e&CZOA+mBv$?gJkL!7P>3m+UedL^WPB8f}cd zWU{>9t6p9+p>9jIeZUNnKH!p8(y$XB`tEU2n*CN;%II(Oog&Nsa42IWuQC@T=lWH@ eppWo>t`%=jdjTeP=5lcW0000lqV1N5bL_t(|ob8oCkE9?Fg-OP{KgPM*nhaOvuTP@af=QYyU@}~_ z22eztu{XQfY_dt$?MumfyaKujdDgR@^{jtb*k)MTzilwf+<><~fA_~_O{Q4(DFStf znEQJ!+MLh*VL04`dkK{qM=_>50WJV&zi>F33dZtd=s=HG83C%?fC{K^ilD^ zuX<0|!BBTH8F(J!$O?vH=1Rk|3VOr9D3ES~$_pw`VTp?uSZ{_-0xN(KQXtQ~Oa3Du zh*_+H-Y{@n;eQ0V4+MM-UGy7ohW<*G7bisazqJgSCvOCB0wC8tF>K&#FE?}+kg2|hH;eY!6I%TZ&o{)4Ot^R1^k$vMr z2{$tX@`6b@zL-U(hqkgkTwCsrZAsVc%(%Gy=w;_V@IesFQb~QuF0(;Y<29qv#@I_H z%iF!`qVJMp3K9v7wAZ<8$0u*oP0NNWz5KRC8002ovPDHLkV1lw(4SN6p diff --git a/graphics/object_events/pics/pokemon/grimer.png b/graphics/object_events/pics/pokemon/grimer.png index c29dcc683ad92ff204b2bb2b5c189e54fdab7119..5b4523387d38f7ed9d226249eef2bde0057d27e5 100644 GIT binary patch delta 458 zcmV;*0X6=e1fT?vV1KJgL_t(|ob8gmZi7G!fEjP%Au=Fk$y1<`DG$NmOO{Ls--MzL za8rg3jrw*OB4`($p}r&BA0Zt&RmIzP*#2xMQMAMoODyq^LY|&~XYzOTGT-|dK>@3i zrv?c>)WZt)&xCcJaPPt2h~*H}2g0U=5}cP%$mlZ{?t{Nky?+952bc(Jj$Xo4$gy-Q zf{khbK$k-yrv$gbL@GA{meLnU zU)Tyk8BKlMj;w`-n^d(&Y^#w6VLRT43E4u2*&N3ek^#G$7+DJqH>eH8?t14UMVF&^ zdxo;hP|Ps9srqz>=g0g>&GgVG!>P;k8&zdbQZd6!B|{Te*T)=pIK&LAqxDYyl%>k9 z`dN;9-LjwKh&5jRgrlCq!3k4Kisu~Wd;FK<8^9PppjpiOrvLx|07*qoM6N<$f;Y+9 A^8f$< delta 455 zcmV;&0XY7k1f2wsV1KAdL_t(|ob8gmZi7G!fKMHgn|OvO17n^7l}vqxh{2aB6T&y4 zr~}-TXJm+=6VFf|g!?0;L#L{E`wrWm?S!#4)>vbWe-!Ha`a4&@t5@0C&j<>56~8nn z_@N&5aDFAMvRHTz{zg25pgs`R1r*@CghEcAg>)bMjjBC>JAc4TSPAqJ=0bsmTM=wj z0RXxj3I!#&4Q4{nVIP8xctQQV`asA}F`Qzj0JYFL32hVzXd^oT7fg_`Srqca1`pdZ z5L#v}^>bGWggk5X$W{;tS-so9Zfg_jL1;Njsa~XZrBP`4^NntXW}=7CvY?v@DN4hG z&@hYgcYp-V$bbDPbXE`w5Oc$$&~T+cD^*;s6Awbe{Em5wh|@ohrw^gIvQoZ4`NCF8 z%BZW$apFN}xK4C?#I~Gx6t>fixKu54m@aWtA{nr|%ZUe};Ti`+{?R-*Ptau+9dA%{ zDar-rcU_-+;O#koQL|y_tKr0D`i;t>C#hUuu9Jz&=0G_|9geZU`e?nAKWC-0%YKog xerVY*G2^wDKV#NYI5=Z!N%5M)e2@Qfd;?t(ICML~bvFP2002ovPDHLkV1h~q)5`z= diff --git a/graphics/object_events/pics/pokemon/growlithe.png b/graphics/object_events/pics/pokemon/growlithe.png index e0cb9cd5ae869986a45294d714844126fda82384..9b86f60a20737e7f28b0aed2eac8cdd7c3bb556e 100644 GIT binary patch delta 515 zcmV+e0{s2e1la_TV1MLEL_t(|obA-Hj+`(M08mT*06yY=0G+En6!=Iggt8RZT}x$+ zPWKV6t{5n&q6mYI3Y``QuW~SUVlG9BDB6)$+UH%**nLow&R1_lY1d7V3?s*MS)#ktkzn#&9%t2Ok#lG!OIzvVGtQ|*)O^-MR%w;jr{rSEo ze20aM3G2PU1+UQt%!_kl;{E3MUL&1AW?j%1wXV1M(uREMTQrG`LtcB@flN)%(P9%0 zW58S^KD7XO?0?^k7c{EGPcFoewbk^qpS%_ji46`bMixlu(idfuOMwA>-y z(;mBKyjvSUc3@p?haf5edUeV}wo9)1W*)*$)!NZ6Xna%Fy;4)qjAd(0IfX6SQdYEp zXR{zG6*f!f`rS!jO?QBEaiJH{I@`^4Cs30fraDD3pGA`~Zi|e`=&9*j)6jy}^!M|~ zGVKf)?Y~f?@%P`aVT5qzYayJMqxtzE0}lTreo6R`#1CJct7etiFlGP%002ovPDHLk FV1hVx|JDEi delta 511 zcmV0!ICz!7*ojGs6sOaUw9-EBdd41X7`w$SZt)+5h#hkA)A^xxoIvdT z;R}BeymS+CuiiQkAKKrrZw`I|FF{h&2j=3*P3M`h6PWzSYkxw&ATdv1bn<()39G04 z$Wu{>uoEaMr@H4gL{*yu8~k%d6EX)`(G~l)L+K0^-LrNaAvQhY7%-Q`MEB?Wn(ze{ zGA69|0vEhS8!#`v zjrh<4HL4VW#JvaRrGFvo?bYR3v=*E4Vgu{D{FEv zB7KtCHhp@GF`G&$JnvU!x&Mv$d^d#5_>usSqs=D(xfPsYd~8%vjGp(W94#C%ragAe zc(*oy?7+I(4nb4`^y-v{Y?oa1%{+visG8Ozq1atd3trL1TH&t^eX zDr}a{^^23hn(hGS;zBQ?b+()9PM{_|Om&K6K8q$}+!h&=(Noj6rlAF`>F?)}W!f1q z+JB)&@uY29=UVm3mgx@dB z|F}wcsVrt>nHNxiC=%vk@h;&dZ`+T06sYRqp--5L*`z`2secf_^-1%Ss@3;X(vT~q z>byvqF=wXLx9`_E`JTf`s}EG8AtLqW&`NwCoS{qyjXnQg1=ZkPm8dD#o->f_S0yx5nLUi~JE) z2E&%ow8Dl!?_p=g0M jZM|K;)f!g=|84ySYBidnK@7+E00000NkvXXu0mjfWj_r_ delta 542 zcmV+(0^$Aj1o8xsUw;ApNklU4;Ds7n<58@Y-g+|vl@~zFs~T+B>8``7@4t0J?c@9`n!TE{(fTq z$4$m-6)6+TvVsakl`$8q4;im{`+n4uK-G> zWtB5y-e@mu)_hR%+Fq!~WBU&cxOBZJZPvwA_1_iVbEv!->P|jg@-9p`l1|^Vx@&pt z@Z4k_9x&1w8eqmcwd(Hpc~FK1?#-C3dsC4kSZt%62^Gy2$MvT##`IvbX2nN%;$y6C zmWyM6+y$-;hqwl+qdSpc)T@W==wSwQT!H#BWeuB zEu-m$i-E!8!A!&378o{AlLv6|){t>Gy_j@fe|6-Lt$#y-=Pi&~lm~sr%?QRiP2OJ1V zgnk}~M(|!&#LXL|^I?FP`FVeSXHwiUP6MH5ba`mtJv9$Z8gNa%OiPFTKpMzxI=AZNGM^OeAz6^hkEIJ%fHC5s zqCP;SE}8leeT6>ADTbj{D~fH52`3z>f42NiI_U%F?~lVibO^oHYyF!d148ysjfdx9 zwdV`25I((N*798ySbM(UTHmo<8zmbK>Um)8rOe@K*fs52et#MV6pE?ZOX>G8>{{uT z^-^@wDT?pH;)88;~((o2)#KQK$6Cc5EqA z4HMm?05m7oo+~hA*?GtOKxNCgC&!V}yo0r;QjT`xu;c5)k+zKE_lbc$YIq*{Nc)F= z$MjHMQF-ivmVeW=OE~46N|NqD zw)T0EBh%&aXsO$bPg+lb+NKe^IyD?D@Q#Aqp0eb;2{>q1Hn3hoVGB+e6W`X4C$EXv z#C~y?^M5_9jL=Uiyx5LV^0l*Zf!Wwt4$8n&x9eTr9vu7xVKj zglESm)&%VQ?-}UpJ3Rv(k<(w zz}>l+s=O=+jpy>-T-r5_!C)u?YfnXve)QvM$AdqshDkRdW6U;Lc^;!q>5=W&Ql=Uv zx<>(MPOLpwV9K)dj`@MgmT^yxBc*uq8k>8{y79 z(wlFiNJD1z`hmcwKzUxC3_Pq}=gs#R*lo|vg~13egqCvdU}bV@h%GfSQ7EO&w$k(X%TU5E$AcEhL9T%c0Jvgmx(0K*I)9&61|Y6-+j9e=a0~=RsTQtJ zJC?jO#M~L$#aFMLpX{>pCSvo%pg6s-J^IbK!=M4Qh^PGQQ}X+{A$FE<$~l!J-GglH z^CCy4%j3~fw;7+bo&vQ^BX)IaI9T8v1-U(C$$1lS(5`G?y@bLRoG>Q7tshTb6S0Z? z;x6ZVT7Ma#GZkKJM<{vM*|@-LY^(J=Kul@1jL37$LClwO}9YeMkjc`9bWgA zgg{LGN@n)`YND+Z5MXN{C+p&GfC&ctMr^&%g~QZ~+~n>ytOrk%e-kR z1zyqEq!qrZytNU+$h@gPU0(7gHU#n+Yk$FvLql5Sy%?}$7aCG|)BYgDxofhvz9sap zj_m{ejA%Z3asEaSsScYmc~%pKpq7hOaTJrIdUW7f7S=e WS?8z|$%pm;0000t26WR4@D2`CjQIuQsq|@0D8e zY6HfSB~x!CzG7-(ypm+WRP>i6cg9HBlucdNa9uVrCy!2_yML>NI5lM(XDydy(^?9= zqNzzILN#R@D}VDuu@6K)NuziW{(}dNb<1BP^xZHLq09)ft z&rRE%IvXdH;SQN5@RRX;_~wCW;H*~0XGd;C{LlIT*oxu& T9TX#W00000NkvXXu0mjfAHwS4 diff --git a/graphics/object_events/pics/pokemon/hitmonlee.png b/graphics/object_events/pics/pokemon/hitmonlee.png index 2e466c065f6311819e298c2d731e6831e088296e..6479c3641ba485be00fc53c1d325295aac55ed7d 100644 GIT binary patch delta 437 zcmV;m0ZRUy1fB$tU;(L-VHbbIT|3kh9lG!`-8=O;@<^NyI|D=1H^@~6&d6{;FPYkl zCO*mjf5{{T+^G)+ zPm%gF$-SuBGp{cRhxZ0@)3XrVtoLVv<{%9CH8}`_+yKv9LlmTeC&A77VBq9GS9w=d zVgiB;%UZ#hA_Z?~GAV!9Eb9%337~S~CkP)aQ%^*S8lp_rGor>$f)rTR!}?ec;Tm~D zyyud991S-mSFjq8=^T~zFh5o#Gj2H)AU~{(6@d<00000NkvXXu0mjf4n@d9 delta 435 zcmV;k0Zjg$1e^qrU;(F*VHbatyLPB2I&|S>x_9bx|0aOwLAKlMw5A7GIbGRp=CJoOFji`Vk70wkn+L(U;ev(bg7*x5 zGvTHIGL~kQ2f;1&Cg`DEWkg-#IxDYTiBd3UK=Y;bcgid|#u~HWt4Dt?4VZHS&=ufu zY{`v07o6$~1M9t!2F&%u&eUOj(~SZhMNWb{^`QkL4Va}tXMNaU#~}enPJ%o2Xz-F~ zIFr(gs=e^~6JdOBpfm#u!Oi+`CTI@AfM1h?FenZ1%nc+#iaZH!)}w)w|6Ju=Rf`D- z3OqFm#uO>|KvPJ;c3FRKK}-O(6F))tSea%bQq&R^vR)9ib`qq(vL4o_dI;Cb6XHGB z?Bi&-DY=5xfJA?1=0esBUVoMfS$`qXNrT?M*-VfPd+d{9U%y)^7!0rYDI9w?Zzf+yItFTT4yeSvmj!002ovPDHLkV1jpK#`*vN diff --git a/graphics/object_events/pics/pokemon/ho_oh.png b/graphics/object_events/pics/pokemon/ho_oh.png index 909c3475dc7ff99895ac3ecc308dea7064127db5..d316b71d4df8fc73a51c23401d372e75b93bba47 100644 GIT binary patch delta 1882 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 Eg3j>0n*aa+ delta 402 zcmV;D0d4;91Ly;gV1IK-L_t(|ob8k`Zo@DPML86RhQep+5THFqCaGhGz|;^J9s-k- z&(x!62qH~7L)8uyrPzYEcJSYxMe)-nX@Fh3cJ2Bv3c#as+j&8XOXg964`_WDxAKCa zny_$SV}*k!(uT-w-=q)xi$plPlz@*VeSuzvd#XvzZ_hHF)4Fx2$Q~~ zjKi;=HlM`>2tz;E7N>B@l_3N(7!lA-ct@P`IdrVwn@nYVZP-OdE1D7mAtj?-P2=w+^)I&GV4F+{RSf|!GO}3copA2PzG!!j+WWqsy#G2El1SsTP wfn6T*MJD;@S>UvLW1FLEvYOkx>o4^MKV%K>nG~6O01E&B07*qoM6N<$f`uZy761SM diff --git a/graphics/object_events/pics/pokemon/houndoom.png b/graphics/object_events/pics/pokemon/houndoom.png index fd0bd7f5bc72c18784c6804cf776b252c5e65af5..869da31981f04e09c180afc2ac9e5bd038c85dd5 100644 GIT binary patch delta 638 zcmV-^0)hR?1=9tPV1HgoL_t(|obA;yYui8+0N^)RL#IQ!R2v~k zil_KDF-ac|&Hme9WdYDC*CFqZJtI_|Qo^Q;Wx(+Gaa`{kp?|t5U*`Qn$$;yd3n#zl zsvqCxs>5Z#N{)Lyo~n=m&PyX{M$gqW9`lp#SO(0%RNP1g0o#NV_lJjmsX~@q$UvQq(XI0W<8`0qPyTNeR-*>CC z&KK>F&z6_Zc~aM_7EP`@sPD^fHza}YmB@7w@~`E`7hKf!wu|4ljdQ(RURJv~@C|cg z${7UQdUJJ!qCK4gEShYmyo+zoGSPkL;TxirLHr3pn}08;+5=@~k!-Y0c=tg&1sp>( zTAPx-BhR2w6$7PBCL7IuXkoD0ZFZhPuW*sAWYDk?ozu}qFcWZyBnE=E3GJlIpzTY+V~t8iJw+&@oD?vE^__K|FhRFlJp-DM*^eM2Q)oM+ z_OMBu21;g_pasls0c`CitP3uj?f8DMS~v}w?q=X7bafw2LNjwOZto|*$-2S)i~hIq Y8&2VmUm;N&n*aa+07*qoM6N<$g6fDmfB*mh delta 629 zcmV-*0*d|91@pZV?6kkI{iVgbI+E4GddZvIP%Np|au^H-eFx)Dw%(IvSq6BH=lD0V zNFNW~{@Y+x3DB#yAs>zdBUFP*!mf&C!0_~OTpt>tx~*Op<9|}gfSa33C%@-<9N!gc zz-7Qn&POAjs*nM$Dw1|a&-F5%^Vx7N17<)qC&?gSlW^g_5zlox>yP5JE#Mg#a(*h> z4!)yBTyYsT12s%ydxWkJ7N}KBa~U=;VIEoh!Fa|oY{u0vYZ6koP0JbQ+)m&bE)g*e znjMYi)8=_=*?;L~L~l;qDR2$54N)5M$)_XEljf{Wx@;nvyn8X3w*7tg2HRrY4>^V7 zmpp0e)$1-d9n?4YerqN0y%B{jL;eLHUvbgY+b@3KCayHVaox^=Z&(pk83f#We|?Rj zzgz;WyKJU>h*_G8;bRZq5N!zYCj?DjQ1vH@vPgE?B!9gBpq&DaA-dR7WxpfOpiz|* zr74%4W5v(6JH?Cn-(U?*heBgm~OG#yfN*dWW$wlO{nl@?X>k9d|84vR(XfRxwzoZ~ P00000NkvXXu0mjfGP^4| diff --git a/graphics/object_events/pics/pokemon/houndour.png b/graphics/object_events/pics/pokemon/houndour.png index 4397d968ecd044c427ee4777a78e692800d3e096..daacf9b565be498f0eb8cea19c3291d4cd416040 100644 GIT binary patch delta 469 zcmV;`0V@8b1giv)V1KqrL_t(|ob8l7Ps1<}hHpq`D~P!WH!~4UyW)Phf{7GG{1c?I zv9dA1(y9Ng(6tRo5M|+T%FsK*(HW_?Jr}?4YsVh|``XvO_Vs_t_WowL-oZQUgYYou z$qdlwa)rkgD1;yvxhSzLw)les%$T9iP}tY78ssv^I@UD6<9~j*V1_<}jl=LL>WQ3b zty^P|ScSs{l02VX=cFHA#xm~+NDt4DF34xMC7;gl?GJ8iP1nphFiX_rhx%L#?6UbX zl35u<0}`uqJC9Njxi&n#T=u&%tIx2BAhDX<9q1@UiCvXfkv-1FA~#lu3pydr>&b(T zj{0vXurpl0Pk+{BE^_8(T+&VEtkxUDEEc#nyy@Js0M6Omw4Z5!$EwsP)vA?C43)XK zPZJVQb7wm~>6BGMcGY7iaK}nh1CN!R;Uf{KWQI>EK{K>Gz@{vqk+gNvm09VJX+;m3 z{g@Wyq7CBdEFpnIGo9%k4af|Z)Np8!1=t*@p>p?-22NHfB7chzExk#B`-(KOh!mRv z0`L{&py=b0Z(1a9BOw8`c$Bloh}~sihFtx#r9AC-!yEC7$G@yE%00000 LNkvXXu0mjfC@tz# delta 463 zcmV;=0Wkin1f>L!V1KYlL_t(|ob8l9Ps1<}#cxO@HYerCns&u0btNWJ6!D$d z7+~qt?*?=&CJ9nmIGi%{&gJM_ski+ue(%}wAAn;W>sZG+oU-}<4EK9@k9`!MMY+rX zoe@_A+<-!eoXAy;b+yGEj<95gAwy+9;^x}Poa$85fPlyGl7AV73^tA9UXqJkYOVV- zkXXf&C6c_5edl5v-=;F}2`J94kS-`>za`(^@be!YXieA5IWjBMy2TV3fvk-!xI+3xqLB$R~itos`W+l-ggp1V{RUbj0Chi z+>XzNb(4`@4cH6(vC`BaU}YEhL^n&i|8q zd)(hm>pD2wudLEVFcj^SirHPgU&$9U0KjJWa<~r)T(@D+oxv4IAxgofy1Cf zHNKTMha)kucYpZ+r)HFNs9rSBGl!W-xO(I|a`@zo68^-q%W;Hpvx|alUT5NQ}XaZK)GS>vZ2?e zp)W7MWyo-Xe5hgJuy_B$`Cp@fZ4~2MbQ@rm;xsfClx(b-N#r4}oTf*n9l~i^=}x+c zi>ktsUSjnfdqPf889&aaje^}JPUMBtMaxXDj0UuzOe(EZYMzj+tLt8ytjzl+>kax%uLi-r)+$Em<4q1e0pld=q z^kzv8GUOG~EUi$Wri)`_=&QKUP%gLN9yipMg_RUK+z$D-PqxmHeQbbZjydL--;*NW z@1Le~5$yGk^LjqW_xU^N6ou2B!P&WaWZNtT$o3dYZqI_;VSo1QQ^9(NZAhZxeHOb7 zEJNB;53XsJimmVe!>@|Aso>Q`z|97hS-Qc+!1wcZZzlNY2NK6|yMfJUCT~$)&oVsq zM&pHFH?W+I1r~qB{3dQUuthl&qk-*VZ>Z(ADrg%r^?-A=uAbTUp&2nw85MruFz8TC zuI1&|k(k)IdVhdJGfH|?FIp6t!%QSx-E$o|d~ikyf8p8bB*M7eWx+0QHZV;yq0h20 zqlO_F-i6pp=V{b#CZ<$yD5`g^cdn)=6-FrJ(q#`Rd~>6sc7y&Sd3YzF+OTug(CgCB zS0~^yWH?1W(y(;cyM5z4HyYSRF}X&!0oEzbLSsS6hHIHb9^%?*dSu!moTiojw2!!~ zE3D`x*59!wg1g->-V1KzuL_t(|obA*xYlA=(2k?U%GG-}VOYM+R;etXGgwnm=q4@|Y z4WvUpjGG1=viXDz*^+~P6&s;}%Wypt?xIILTGFZbwjZ4T_jr0D)Kynqb@k&S&UHrE zF&ZzTtBg>vG}@lQZrKxS!zE$+i}rmg!w2e5o$G>JT5j~p;~>lf*D7i_|kXqNJ`sm=Ld266@d(eJV$rdev)aV{@ECW&woo%2xd zg{@{W6iv$m*#8_@gZqQDpB>F)Llnk4%VO%Q6b&oq^-;eKpYI-6R5Yy`;&4Boay1Yp zCzIOofjvJzO^z<>J3>8cS37ZXS-Z>yub=+4Md00(n|yugaeo~DkLw#F9&PgfO~8}@ O0000 z4WvUJ#+x1Rkj-bvkS!7PRooaFPzF_YkYbBiw4_tXZ6C=09cRl3UF%xcy4H`2lFN)R zu^KO;i;PgPwAyD|a)}XUYn%Idv{+fqn9XuvwjmaCMuJUYGk;??%XeZmWipVhiN&(I zEjNPMw%MTVev&gUV32kh@+uHk9j;p9_RiWK`H<59U_{P4OsYhHw8L`XXd*kFMm9X+ z3CN1S$a#CbB4qmx%fP(a+DB+u(JLW_ELrLR(_xjE39rLd;Fhsvni^IO#Q}zN=z}QE zn-V;ZW2$ejX@6O>B+o{rVXhnU)O~t(ZR>_O+|Q>%4}|H_ zv~hgk&QDL%+GTS`sORh&Cyp)~m$?wl)4#S1yqgM}FE2ChkK_MweFHYjY+8=-6Tkof N002ovPDHLkV1ktv=N$k5 diff --git a/graphics/object_events/pics/pokemon/kadabra.png b/graphics/object_events/pics/pokemon/kadabra.png index ebe56d82998f67b0475119c830f3721800352259..8081953aedc4b16694577574cccf386493b531fc 100644 GIT binary patch delta 626 zcmV-&0*(E|1;+)DV1H6cL_t(|obA<3irX+02XHO5^92e6hJ;xR_!3=aHB^HG2E)*Z zFbwz#S=7c10j+a^(m;>V3@tp!Rgw?|w-{dK*!r-h?jpOE2n_il`~4Mt*o0i$wO!l) z(uBH##pPD5^h)-<+!0bQE;k{R_wzh27wvVa2`RE288&_1mVW}~!%iB9`cO^yJsZb9Gbfp1=cp5?h9+YOm~n!vqV z(6^i>?|o_8j&cvN#TWrwgE@*!-k11ZnMmI*%Z z0(_I@>rb^RH9*fc@NkQH!bF973ai#SFc|Y1aLl7Go=w1vu@n;<;5oo|aS|stdQxfH zS_cwT1vjUx>H?@|lFw2s=Jp@>rhCLugnOy`JDWv+z<)b{=)`n?=U4|&QQz=Tg1(`( z6Nnh%Ari8i5?QVfXX}0@#_He*y{%+=cCPC+ld!Ku&hoft6PUlOF^o>7Sp!@(HU(sw z-SfwEZrAAS%sFW^!zyHE+jQ1}6jw()7WQON{MgtQ6f7L2&dV=rYzEZa0&&hl8(42j z00N9S@g`o$M!s7L9FS^KvOp56;<@X^}Y&P@O`j;LDRbB!M%) zQlQ!vHh?SJ`DhyQ3Y{-NP<_rs{|iB!f^KbFV)y6Y1CPADT0Vm(oU9`3_MF0Q* M07*qoM6N<$g2Evs@&Et; delta 623 zcmV-#0+9X31;hoAV1G|ZL_t(|obA<3irX+02k^JlqTo9i5@s>rOLUn<7^=YwgJEby z7zTU=FKT0kfUb~L>7s||q8_>sn^fui6AgPR&HAKfw=Y=3r{ONx|Y4*AqNa3}UEu@yfiZcJeLqOV$ZovgnIv6R@E)#l!}94)9%^#7Ur=O47kP z5KtAY&sjSL5YJF-QY^RjKk!W^US)bpdwra$7n5P#8`>iN;J4j{Y>SSW>lV6YR2 z7~(PFa%_pL_Q#9$JmpJuakxHKGQGIa_4+0>EiY&hPiz8<*FA>OxiWiz(AyM{Y4*UL z(yiU2i!7n>una)KO*9ShBmOPE9F)P zR#<(A*=W|}S4{cmvt199l%DM?gp|E)VE^M%o*$jNE7LM_ta?)APQlk_bx8teffYw} zENlQ%w*BY_vKE~;K+t~9`1B0{PC>V}Ez$h>@0qXs{>Z;NegQ3&&#iNVpuzwE002ov JPDHLkV1gh>F$@3z diff --git a/graphics/object_events/pics/pokemon/kakuna.png b/graphics/object_events/pics/pokemon/kakuna.png index 371cf74ab607b8dd595b0254f635d4eca7c98766..ff3da1eb7d2453023145ed01c061d8cb0710db96 100644 GIT binary patch delta 365 zcmV-z0h0d11H=Q6V1G|ZL_t(|ob8gaZo@DPM72wQ(X|`hNn6cK%2sE~M;eeiF@u4~ zQ~XhtJ+vepD+oFiD9r7w)4P)_WA@o+pMCypEdA0zebsLx&~pX_B=CLB9|7Pgg96&J z>?{6x9l|4nm)a|P4Y&%p2jp4<9|g?o4OSX207g*2#jgDv7=OV>MBRuH()=NPYYn^; zAb}As8IM2f8fen3?9bZ)?dnP-FuqS11|A@R#!fHrdfNt4`4IRG6d*C6MWVz{pn%4P z@@y->D-lHn6jwqWf(TGR7lUsv+rT{kRHl~(95}Wh0yWSDPo5bxFk=}Wa7`$HT5Djb z9C%}g%C8EW>}FeWBB!(lnrqVl5BLB$^Zgw(T(5xZ012EciiRV+3IB)(pro78f zQD6mhhm*X5Q#aJK$w#Tjv(zSGU(*g{L9LA&>e{%euBV}{|M7eQZ*s*VP+Wt900000 LNkvXXu0mjfrQ)D1 delta 364 zcmV-y0h9j31H%K5V1G_YL_t(|ob8gaZo@DPL*1%FZ z@Wu|6Ullglw`Jl)PH7D^*QNm;@Ck6{`#Wg3UIEtu5;#{B4M%tv{t*vCyCfb>d6!?J zzzXONCwT>@Zm4OKk5Z3ksZGMZrX9+HS{paiwQ*BjPeWb*5nS_0000< KMNUMnLSTYAIHeW< diff --git a/graphics/object_events/pics/pokemon/kangaskhan.png b/graphics/object_events/pics/pokemon/kangaskhan.png index 62579ff85b7f86fc9c1fc1e5b1b41a9eb138b8a6..d9f08d071b32627fb55a893631c588ad871b075b 100644 GIT binary patch delta 616 zcmV-u0+;=|1-%83V1GzSL_t(|obA@lY8x>S0AQW=x^L3Hgvl*=1|N#B36b8SSKkc1 z)NhfCp!*WRw`4Ctq!ctu4d z@LkD5@64@E0_GMsGcX2c+mb)s|1jp;{YA-|jI%yTkXclBde`{NdC^WA<6X%W5j|eT zfVp`|zC`kGJp{y=7A5np;YXsM(3LF65&wyT75FdUbyuWZ_0Oj?wgFW8|X6%*tp2gv^l<}KNH=VQgWYXxhB zCE7z*DfsY6#pUusI27fB=f{XryJX99qt_%Qc@4ieNsS2LCGOv;AvkPvP2|DGA;^tD zZQJ*x+!(;w(KsfkfyS0lNHDb!3u?KD7;to)5oh~$^?%&A%a<|0W<5G21W(RMM|vEL zn%Gvcj|mnlPN|MPVWaadcnApEW9vhY_2`h01ERG+p~k^VK}g7(^rTs;*T~WzluwuaLhHLEPe0o3q1k?Nc zMAIbV3_iOstTbSLkBgq(Ps$%(KKWJguYXqjxAhCRB+{jw{97de00000V1GqPL_t(|obA@lY8x>S0AQW=*nKIJTk;HhD8eR0dW&9tGxSow zMJ|HwO9bE2y#&!x(CkShn4RgY*Rr&7&Dp%EeQ?a$13G%^Z8; zTS)mP`@7vm3u%nJ=zV+1+O$@bU6b4!(@N@#CS#~*QSsx{#D9QiUfhfUpB7EY*P|aw z7J6^)brLYQxLbfRxY(8a@$siIUmveZ)?}RZNrKFxdeHmUUpGZNZH#v%S48x569eYv zCHWG`KlK<87h06eyM{GU4}Hmk9PythSb_fxUiT#nfw&=B0hC-T$IJEwYbQTAIL*|V zxuwbiDjS-bTYsQ(2+qa==B_v!$fQM?`GOrQQZYepa)A7=VBV6gcRp5}yH>D4SfM?3 zm4c6tR9r4Egkw=YxH(0X+9g|-8@(ne$!qw%Noqs@FY)kB4Z&fXc_cj8I0U&7sOyG- zl$!!LI~k`0HPF-&3JK;GVo4nr5d%(+Gve&ft)GW(^?x!2*ls3=gy6|J=}1q5Q4`xL z_9?+~%_-HXCv0@y1&;wid+dDZv7Q_fazL~eDAYJwDF_L9lfLVhAD$q52KJY&j`kXt z&+AX=K|44kq*6l$EAw`mTrM{RaZha zZeZlS?Or$m^?zFcG+hH0fEhpnBShT-wXPH-u6Mv~pM@sbNpXgNQ%ASTnBvzR5(M1< zwTVjZ8>XG>UT8wt!10-r+;mtv6skPpOE#U&oemCI`T^e&F)#ZL0VC4&5YOM!1Be9w z&>#`Ra$;oHowU9t^CM-hXK0CNBN_)nLs?7MBbD55Ff;F2a>Y4Jr!ul yv@IkM4}Sy*I0^AWb4dU!qW%tA*Q0RStL7WK+*9s~jLD+_0000Qj${Xj*Up!+CB^Im=1wNH(X%>SEEK-w!*nvAU*F}xOu?^Z1+MNz5;Ts zp}>Lyv{oyj?-t0bT8(2hEunSO*beAL$UncJSf1H-wL?Ij@sGFT(nSGFx4^opE1?=U zF!J7ZFPwn-J%0e2t^o_c3?P9KqHcj&R|*o>JK(m@LX+&II77gxqg!Q6@#_u=f^LA? zL?!nP)6R7-G$Cx@_{>ReIxHOuRUYvro6hD=2L~+ufbWQymwktT5$Sq}=kMtOM1p^4 zkceS9F|zAUT3?g-kuujav_!NKjRT>fECS<3KqEBMmq2$S?@4@!4`R3jN!i<;3bbU} x77~buKLP}tgm|I3Bmfpse+RAWQ8?{Y^9`5UQ$z|se<=U}002ovPDHLkV1kU)(b)h1 diff --git a/graphics/object_events/pics/pokemon/ledian.png b/graphics/object_events/pics/pokemon/ledian.png index 3cb51c5b29831839d2696e108c3ab1d9aef14d64..0ab9506544af4cc8e6c4d591c7c15c67efd0afd5 100644 GIT binary patch delta 797 zcmV+&1LFLH2k!=uUw;DnNklBjE6vs7KO9tyZbP8QhU9vQw=S4$hhy}qz z^kp)LE`>rMbg97#q(_LphdJ!8;2{Mkn2RA67-4*Ur@ND6HCEOZa*0EJx_7_-yOS)- zdLQrO-x$st{PtMs&jHRG1hkw9_d*JId>9|z+Y^KeRHMr8HH|D(PZn45Yj)$j_(n2 zGAf0dhe_E)hm6U%9?)PLedNw6UiGM-C(ROMA=&cm)=5o}OB6=(v(@!%Hb9OT(*af( z$Eg(7S)gC9N8#q1h__nUt$1pL86Jr+Le7|E^y!Xqlj2t;RD8vkx*m^2+#X*ar)Eo> zE8cO_F`EK>VP(ghb7am-Kfb)vtBYEIq<7_%g0%-GY00000NkvXXu0mjfvO0MD delta 817 zcmV-11J3;K27?EXUw;D*NklsQfDjar<5F#VAs5kZ{`)=&2 zZR+D-A=FDyoa48gFNOJC6vcN+Xr1we;x%6cr4WqJ!G9Cf#*DDSCppkU?_LSJTlQn{ zu4G2*EDUoV!R_NZ3}uH+?EDrv-r&zygjRpt#*9AD*i;PhT_M!RNHKcWzD*o9S%>0gUTg_jvbpA#3P?~mke^h=Gvf4+ z2c)GFkRS{vD6Fu+YM8FrnXbQyFrBLoo6R+|nGt5VCBg{#lt@m=OjnGH6u(fY3sQW+ z6CJ-~L|h+T9!*jmz`5cLHx&~b;0q}$=A0vQUVr-W@}69r?<9~Mn1Cf?FU=3%Kek?& z2~e!>W1CIMZ>%^W%xnP(K>vwMyP3yX!nO${oBP~mvzKOg`L(qv1&U3;lFbHqM9!Dn z`I0LMMst#F=PMQlc;bkMhbKYGHET8%@FZJ7mfF0WU+`{%reL|hvu6eGjITNYq;-s^ vrYerHiO8>ECnbW^ahDA0SkI~D|F!)A5|s=R-xI{E00000NkvXXu0mjfPwR~H diff --git a/graphics/object_events/pics/pokemon/machamp.png b/graphics/object_events/pics/pokemon/machamp.png index 63ece511273632e8b4bd5e432a1e1a5de06b1c39..4b7a1188f98cfdf8c029e95efaa1e70f20f6e898 100644 GIT binary patch delta 833 zcmV-H1HSx{2b2epV1FM;L_t(|ob8prsueL1##5%tJ6szZ5iVHU46+DI3Y+^5zQlqn zq*?YQEaWz)5j)=^#Uc!Og#)HolrT>IZE~(xRJ0LpIGl5Sne6w?OtQN|JdB6&&&K&L z`4>Z}lM+Ij_&Ka#)Fe!GED0O3|V5ny`98@Q#D8|am#Lppd7$)^>!F~LuFy>1)HI? zaeb7~MDHciUJHmU7Dvf339kC2Ct;RofLvPQ!?3c=%!XxsF_``B?JnKuY5|eO;xV0s zC@39Yu(4;HA%Co#3`Kx*OSJHDb2?T-iAzLoF8haSaLL>gvdnJJ7bqAq`;wvX9)OH9he70N+2@jg z!SI2L`V_Y5UXIHFv>&sevSVg|t|gpK*m~a4;aWDG#($3hFFxu0ehwBOAnO&u_%CtZ zM8TW?k_FdVQ0Cx#J-1x*(|2%sTwD4B2ZWJ7wrpa6%t$5v1YQHKp&CRUH#(Rz($`P$ z>UqoXlBJ6^08&2JVx_`c5xoBV4J|Z-$e^(^K)Swq&R3O9JUAOHxJAJYb5B*{(tVE@}d9xZz2V+N;ktmGD7K5#DHsoW=J+dS6wxxLES_186w)%L$MrH%52ou-9 zHJ;a$ve%X8YM_vZlWWQ;I8(S9#GB7sEsmkA=95;51r>}7r|Yu;oC{~e;3g3;7QANz zK8=~z)&y96Z@_Gif>>~&{f5F6(j-4Z3THzWlz%G`8J10qmG^2OxF-R+cM$E=(Blr~ z)vKF%P?S3;3unWC`#dm%IpT%GVerNn>J8r9IOw)Sf_wXHwL_h$+zhobD|GS9>S!}> zhwlyKa)AM3iFTX{FMzwDmfwPW4+L!SF>!mr@MF*g+bN3q0)yi;RTE@GPEIv;l|##Mx%Cg>e5O`0QckUGr}Ou(qP=E^*Z zAr7c9eu)&}ntd4+CNSs~7NWug#ANi((q1kkA!z~;%kKU(^7qY*WLt>;Mp0BEY$FH7xAMe3n)KIEft!7FKidC)`#b?X}5GlZ}(10xd1`Cg!9N zV9LyaEa6*`(b8x<%Tdw)#M>xHxE&YxI!pI+6HZeeEq!Pb|cYtfC29d{&4(5#X%{5-V zZW&&(bg>3N%I8|FRCp_bH=oaFp&3L5jhz9~&DCqZs%+xH*GQ%=E|!qp(&eBNqt3}rQ+v`Q?fU|cv|pAFz#I2#5xiGZ=-Jsa?8 z%)GWH!0LMgW_uLGf(z|;6sC|S`4Lh$8?vBWiGRqjY+|guR|CO43DCWRXs3oAcQCiN zck`eqcTg72h5`3^UypR28;t|2$iqpfX?a}_X&YK#bOAf z?xjm1Se6eqz1Y$o_GB!pvL)NHK~BR$p|EpVKL473G^1IBu5pcP{Hwr1T*~-Qc2$qUaQ6RGrV~g@3^pS>6ia8?G6{fphq= z!M$Oak*om3Da-`=I0X5#3n0~>&%;bU48QX*r+q@0F)R(&jO0fQ@SW#DwuV8*Y4Qrx zE3oERHSn(5r!X5w7Gy+rZ?81-CbHt+pcqirj!jjLlYG>9&6v6Nq+1?!gfwH?-^vwN zl&jrNv&qo$WPeDHTY;vWOz->6V>7ba{OA`Z3Ji zylp~v6hE^vC)!rmsO&kL3_I2dp*+3rdDI8PM-BcfW3RYL!0bVY-MqMtCqv9K-7#Mu z*y-cY7i*-z6HS5^a$&%QR6c7&mO3JyKD4>`BbZxpANy(xLvxs%{$4jKUts?MtzvEX hHJzM3`xx-w#vdd|h^J@cjw=8F002ovPDHLkV1g;?6TScd delta 545 zcmV++0^a@e1oZ@vUw;AsNklKT`7@xrg43bHrl}!S%j`}jcfd?z(QQge2Y<0 z6#OFAy4zxWKA*cw`2O|v#|ER?Bq$!{%5b~E#W{+iCd{ZhoqtXXgD*B0F-E=H5hB{09_;l(u72mE(kuI;$x)*Pe9CqmGcKRQp@G z;woiox6^bobbmYU3SKP7j@=n-bZSDuvzw6PWZt7X zhj=cxViGe2G)r}v4sEHuw4A*-LspwNO=W4{t=>z^+4KmgWtqPawRh^GSj+tW8le#sy}S65e8*Q+uiRJr*g&R)g!L8x#zdkVqWdGfO|!Q+{UQ-)O2b_;|U*`3DVVmJ_9swVzn{RtNgU28mg; zv^&o)`vA-=2QJy>iCDDcJRxcSE`6{3{Hk6A+J7U(oFd7AOul1T5UKD<`QT?%%PF8& zZ2xMYBS!5<6*mA3sW;g(>j=T?fK*t6IVOq-#xxZ(g%+K4jnpl=+L`zF?MVGg-4zC&V7hX-lmPZY) zvu)5YctRp|aIdWWQqTC6m4BnT%fR_^$;%HqtgI(0BU`_)^1Ti8iye}PYUwv#-u3}R zL=W7uuM>%CDRn}!{$2ZQ{Q9b_0&TyMVJVUHK(5}gE{N3lWPIQS&2oy!hW%d+Y{YE+ zYyyBI^Cnwn8!#cVEg1EUjD3${*Q;Q&uff}b&}!gI7#;juJpnLadqncUCNTg2002ov JPDHLkV1nG?kuU%N diff --git a/graphics/object_events/pics/pokemon/magmar.png b/graphics/object_events/pics/pokemon/magmar.png index 5fc8fbcfef19a971bec95571473c288503064ac1..aeb27cc4427c4ec816f07ef69c345cdaf0a5221d 100644 GIT binary patch delta 645 zcmV;00($+_1=ck z16~RZwSc@#a6@F^JZUPRK0`@aqK-=GEM5ZSOacC#>F+!Kl~P~v6;}$~w-_)yR|{B& zHpNn(pQ{z{k->)rgupZbD4^KtR&oc zIPoh=EJ~f{WvL4(Sp3i?5ddu5a-DFA!q6N}O|A1>Y^m8^VAXM3JiCPPc`}3@Gap@^ z4`t$?klV*jB$ z2S3iU!p<}18Gl|^-QNXeIgFTDXBlqqJx^0KX9bG|zb=G8&!U1LNQnVi!SL(mzLQfr z@*n}$@~a#Y^lW1SoJGcXkN}+}LNUk2FWM2K;K(psCzhT0c8mKcV9z{G0$_=Rg&WyY ziIxg+asfL+*09zoH$4NBX>V`-*eJj~%7+nI7_ z3^QlL9xxP!x-q-)l%?g+W f%v0|YpEmvhpTDtE&Zw|p00000NkvXXu0mjf3ja3? delta 639 zcmV-_0)YM61=IzQV1HjpL_t(|ob8prZrd;r#yQ+%AbFas2?+EClK}lx9_#|$I79{v zbkI->$h%~?AqsGwG!;;vp`6fi!Y7O;(N zj1M>u+0JGQYz4+Y(LCIGJfp-go><_Vzmw)iAL%YFV!7YyUuRUg* z`I!n$rOUjow2^}5ySAACVC&c0j4Kp|_H=F=U1qbVc7KCa&z*Vp8RPS82nS|<_hmj+ zb!bIasza`R=$v;#;3WuhUFP@dSRJUyN;&3M&S~W1%pV$X75Y<=74$*h-{3Qc50yFk zahVnNfw9c+x_{~aXex3XF|#f*tnLHPQ?z6STJx(G0t1T*q9A1k^57r)6}E^ybKo9F`cV-G7pktAe;84fD>F40k$AfFn!- zG_ZCsu?vDRHFEg&<{9Na>T&02tT;xu-g078o3M!IBzUJU40;sQhMjLG4*d-qYPFLa zmrhPY8WXVf{oDa|FD?JtCV`RDaKRs)^Wx-RcYJAyxN0w=$NtqxY+MGLO$ z*4K5BV|eC{!`4ZTpqUzRRM0jJ%1sej)MxFfu`{cIv+Lh}qq>o2`_b0TywA^w`1CLf zK0U-;Fmo3TyCM%Yh0qI@g83^od9otB+H-T^ME~ zG^md;P>Dh}F2v)i2)(FtqBk+N<1O57X27%i@{=!~#DtK&_S$Q&z5bb!UofFkeurtv z#U&;@RfY7gX9}!#jUU-7dZmWnS2IcS@{p5l_WDwlsv~q-RexHxd84^n@-y39CH+B( zEyf9vQmT9;p>}$sZ`cX}xu{6^sPo7-OwW!$wW|fzjKUN<#-7E)Bsf~07mWOL62g)r zOXO)mtb=+P5~rgz>j{k(f{3ScW5Tc%B1u(Lr6p>O=h^Jx)kmas5k;cFn%`?ReQ!-5G3;%JsE<()`7A7ow4rJ=L z%->?Tj0#rVJ4`shAxec6a;T#e#NVsgG!N>>pWysHUcE<+VmnH73aouSKG`(M$Z zez^iC+pLA#OjuiX;jjo9urXE~me+)KxFziRhMkMn@pheSUUGePW#&FlGRZUdwPG=2 znIjyLW8ckryv}*-=JORL_Xcp5D}0xJkh|f(2marB1uf;?W`Ed&c>n+a07*qoM6N<$ Ef_bas{r~^~ diff --git a/graphics/object_events/pics/pokemon/mawile.png b/graphics/object_events/pics/pokemon/mawile.png index 572d9b3846ae5d8178fdef0cf52fc1e85af6fd57..43ad3b9f342e0d1b74f5fe26966cc16f557e424e 100644 GIT binary patch delta 554 zcmV+_0@eM31^)z)V1EipL_t(|obA=IZrd;r08ma``*)ph=@}9N-c%D_n!k{t4D}|! z`4ElGU$7gsouMKyL)w%g(o|Y>Dhi*b$CJntDUm|l;~w|;p8{ds64PAnKkDBaShG|% z=`nX46h5+l#+o%N>v(y0?)X4b;f)=hEtD;-MYqglz69B{!hg(CF*yZghYo2`PVUfz zzQ6r9SaTSUU2n=(+8XaUnLE^TW@WX86<=qZ*p$7|4f}%TyK{#{VU+f#HY*n4g)DMk zw(qbHUJQ^p%$c8WWp}1*-w-OcxZ-QY1A!)*EIjT3XY$J`krBO6@z`YBhkbD}GtIg@i9!f0jf=`wn?*+eX4X zKw=?&ebvnXg8KOH=Jvs-M*@18mQ4nWXf!Xt<6-`2yniuR%pq}P|2o9+=g93_#;)Eo z@-zVLy7~aoTP#o+h&bojg?*ZIkWr|+M#+Lum@voA#QPtTl`Ofux*KPF7+SvZ!~OK zDiigXIt&VL**#i)RCQOJmS3bBQlOCV#Flu~bY}LEgSYT9lL8 zH=*nA@iT1MkH@yxd8^83=Q)|$*K=lNstPuIopEBF_pYkh6*S+S+J6*AX}(u_!@|Fi zLGJT*9roUf0V4Z3bMvjtLFerne8mPge64sO5PAC-Rt3;JZK;LQ*GuQED(wgC=Gzks z{Hk;V^ljk0<$sy#u`PHA%OyXE$ zsU^$A)5r@MLpL4EjlQ@h~P0|C8EpG|s;VAL`h9+N!2QLU`me?>1PBWNUcHc{00000NkvXXu0mjf<1P|w diff --git a/graphics/object_events/pics/pokemon/meditite.png b/graphics/object_events/pics/pokemon/meditite.png index b6a4eceb7d9bba2e31e5df5b342bcf88cbff3be2..aa778ce48ee1c0225e1a36a6c64957cbb3601a31 100644 GIT binary patch delta 394 zcmV;50d@Y~1K1Q8aSMDgeF$Qd*-8H`Czw)d~aekaB$V94`>JVdNvbt3ru{F~BrnQ96ql zvHPreA#SoJJ|$+iQxHA z>5AG-p^!3{LVp#O@3pth0C;z+|3qyk`8t=|^y6?Vd9AGmmU$U_YpDudSz9|XfG-RH zt0CD@niT3*@>W|7bPM=B6+kPjt%s&X%NxUP95zL_t(|obA#*Zi6rw24Jta1BWq7>X9jQ$fbG!q;^TOAk5G> zA`DEeZxX3LbEO8PcB!S{xLRiqhR@Lw}*UhVl{BE?9&Id41Gf66?7Q+$ZlCE5H|*x1~krQF^%m0 zl7(E^-8*XvXK{u}Xti6??^_-TZQ`G`bxwR*s`YB`s#H&`;u%{u+uKez0jE58IaIp5 zc2mfOCU!{F!o~71q{6va;okVK+&dPbLS}Hr~N}!6PSYvoJ|b183gtzQCPX m2t{;SL2ukk7mm4HegRVH6F$oLHva$s002ovPDHLkU;%;?VYL1L diff --git a/graphics/object_events/pics/pokemon/meganium.png b/graphics/object_events/pics/pokemon/meganium.png index 062fd8d6432084ca819b0ab830712b6d4661aee9..bfbf6190ff1fa76612936fb53af6b0db12681af7 100644 GIT binary patch delta 723 zcmV;^0xbQW2B!v)V1KenL_t(|obA-VYui8+2kYy8f8hvH`?PF;G<7RH|0!USf3!}^hT!F;?gVO-@?8~>JVmS$xg4|>dA@@m!6dh)>{}=5f)q7Wq?7}|9MoI+l^y3<7krcQ%L+fL zKsm*HlRanFpO>r)MpBNZE4;G7cruc9qHkSrAupT&*MzFPevEnitYlUDRs~WA4sp{+ zN*ZH+QuizCCV$Si4va>lXo#EYBgR|=nqQZ!3OA)uD&(aO_tqNYLr*<2o zhC3ZN#oXv`s3#%-vpSf5Xm#9`Eg?d{+_=zz?KhYKs(0$cVh^}ayY2R=z|4jleHy0w zm;t(D%2|B9XxTm2?i%m!CdqyqGimfgrUE%)sP2vROMj7e5R+Qc5n?ylL<}TT4`sV| zmLab0U8%s(YT%mG4$q_%Rs+|1RVdxLK9e)Vx5sLrb+C9XeBT!jeH(QV*i(T6J}on; zHVH^BFgr8>5Ujo!vC% zjM)vyg9vG88q7V9%%(7tgGGblIx}x!MHgDu*G$BDi_}fWoX^Z8)Q-+M4Xqlou~~Xu zm^qv8?}Vn!N2apKAhri=!qN-@`>lM8WZsw_C@cH-j-L+XGcWFmBnbcj002ovPDHLk FV1h*YWnTaQ delta 714 zcmV;*0yX`o2A&3xV1KDeL_t(|obA-VYui8+2kn;6M^(EQO{TyQX()?fYRpcj;277U^^L`@YjjI)MMj zUpT_dKCK%d%iIdje+rnF*Vbv>5Wc;&oj}j?GS{aU6X2S>ynh03hh+ivhC9xkDfc1>dCnvcXR(Q0AEL zir2#W^O|+RRLW_-!5bUQ=2K}W`ql+wId%eE6RPrt3Fg_Wl2z?n6-XU8!A)Z+X@dDh z-LGt$INv%jo_|i`32v&71alQ=eqFOF_%w~<>j`eA19ve$OE=KBDtM=!TArYWdmWf# z?hIS%i3q@~4yGSk8+T(%hzKxu#yYTjiWwldS05I8#C<;KcFzT7HfarMlpSCO7|bYV z$?dA;;7WU7e9%kNgDz&$8AeP6a>Nkq&-6=?^%0Y1+J6_KmlDK43iVL7FE0wj!Tya3 zjI0K(N%QDJN?|o{tyhK8o!bk!K%AebfxW}kYvKE$dg$AztH4VYIO2JoNwYi_mnUD% z49iq}Fop(=d54OY8mKLnMxK-95^VMQ z*0+CO*(^a7$f8vsr_5~t5B=_$y#abAoQpGQHHe2-3vM7?uxs;) wsVp)|>;apwHbcOEs~;nUH>L;b%Kp9MC-C(!x8p&}qW}N^07*qoM6N<$g7>9d#Q*>R diff --git a/graphics/object_events/pics/pokemon/metapod.png b/graphics/object_events/pics/pokemon/metapod.png index faf8dc6d6105b9e94abc94176717cb62ed80bd53..100b676ca065567ef9bdc6db3e1732b0c3b9ea52 100644 GIT binary patch delta 357 zcmV-r0h<2L1J47HbAO|dTGFYIwA70M*;6lRpxJ!6N-A3Oe>*k;bSY|XFB0FU7&pyX zXPxzbs~vy2fzMm_YydSJ36u2C1#rWW5SgF9v5tMgidzvg!Rq*t|=Agber}W(8fE9xxE%CPF^HI0CE*10RaV~uyBkEx9Xj@ z|3T$(?4iMdfL;SZSTC53T|`4L!Y_6>VH{~f_gGlj=Fj;fjz(B{XQGWj6qXBc{2}9D zg_Wsc23$>y!dy7dJ;ZK8CLtFGqHyE-JQ45v|4@Ab!c>M7!DgW?00000NkvXXu0mjf DM-`@3 delta 357 zcmV-r0h<2L1J47HbAO8zAT?!aA!+hrK=#y28fZ3Ou9Aw@{NIj^09}fj+l$2aDaK86 z)>&u$-)hHSZs7CQJsUs`N5Ulia{=6NBt+)tZ>(cqu;Nz4Ot5DAKtAHJ}TnU5WIx$aUcqF-QyUh<-Oe% z7D`+LRJF5=fha6IgyDyif4kb1FxLk0Y6KjJ!g^s?j*}Nj5P)0-NkBk>C@dV~!mWDe z?SD{t9D8VRAYR}=5Y`K3V;9j7jPQ#cP8dg;&^;Dbw)u1Zh@%l!-kE445QXIe9Dm3- zSYc&qm;qN4qc9iFa}TkbkV(kJfhgR#K2OB^{y$Wo7Mz9b`P#pB00000NkvXXu0mjf De5b0L diff --git a/graphics/object_events/pics/pokemon/mew.png b/graphics/object_events/pics/pokemon/mew.png index 3af839ae88bd7c424d3adf95a66cc995cf91816b..ab8b8c43ff6d29f2d92993d3ca6f40f24ea4c97e 100644 GIT binary patch delta 463 zcmV;=0Wkio1f>L!V1KYlL_t(|obA=IZo)7S24G8>k>8_Bk=UXj_AY%$m`;xJ5Nwen z4{RtXuVA%ImZPf!G~Bt0D^!@uZC`}$$9E3-a^ANaQ1rEf7V*E;{YmBql4g-ha-;v=_BnOdHjKeVwy2 zaxa|%sL4`)b>)a<4XPVX&7G4i_BEWIP1z47WALsb_OQ+a99ZfM$i3_#6b*=7A-4y2 zwS#@7?6u+9xgl%vP%C;ZWA~0W90Ke0=+i`$Eh=Q*)3vxafK4@RA5P7`0IK}k66*4x zZEm?)z{fkl@qcyN-k>UIKn-rRR2u-&@ZuSL6G%NgN?E%iayvHE$Ct42vEjuTd)1)U zn6z;ncZu}FCZvr=xHzXX@`&um7`w-k1@x{ZM(k<8#Vo)b4(vp+y=zUvKE%}5U0UZmB5Cz~5cXU*| zpo{~*dDdzl1%mn6fI}R({lbXi3-a;8NaQ1rEf7V*F6#Dd5`U8wS|2uI+1pxemyN1p zKj-X>+)JkbYO>T%T{&V|gX+hwxpT6`p@!3EOZKD57`&^9Jv`(A4lH#B)R zo%!gjr86~J`;^1Tb;8a!NE1iXOCe;VH4BWb`%)(yrcd6QgoWI-&67>I?VBd)X3y$H z4v{Z=Oxf?AOv diff --git a/graphics/object_events/pics/pokemon/mewtwo.png b/graphics/object_events/pics/pokemon/mewtwo.png index b77a2939208a459842f17d16ea55c7069be4fc91..0f955fc734beb2f5628cc5ae08111207d05d949d 100644 GIT binary patch delta 731 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 diff --git a/graphics/object_events/pics/pokemon/mr_mime.png b/graphics/object_events/pics/pokemon/mr_mime.png new file mode 100644 index 0000000000000000000000000000000000000000..c4608e153bb089b234e3146e355bd366099c4345 GIT binary patch literal 687 zcmV;g0#N;lP)tXg7oF*!=^tfb~*O1(-sgE2Ax?(YB1&F-wEi&|3u0RIpW5dZ)Gx8;j~PJmd4h}58@I>d z8Uas-s=t!EL42GaeIQ*wtN;M$$S&6jqym-a5~MoLI8w5b&XKrW zD+qKy&sWu{`plAiy{oqKl>b726_x}gLpgA<-?UopvoEL-@)xmT{yIJg@yx4{eMaH+ zkDE?-f>F3Fb`)9RD12`CS<*5q-uClQ-ol~XXJGrQhxPZ_Vap|(8ig$>u++#1Q!y}% zU(AY!oBZc5GM~qM8p}!Nx~+H?+d#uMFcrfOS_u7RXM|f38OASGxb8S7>~R*(Ov65z znm{lNCJ;S~3#~5}Rv2h$Se36q&~1MdaTVaP>@Isn!~DLfY@lHq80dK06`~pO!+T}8 zGQz7%O?Ke%zN<`wY|d<;VH;RvG_W?6z-OkT_jhy)igKW_;pHc6FcV^+VH=1wo;Mo3 z&y~Puex(<8Brsb_huL_NP1|Jy23kHG$@r@fziEKS{7p+Yi4eZYh%!s&`&lnM&B3jb z?>48IPx=wL5|%YrnlihOq}nb|bAXrO2H;iE3HOnr7+h*W`B4y1!NwI7f9^6S6XSYS z{Zg@EOJ5?qbnbE?04e}iPy|vg*3*F)r}0M~)C$C7mX z^8Oug%Q0hFs25@H-W1}upQVAXg`(yxEc@w?Z-^U?8O_2UWd-hcDEB*+_aJ25;7a3= za@q*x+5q-DI)4ydMreionCk5*3!xGUswP|-kT7P-5eEeocXJl1ES!fx`}H>6n*f!C zhuna#1j{`JewH9VvhOn{j&|i$xHQlvgfKctBMIp%q3|B~*~s6kP--|XXC%ysH#ipV zbrRZT$I3B(!1#;52aQSSrj=u8H!VUxzJpy3J#yUfsefET6b{B1twDVfdpIQyo?rg# z5YsbrmwVg=Gt5^2@A5>Ezh9-tg`*IiF&KAjC%#k9>>OWXAAeY+aBl3rawi5e*Z^Z( zKNTJWF3iFh+6B)U5nN)-4cO=?ks8$8-K^1w;pXzQO3d~72uY}USLx5dV#PC|<$*5u z*gH%;b3}Q|RKZ)uF--Tk4?JP%-?C`RTc(P{mj@hYWMwI6xLw{drD8nesEqND|62Y} Z#~)-8aLC`S6!`!E002ovPDHLkV1jyS9IgNW delta 584 zcmV-O0=NC31)T+uV1Fn{L_t(|ob8k`t{Wi`Kq*YiWd;{++%T(%X0?)+Hm8X6m0Lvm zq@ej{vt)kZhBJf#mRr%vRl{AQUq3?MW1idVeizYT88^99CCPs{tSoseGu+76x2 z030`oujR+KLobX7uwBv%F@8Vpme0-C2SToh$6X=25zAUIH-D7N<#vC)u<&(H$SzWW z#9_N!t^MbYO9rqC=j2;iKqF*=NY#<3JXX}@7bI>Pbix^_1nWqhkO^A9j&w;Vmva6N zxaF9!NvIbgcW(;u+t1p-w?ff!5!U_i(;MQ3V@4<8kGcZ+0VO}EvIimC1~(dql+#8i z*9O23bRfEp(0>d0nCtDi2%!-QswP|-kT7QI5eEegv$+UW5za%P{d$}4O@J!GV`-4C z1nWJ9^ejPs6yIk|ob1Z0aA}}T2w`-PM-tLELg786XCr^FLaE`joRKgi-r-c4>nya( zj+ION0pqXqJ!s5AH?15)yJ->n@g3}P=#k@&&-D_baDOnyXbtL<*uyz<@ag5x4lzG7 zcYVYxm|?yFcvmKh{QV|9E*ypEjKR2LJEc4IiJeQ=$m0)-6wZz8D>E^e!3G%P`l<35 zaN#73pXH3dk&~d-KXG+C*#!(q#m;YM+Psbmr WR&WRdDJ@(80000);%pjsC+y%QjY1}AzTNE1WH-c^HP%>TjlUCip^f#Ltv`4y z@Hn8lshehjjiuUaMqO2npKS}c3T1P>%2hji8~7=AjIHg+tDvK_^%XoL8?Vlx03eA#0`#T(=arOmKC-*0`{;EX7H(_ZbMm=}Du zk6*s*5YMFSr~YD}_AAYs`rf}nb0DYq*uUJ8l}_KlQrnSc_ZAc%@!a_U;j923Dm3#q zLuFe&6zr&Ijzxg1;KVpUHSbwA5S{-GbDnG?eBFt8V?HiZ-T2ey&+Z>Y19vikRrHJb eNyC$Ye;eNo>>^+dTEt%f0000e1}D9kOv&K37llrH`I06xN!l8-#u{s^@ppn2+K|^w{^+s5 zV}t6ZZkh!)>2R60Of zPe5_P@Kdq0p)n=Owk}>p8^q@on*qS!%N`Rd-XNb)+6>$4{nnQao)Kkl+S?rz^MH%? zCH?fILp+nRU;C?lTCX&3>SzA}&B0m4r~duHk#xEOa&6}{+e1)%!dvG9gtG*EsL;&s zj4PY?P_T1Fb4CPY2`9!8s(H_{hUolnnDcBK;k!=s8}oIO>fWE%fBEz*3V4(gkfLAo fPYRwi{M+~jtpOf_Np8TH00000NkvXXu0mjf0jZ|y diff --git a/graphics/object_events/pics/pokemon/nidoran_f.png b/graphics/object_events/pics/pokemon/nidoran_f.png index ed77773cefb17310938b05fa33bb7ba45751c2ac..f2ba710f57457ae3c9ad6a2e5b5ce43402acba96 100644 GIT binary patch delta 349 zcmV-j0iyoA1GEE>V1GYJL_t(|obA#(YQ!)Q2HkdCsQf`wI404iAMp&@jLN1Ud zS6J9CR~3%Eq;n)vtmMr&uw8=x!tm)adRRnTwrtt5<#ur>#oqxPH<`hLUyr~zcJ=vCWPp{d$%N~*9L@W4IFpADwVlGd7ZD7UT1JAweUw23YYt}o-4Ztw2lbm;S2fV}; zgBhY5euTy4)hwNIcmm!g**!F)m8|qV;ER90aGo%-cI}E;8(m&u_ND&}q*v=irwQ)- zI=U6xwzsm=t5(slKlpmQs;uH1>7V2awUM*1BH+|=00000NkvXXu0mjfc0Q{T delta 357 zcmV-r0h<1_1H1!}V1GwRL_t(|obA%PYQr!T2H-=myXqCnk3`2TeSmPV+io(#f^6v< zbm=Puvh`I(8i#JKM2ARDkB4k6{s+US%hAOmTC!xxk|lp8b^3I-JGS_OQ#()O&Fv=Y z+p=QmxgG6SwRPT`eGtv?9$Iuf&d#`uQ-7<2bH*HkXofT80;R|1 zxZSTwGSQdQY(8Y45MxCvxL7cVPFrHmPke1)#?ApRz3jN76>x85A6c_rORfQiv7O|! zqdVX=%oxlNUGvkb!R6IV9kY7|-Urz|G^3TQs)rR^_Rl9y6Hc4TwlijJbbf`&m;N&l zU#%4#C)o4b$zIO5Y5PWYd^H+P{)$jI9m-D&_)W+ilmCO{Z2W+>=pWb=CK|^vFQ}^6 zkZ+(VoyHdnR>NmeFxbcZhJNOV_{G=bRbdszK>sA)W{R=CYpq>v00000NkvXXu0mjf DD(JH; diff --git a/graphics/object_events/pics/pokemon/nincada.png b/graphics/object_events/pics/pokemon/nincada.png index e14b9d96526adcab4cad719a1b32275465d38169..8797cb94dd4908a8024bd5a707f7070b2af38f24 100644 GIT binary patch delta 486 zcmV0V1LI+L_t(|ob8c8i`y^|h3D!+qkkF5Y5&HQxN%OVVWIgO0Wa}& zOI+)^O9{!Tq-3#uG78dqDkrvNyQ@;z(}Lg0pC#U#c>)+UYSgGvA4u8p-~29lOUQ6> zgq4H;Zvb!QWN$XvAa1>xgKNJ!5ZtU4&YbK`?<10t`STYqCx4HKX=lSeYY}++XK=AL zBn)IXpwF``%Ff&0F4lf?`m~7)7qc+emBhc+4)&(sDqK{Z0s0I~7b2$yo!S8lI!#fqf&9xzI;?lkmT-gS06e9W}cJSFRFI=t#=av(S zebsiXSNJN#nv6fAn#}^j&oFshyaerW!`NInrI(A!e~5rv<|$z(AQw{DMs#4!FD=V} zZE+E^)=)G&ZOjqf>0elPDWj+`hBCPEgPEXU8Ihe( zbCr`_09e6*LFW;#Y${^}?3{x!)PYyF7l7qp&o$R((grk}bpl~1Dy(7sL4zvb%707*qoM6N<$f&!-U{Qv*} delta 485 zcmVTy`w7k|Mr`TB~apQ z5A%Tk?*eQdG-Hz$;+nC5n|@6ogl#KfK{HsSq*M3LA5JDuh<`fVI625uLsaJ~!rTfM<)an9RF z(^|NRmQ7%9!dt@uF;$;nAp-ll|RILt14g|3+}J4_p~Uj8qozF*==vUMeBHbIKyq z?bwd+MX4pZ{+t@S0aR3C{xo}yyU(q$J#Z+_XH$JwvG5iJVK1OkTKSFGz{angbKBK_6=>IwRAhSyI$03DqTYzU;WkHK=P8v-_W|Q z$PWNqa^TQ=#Ead^H~~La;2PS%i~RxM75MMgO*8ES+R1u>Ff5Y3Ve^9qM+ka>*A~Mg b@3npdvf8uJur{_O00000NkvXXu0mjfs1)-i diff --git a/graphics/object_events/pics/pokemon/ninetales.png b/graphics/object_events/pics/pokemon/ninetales.png index 84911dba0acde5b1db6d9cc4821db2d1393c1299..7f32bc645268e3d98af0103b755c05d5c28a1c26 100644 GIT binary patch delta 616 zcmV-u0+;>21-%83V1GzSL_t(|ob8rvZrd;nhIIoTXux*p9b;5@0jcZ(nnVW>%aNWF zORTaY!2S%V&<{Vh^zu`(Q~DZTV;kCZVo+%R)Ig^`2?8oTDWMR2Y&u8+&IZillLmnL zyrL_P2BZ*-)1l(*&}aHe(*n>w8SGNa7(?Vw^@TEJofv7bD1WLd?J=j2;G`j=y(0~2 zHun+x;GzoVaZTjp@xpP(nn2sZR>JOr^nep&V>xmbIjIYFlRVPHkJ1zM=B89X37 zsubB4Tx@>5XU&=6&S2TGko&FmA}84eZ|fri=5k?S+&$X39eg%H@)}TnT`}M;xaTZ# zvT%u-2<|!AIDZXH<(-gEo&U6cWEU(pc{DJx3-+rC7Nj+w&hJJ0i(GaCfi-uon7Ifo z*?Z=6g(|!!J+h*u%c82CRt%J-O0^%^iW1p(1)3mN*^?d^UJCOW^OegBubAphkZHl@ zP<}%K_ORN50j26U{PjcXmedc-l{Z2A&kMGc|9rEqG=D)=UN9h^`GhB`*Fr0HDXrFq zcCla+{Elc%_@5;2^U$Y4I%NbrEIY%b_^ z*+UBKd11AUbLcO)*1s^=ro-C&gx(`4culfY{~$L{LDL zEfS%d^IiY+F1&o`k;oUHq?FRv_!`^LrW1og`=V4MyWXNNx1SDF@p_Q_zETE-Y6f2uE(DeJ^YgMUR)RcVhog#;%J8SNcu zNVB<**asI?Fpp~@Cyy77JJtl+4z?0@7o-QAAREh(v&czZup{3ivpg4E40i_0j)mNBtrt1TE_hoX88DX%3*+w5#_iy<36j@<^6QELcfmbp zk&}f>)I@O4$$!RaU@Gr~eCqtC^&`7rvB{%>kzKG~O|T%X`E-6S+F#_d8wjkqbH&U> zXvy9)rz=$9J?W7ZEnOB>?X+T`ELE!g$X1ldzAMlKxyqjO!0=L-&zP@VUU+jriN>N(%~GO`uhazVCl?4qsMFU0>W zc{_X2Iz#K;mx1l&r#;*8WoMHvSyVh9)^scOTV?Ays|zjJ3t#Ui&qoIH$wq<)Y-Mvn zuge}%U}Mj#ZJa}Y!L|N{!8RS%<|p(XK_M?gJ6;oAruT>K^ZA9jg zcSsbB-vHtH{2k-gM-M>S?2tPV1k*FmHBQhl|9>980XC=K6Hi+LD*ylh07*qoM6N<$ Ef(ivJ`~Uy| diff --git a/graphics/object_events/pics/pokemon/noctowl.png b/graphics/object_events/pics/pokemon/noctowl.png index 1e7fed8260d13c221d2ebfc1924070d2f969d38c..c0c07391d51b315eee6aa30003afca6907d612c0 100644 GIT binary patch delta 953 zcmV;q14jJ%2a5=hV1JfLL_t(|ob8sstK&Ej$K9=7<#xG$!|x!)LK`~IFQHbvn5D~2rRupIbCKSolBd9ZNhsc}9UX}&X~vErime`EvO zg-LNUi9c-5jj$w8>TDJdi*_%9(H{9G3IRCG?Ojx*(P`jV!C`_iF*~SJVn%Nl1YkU_-=Hb0*04a}C~%(Fl+iHhA!8n0OhG`Gr507;P_25o z!D*e&= zhXhPugMqbo$TyW>K~CZMbaX`<5EC0fHG9Tp_0#-**!3jmI%R0Ls+iDydlKx|^y+67JkXER17yJi+We*V%Uhf4ukrY9FgkjGeY zyVG)3BU|R)w$(gFc3n5eMtc6UNfkag9+C(0runz6kmI~Y+$Ed$cK$Dr6`ca?Daf)p2GD^na^h6Z0)~-zKI4IIWShT0a1uT7sn5aszEZ8#v1NUDkH(r+(lweXa zX2C(WQZL!d%xSqOkZLVn6)0xNzqz7={4!v!OCMqxh*t$jVJU-~bD8h#Kkz9@+pn+N b|BLZ2mRLnb-(hSW00000NkvXXu0mjf>Ri>@ delta 936 zcmV;Z16TZu2>J(*V1I>4L_t(|ob8seiX=A>h83)_77mmi_dN2@*(6Rbb1=w#(I#f3 zY&vLK6&xtB&F$Mb^8^F?Djh8D;V`tTB$cFLnuP<0r=;goN%dEisx>Xd_t6X(HYVlG zBz&{IHQFr!<(gSIZQ7Fv6no*DD5Qn34tG&0@9H`m?gi{g41YAOhC$jSz+Coy9#$bd zgvHL4*+Ewm^KQQ(VCO;o2wsW7vq0t|a9I^*6c!g6<}sEOq#c{oiYj`QlimSoMZ3%_ zi@gtyWkGH&@c;V?PrA{1+k1e3nWeg7DtR2 zQ?W_l?*s9#XBL<#;@#rRVP9Eu3M0CrkUD{GgFn`x*GAMB9bT3p6N->uVoH2$3 zY!RSQ1TL4$i|%kyYNEtNKu%9srvbB4CN~jtvd0=3Ly!FO%ILr6BY1qigx4ql4d;%E zt7m+-(e_W?BQvK~j;B1OBgi+21S(m%Djt7Y&ksASkl9z(dV0zVV8Xxnc(+cegu-X` z2>~1RH-D|ENqGmgl`ogrANr#)hq*EaV4gUIQNH~3a(~fi}fOx)3zBf+U_Y=5jC!oW;TcVd>;Pd|U`ucZJs@=}W+ zz4zrzao!^P(zUc83c%{;!f1EQa)Lj;Ou*q{fW-LZqDb^uDo#6zn;KD>Cu*y8E*!gV zEsga2XJ0FPiX5s3^yc_CRVZ>>BXj|0(GGz6-cV!r+}2c~Q)FdJjTUk^mjyoZ;%gs~ z$A2FN(GH5QrYM2M=z5+LFZp`L%vT>cTl!aseD%#Ch`SF0Rqw8wA?voK$*~j{XXynb z#&h0qAnHQ9X|IV(yY(I7iz>#lVQ&Pyz5hzN@w&A@SznX!8xES4Zp*G3r)pE6)>^(P zAXeLca}@{e!CbdK#2S!q3ZTMP1~=!j-XYn);ZqW~U*ER>ALBpsoH3k1O)q!=0000< KMNUMnLSTYt5W)8V diff --git a/graphics/object_events/pics/pokemon/omastar.png b/graphics/object_events/pics/pokemon/omastar.png index 113ee9ed7b9a174f11842cf58059e25f702d9645..4087c809ffc4d0c9f1fbf8b6e2eb61c66a29c005 100644 GIT binary patch delta 553 zcmV+^0@nTB1>Oaah!z9%Ab~)?qC=OaL%k*uP_EVWB#N@4k)9fVZL#jkt@>(yyW6-` z*LKag;@llq?6SHR$B&zk)4`N-*;aF|j~_QlL}|*yq7#=HBix$HHRF=XF5z*>i8TkK zCkf`RO;wu}J7+jfNi3L9Znis}l0|2xuFZ;#Fxr^9%-=SlHrws^>GHxW8=mQ96NwGM zgxO)iR9I`>WJa%l&H0K+ZEEdsW919RCG!lI4E+zPiN3U?#IEA=UaX0Zk?f3hT-dnv zXYLbX%To5#7uY`!9tvVYYmCt+HWYxtLqS4zS_{s(h(}{)Ovt;QrVvgBRX%tq*d^pf z^ApJ4Qu$yO3sA?MaF*NSo2GlGMeTU`ZJ1#j9STZSxUT1aPPJi$5G`Ym3o9KqB^H>O zfz0%FV^Rf8XSg`55H^Lw*r>R|=yoWORHsK@2p&(y%;0|(_o=x5{GEjYG&&T-gem4b zaW%ZpqT^+=-JT!zg&hx8@AGJ&?T^Y;)q`)s4?a2+BvkSg^QFUM91uKSX7bPDFK}+` zQ19YmP`|fOuG&1SxJ#mkj4k#IH`O>{s)E~CaRYxn_{#;}*~56@<1T6MzI?s&EcQ5h z*d;aK7A4z1#6Gi{=c!>;8G{0IumtlZ65%GhQTAz&00000NkvXXu0mjfXP6gS delta 553 zcmV+^0@nTB1>Oaah!z3#V1YotqC=OaL$f9kP_EVWB#N@Ek)9fVyjXYTR(&Gt&JeX20+iK2r^>LF#l%_l^I&qmX!mYVnGcKv@5>`u2tT`Ax zNicV9s@kmBIm2;EV!?!Rlkap&7M+>8HY+y5Xk+R!f7^uGY`5db^9!$Rc&3+4BsK&S zW`_k+VXbwO8ND`t=PM?)skOt6l`j~V%rjgv^gpO3`rMKdyNb_yu_ii3vNP6kVdK`H zxlf2KOWAW@VE;0BD2NHIF-9NRPyhxG1qs<{EjZ^Q9*vnXA@6#cLO2;z`QV{omyjFH zk05(X<%3x)Kpl6&S#GO0P4`ZV+VS$+FvB)F6qKrPUC*6=YQqX4TE-q1Ryu4-EHEeChBQ2Lz9onf&wg3!ED} z)Vnwv)bFiOJ8fQ6+$GUN#uj^qn`)deRl#knxPiYO{P_a!>|wm{ahJ4rU%uXX7JD2$ z>=G$KO58g!Ve5m(Z%h>^cs$=tz1#6Gi{=c!>;7fz0Ium-lZ65%GcFP;av74rlr$&M r%tqwXgg(ER(0c-AX3d+!{=@hOfS}^Dnv1E000000NkvXXu0mjfaNP*L diff --git a/graphics/object_events/pics/pokemon/phanpy.png b/graphics/object_events/pics/pokemon/phanpy.png index e0f569d2d430e2d7cfc88227c4897292b325fd2e..db5c52d6e2f071884bd1b99e853f264ce7337a7f 100644 GIT binary patch delta 338 zcmV-Y0j>U|1E~X$V1G18L_t(|obA-HZi6ro2H;ydduSga%u!_++QkFM>)jXFf)yPX9yKJB6{p_1z)Lu8ICcNVR^d_K3O;w+?+T$@Yk#P_eu&a#6?8WwY^_P2 z`5{e_I}9~@r}R}7ZnxjmcU$E@Z;A%UPxFSlz@CXSDxucKjp%0s{M2FD)PsXZQX z9b4mV!>B#16-!eT)?WnVs#ts+hAU68v%NK3g&2Iw>9PAmANSFR= k^VheSztfs=Kj}I13*C$CiLzuz5C8xG07*qoM6N<$f^X-XPXGV_ delta 333 zcmV-T0kZz71Ed3xV1F-3L_t(|obA-HZi6ro2H+dQ?4f;;$}qHx2aeg6;O0COUFgEn zrBhzblAQq-7f34%!AOBA5h8_2XRBtsjeSbeh9kNOK8*;JLtSaM_ z7bpXUM!a$UV(PHFZyJYfs_$3B6O?M%&|KtuY1^^Eov};U7Oge>15qs-+Dl$lNqd2y zhlW8jM`+4={6sSYv-I;tQiqL3VA%aL%lZ?&-)3gT(%5F>{6eO&jz+6U+QJ{tq*dN{ z*D&i2Z^Z)1`$mg^U5!v|9M+K$XMbzB5>3a6&XcX;Y{m&Bq#levwNzhK={E>|O_1_3 z|F|H#%-@c-Z7;GYgNyu)_^q8qk(ZKqY^Grn4wLZ&UL`M0j(>y0d%7(FlS(Me2 ziDdume5Ups^MAP#JZixh6ByR3m;7Qqss3lwM$9Mm@_N#l<@kK2}(-zT_@%dnnB z@4KL(%&c3s6XH=eIc{mZW~F1LY7M452}u26IW2>V+X^k)5z$Tf013Awr?vpYPB5zF zrjOT)JCCtFKqGjq1>6ZjkoipG zU4SFtd4KoUyH}r2Fd>`3u&waGQ84D_pvtn@q21r-6pCBe%StnxFFS!CHoMnQ=!c8DiT)7IvQ$hQ9gVzP28_iBYK){#9WRf8FO5j+gYnCq9a$z%6 z^q_d<1VOljk*<)cc&oX<76ZZH?UH@D!VLlh@o8Ww7OF|Cuu2Y!SHtZXHgEtwdqB`> zZhxGB2;OBSsjuvYRta_k2S?5rcXuXD3|B5ec%9SrjT4MJ&BCq2g)k>oA4Di{|J}R12n@*Mp!mOa?(XnYad&K=Ya4ESe+U zlbAD+vckQ|qBN{umL~d1edUgT7pG=#{b0FZpDxY>>h0|21p>of0!jO~?g;p{&^&x& zJP)x??_XMjcq&~Y7g7!tsqKm{3C<_<9fGs4&A$8rOZKammiz;M;0rjs)WFY;{{Swg VUbNKBw8;Pf002ovPDHLkV1h`>;V}RJ delta 995 zcmV<9104Lh2(<{1V1K|#L_t(|oV}J^isMEQfOUbiu8{XYZX;MQn`?ByNc$AVFyMI{ z8j+bh1ccW#mQN8hi;>*~25D#{`Aut#t*!p4R(rDJUD%L%F#gn1eO0C3AozcRi0l00 zg8VvvJKDCr%2EVZ`5W<5n?;eAl6Y*UVG@p$@dREaZ%vNKD1YJ*;%i(Pfu0FToWRY9 zJeZQk|0DbPau`bfHLhB{DOa90afjrtniT$#=S=M;QDE7|a}-V5rYwiSV}Z@fWK39L z-LD08l)V$4z_Q(A5=~US1ADw+90r9wE183bP!t$8>x(V?Kusbb1y0#8HjqVmJ(~^e z&%Mvoo@2gHf`4Z%m|_CMI$jp=Pi7G;5xPWy=DnH^Qwy$|`0>+EPB&=f2{w*M!(pU*jAh1_iqZ!ZF zTnsdcIUcOpGf2Lo-LKi?pEKQXn_y5pU`3u&waOQ84A^pvtn@p*=hn6pCBg%StnxFFS!C*_=~a{^!#1R;ad1PzG5aiUsq%REmW>-nLQHUXiAZ35W8)PfB@3aAz0 zrE*~RQ=T{5Rv_=7ff)Ia=9EcI#dFY1rF!!^J3IY2K9Eo5T~) z6LQG%g5{FM(oG;yT)7Ivb4mMni`NCATg^^DK)_e!Y?dJRO5k`%H!NMU)zW6D=uz?7 z34(A1BV8j^@lJDzEe4Xo+a>>egBv6W;`7LZT&gCq!YVl`UXQn9*uVk!>;XZixp4v_ zd4HD+Qs3AOtrF}<4o;jg?(R&Q7_MA`@V20vJ13ZSnx$KZ3%lNXuek;UJO8y8O6U-8 z3=kL|1;Mc?C9Vh6gJE*-)?o^P7tP6=s20pQuSbC}Oh!RCo4E#*K=Xy*BAOH4lbACZ zh6?v4OJP{QEKT&Y`ojA(?+{#sZT9UCSaMjuwd5c817E=5wFds%_yT?}UP22c Rr*i-R002ovPDHLkV1k#o;C282 diff --git a/graphics/object_events/pics/pokemon/pidgeotto.png b/graphics/object_events/pics/pokemon/pidgeotto.png index cc13676476f2d90b058343eda2a637d2d31fd5e1..8b0d68eb07e655d4b853fad77379814db49c242f 100644 GIT binary patch delta 749 zcmVL_t(|ob8oCYU3~zhP~`U=p;SDFt;$ROUX6th3Re>6-;)9 zY8<+clx-LG6UH!v*0IPL!a$ie2|B|lwk6A%k}gUY1M^5gpJo5Qp8WLedH>^o{4;^7 z)BJIRyc6sj@X=~@_pycz^X z251q+3&#L0BF%%r4Iye*?xo8%1LRwS2dm&3EYqqJ)B|e}x(1ICQBbbz9v#@Rr$yBX zuJYNN26To6iGNE(tpOHMTsj6s70njXYlrRQ9ttvT5Ng4O4jF`lK^+upL8j#@56m^q zH{~GlINh-|r?hg|G4Qhm5@9S5w@YZ*8c>|%dde1mbW#upv_T1ormJ>3a77vkk0xWUVSbk`EJ|G>pc_TFkW6U=CAu54wz_J7IRZo zSV(E=ei@|MUbEPxwr+45=pD3Ggv6E$hxIP|zHf>gQC4-ln%jf-`{H6_o=zvKWvqNV zFDV6S+Y^#ofJQp)YEAv%zQ^T{vS(bFql;ed?q>E@tTHSI1*yLVLo>#D3tjf`t$H=x z?|HH@to(l2I8l4I!yof;U<$AqT~Qu37uq)1vu%ma{G0rj0nJX$e>mzOn0%(bHqiV0 fnIWAI=4Zzrkxv796NzwU00000NkvXXu0mjf){ADr delta 734 zcmV<40wMju2C@c_V1KCTk)qtd8G;N2@?gRINa_Fis7DH+&-jf0Ca}89?>9&< z^IMPW_97#s(>M71{xghQr1hNVj_L9ZR+kvZE2KfrI2g6}Vt=}vO>5w3wohp~doMjt z@t7FX1qLUcQfPXEL=7!xkW6iC1ry7shBHWLkOGbkr7KW#_QSPw0)?6cW(Ig0FSmgK z-X@kOgKw0Yt~%xu@L2LyZHf0b`26a^KC0$j!B659}zg3gOK4H>Z)~5XT}xQA9pc-x^#@@cp5K59UY5Ujc#c2=}vC QIRF3v07*qoM6N<$g7_?3r2qf` diff --git a/graphics/object_events/pics/pokemon/pidgey.png b/graphics/object_events/pics/pokemon/pidgey.png index 446454c7b9e8874c80667a979b16de14ded04635..d298879168bba3d2ed49209b5b928d1bcc75a187 100644 GIT binary patch delta 308 zcmV-40n7f01B(NYV1E`#L_t(|obA*xYQr!T2HqEO6dg z$>`&WTLZEc?exL^#pr1ieW2b*{vv7xgQvktF4lpKWFk5XMt|ySD;Nq#{VZ7%HG)xB zJPL-(+kXFQ)AmX$EqLnRqc_#}Xq9+gt&oHStRNd=SiI5^V=d{LjBO&Y?fth#I3H?Q?17;c?9Nrtd+ z|9%0ma~klT20Fug?(6~ed3kYcEb_zYPCMrVk-l*phLLZ^cM?UT^^g$4oSQwY5TO;kt&yOMPUQ@5r25xsmoHo)pjebb`Spgoae%73{vd5}u z>a+)~wLK>dSa{OGCcO?UHU+U8%WT`E*Bf8-SL>37a4O37n)b~bGYN)Ut51?4EF5{^ z@MxSDe*7DdIV(heg=#{G9Gb{K6_L~xUfZ9aF8tfv0rZ#TuRF}oVE_OC07*qoM6N<$ Ef`H$b761SM diff --git a/graphics/object_events/pics/pokemon/pinsir.png b/graphics/object_events/pics/pokemon/pinsir.png index e61e85a80d9c1c35f2aa83e37e89ec00641a8517..dd6d97a4b02cfee3558940b5ab5320e4c3eac148 100644 GIT binary patch delta 638 zcmV-^0)hR-1=9tPV1HgoL_t(|obA;?kE0+I2XH=te5uZ@v6p)5=$CbFR+A>)_7$^f zZ{veZ=YI{L#q#ZU2UxA*eE&5- z=3~DPv2EUjt3=-EAii~AI&^4K;dv^MrU?MBb6RYgV3sBN{yERLzHl-fj(N3hdF-^IeG}W(9ga1y zW#HPM7t^CXUaD;er*{*Wgk;;KJsd&+H)P-Rn3=%rv}3|e9wrD=s(-jS@lE)bzW=7G9S2ijzhe>r>sAGPzu#(rpAhf3#v$-tSKB5OZl<7{ zGSBrLzTno~q1txG>k^;9Ycw05_O4!X256&9c)l zvc9V+;j;q;v0K%(gGkmt;tM?Gc&T?D3WNzAcMWZZ?|&O*9ou~-uME1UE3kH-1n~nO z7*jAmO?qY4W5Gu7+63}yJYN;DZss{UGw7qmK3$q#D=worid5AObKDB+x|jk{CnBF0 z&DtICyk~MTMcUnL9VnA$6!A#d{{icEyb$QgLX0HZIrVG?2@0400xht9HdQr4L=KBp zAIzsU40mEKp;XU#8%KlDoyoLS7|lNm^VEe*7WI*jf!1R|oP9>BRDg+fJou3;0()L^ zM?L5=aSuepQ-DZaAadhyK8uujHW#Q1&R6Hw;6v}@L zS=$F@eTOD9D~|=TtRfvu)quSd*LwF0C%1 zhdExJd$e9sNR=>D?@|f{><#z_JQ|Z3;FV^ zlICP>(4YSPn}1U~7Gq$yV-O_UMS-&#^JlHI9Mo6IoA-7M%`w-AOx}BJXyx z546>*D0E@s|3LJ3LHNmHE-c46T{#Sr9MAs+49RXXx>_=`rrE0Z*5ewAQd_#a*R+j` z-ki>4G--~D>1Pq18f`VJ&w2=q9t!g0E2DFQtLU=#vzi5V`mPiGpzl?BAk5E#8B-wZ z;CwoZTzIw==nGC)r`GV(?6SW#1&*JV0dudv8OH4Xz%K;+x9u0GCa|^%$8Tu>0000< KMNUMnLSTYj%sQt4 diff --git a/graphics/object_events/pics/pokemon/poliwag.png b/graphics/object_events/pics/pokemon/poliwag.png index 3dc57d2eb67c218b5fbce960bb117cd7b95c8edf..354ee262bc09ddfa3cccff66478df077e0cfa86d 100644 GIT binary patch delta 349 zcmV-j0iyn^1GEE>V1GYJL_t(|obA*xPlPZO2k;Kg_B(XFOZ^gV#t-P??s5Zh!}Jp7 zm)_!R2%85!h;f5ZOEm3!5an`Am+-b9(Eq=XP$AY?XPtG{xu9`wndOWffLmhO%^3VN z=Ua3q7!K!K&UkSF{upy^Qn&@k;yXZ|7x zu{Jq(igAH?y;d)2z}UD?SwY#d0(s{HT|P3B2i(V-YyNZD*3|tzrS>~Ob~KFb&n|~F v03AQg=I%>G!N!GuAYS?tr`(^vaIy0ZNDPk;Zd+c(00000NkvXXu0mjf#k{6= delta 340 zcmV-a0jvJB1FHj&V1G7AL_t(|obA-HZi6ro2H+dI1=%mvt?C1I>E5Nv(2dIB0Zz`+ zx$@dT4~A|aT%%U@ol#2^rbyiO0seo3gaNkMW}9ucxuWrYo%Mn}qF-Y@EEvOdmm7vN zjK|BZ7reTFeoRi96&8q9dZ)RO_&aN~4Yzul7T^dWoA;LAQ`^);geWj zI^k5Pn+l-dfte{3SYkHNFhhU)ik4#DuTvq6d!k(%pP#!ninvQ>xNlx+qSiR+lF|b6 zc3<;=+;k{KK~3F@0(}<(y~|AO0sr~#yZ>DGE%$gRxx)@f91Xd{+2x4`ke8>~(tS+? mVto7u(xpFf&i&;JS3BQ^Es41&A~*s70000o+f>^K*ZWsgZ4~wZ!k)%`zq`}92Ym-s+kXJ?y8uD8g?x>_Iut^6 za?|3ZfTO`o@A4^tS-&o|KJNk2?^(DNo6z)d!MN^UQL7 zpyHN*`cBH`zTI}64(*cUOa_sbfqojO=9#lO+LIGiV95q~0-F#DpEBUmNmW>!ctD-P z6%43bSYW-7;eU{Pa5MR7W0R*|$Uw_a4}6}dUdRP_L^-%>0UotNM=ikS`n&o5Fc@#* zv=QUfkqlh3Qy^3G)Y)9T!}Eyc25NyfZ~Um=z$wsc&6nfzUsGBIibTfLJaa4?(S%sJ zKoo5oVczKIjh1gSjhQHoab)f|%6ah&d874#k0z1Er#xqm#wd>C+@tBzSTv6L6V8h7 txHT7-RLHy15FwlEukV`U_*Ucp)-QdNpO>&3-H8AI002ovPDHLkV1jJ)+9&`3 delta 440 zcmV;p0Z0Cs1dardV1JoOL_t(|obA-HZo)7S2H+bQj4IhL#lX_^l^7TfRY1m|zC_0| z5MH7~s>O2tp(^NsN;~3>_=wCcZoP&j}EKw%Tf|t+pO6DeR`Q+WE8j3as97 zz7ox5C(hS#vuPL|Txd3g6U1<0@iZ9kZJywC1kI+1!5C3ATYo9A_-jZoG)Jx*=%9}{ zB%;xnmBj+&XQH631A{!!%nKKDIKY`Eux1L+H~=8{sROQ^RfE-uT{5a%flIu~0_PQG zGx(6b?5E9oGJp3*2RcE1;LAMsMlWD@S$ePWf9n^mESKjtzN9_?0000NT~Lq} zXwHdUqy*u@S0&or2e7;dg$`^#!_9t-y)oF)m5~^O#BXNjKeMwd>^L{O+0AZ-Rut{* z)*SC<$__2;7P$~s$`z)pg&ilOY=3CxoN{=on(t-DO{oxjr+<;59z68Wz_47|zJX;z zQHb==#4Z)EoTa>xwKXv~IHh?DGYUPWj5qPW3s8~r7LL_OV&1^H5yYX_*~u8Jw`O|5 zaSt572s&zvBQFy&WIO~ov)2K&1pj8((1(xe%davvjDl4`+`_m1>%0$R#R4^U%k?@T zXXsD`T=E&?9Dk3<@OY>dUgmVgXjYD_#+gjWVBb6*DnV|TsTPi8(9i%QT`lpw*N1zv z7g(Ui8K*IkpWiCsNbU`DRbVw9;)ce$fhS}#@svXNXAUi~01HUwG%*ESGE0fHexedq z<9lQ!*qP4E(ATDcyC0g9=}ZfDqF!IDyP?sSJXm)VbAJbpWGH_2o}bBX|0okWlTXNc z1ilxj3Sw;|mj-`X2GO{JK^Rw&f~0000J#|xZ`LGvsF<7rtIK~KWYvw5ABm4IF* zvk7}v48ojt>Fx&zX$g4KB+szbAC>e*<1)tuD+>8lb^WWl(j)+PyW8FFMpjj~*>5>M z%#7zZ*sn?{os=ug_zeaq7(e9QTrz=IQ}d$?e#WFcKqq58ynk5U!MI%8p@UUIRmm*x zVxLJ|&NI=;#=00Cg0b=jbA~--Ty*ij3ox098@$&e*^3S?tso7(%}{V$@67aq_kDEy z0&=vNMqVcr#PksGnY|C0BltJthCY4Pe{q$mVG?W#(iVcj`+R_7r2;MX>-8p~hj>;8_;Bz-nBdnz3o%x!&L;&*zqaZF3-t^MhKRxCp&_ZRF>8a5Z8j<`FlDUx%_Q1s^7NQadloKNm(x- zrV*5((oKt+c#BanmSGGohp`(Ds|r5>jR1ZOs#EC1(IPjl98DZgifp3S9ZKcet&`%! ilqV1N5bL_t(|ob8mcZrd;rhPiMGK)p*2T4Gpv1px#X5>cMci!`{4 z7HQ~12wG~y79wa#QAt3NC55e0ZSCCAklX;B3Ljt?pN{-~pDB>BYhCMFe_bjh$kjjI z&ttkkuRa*yY;b*yJ3{UDFHLkwplKqH-SzH7>Z5|h>8Dh8Hh;1EU|!HRaoSeX%wxx= zoQW<8>M}`-8Rl_Levl2M0kxl`P|YwHImbHB$pkt}=!3>?@T+MS;LCtbv&mIEek+Ih zF-1sUMp)pmX9I(2=0<@XNF7i15A*PJ65#WSriGqYNq{--#))0@FJjAb$$`Vx}SC1-fAKEd)epdGiVN z;fKURZFzzE%-gKw0^LU=XXv)Ld3byYfe0u-rzJhT34e6Iii002ovPDHLkV1fpb2Uh?9 delta 515 zcmV+e0{s2(1la_TV1MLEL_t(|ob8mcZrd;rhHts0f~i;I!i7YXr}H8W?xIB;`U+aK z)QHVRONvTbvLvt-s;!l~GbA@ar@{wF!pGzNzm6mbaF2W3tN^uwWp>_l)7J>bi;L2zGb$iBjfQHO z(V3|$bJ^KHjC$S)^#q#(H4vQE4vxzlqOJ*8Swk7zb~~?A0J@~ttP`ylIrh?G2Bz`@ zWpu^2c}@q434coNUp91IXCNF zxSTcAu|BdTc&v|XPnvwk_%%PVJsRU{pAAb48H@uzhLMS5miisbH)!Z!7#Ff6}N169WZRBFZvxnTVP6cdcR|4Q=krhKWOjhv7?r2DN-$bB?%MQ)4a z;qk#y!HG$IQfHbOP7E}jP4-N$qgRu$>$4k9Kd9i(;T&lF`8v-|nQFqX=c9##YUqqU zaKUcq8OJ;mJd3=VHk3-FJ@5*Uf*@i&pH5;U9~j~Ph<9uxCf=I&u73ak002ovPDHLk FV1hOt_|*Ua diff --git a/graphics/object_events/pics/pokemon/porygon2.png b/graphics/object_events/pics/pokemon/porygon2.png index 3860d95fc0be59e739dcd05f8dcdf6936f55a2bf..77383576b8d3237add1b465be26b70d43b0ff3e8 100644 GIT binary patch delta 401 zcmV;C0dD?^1dRlcU;&tsVJd&p3{3}wsD~b*S0RHHp;mHD)R1ROz|eN%SC&ul`+nO1 zAycMInKGpdz%c(-0LujoZ~!Z3xzD2lwplLj>s}5v+%ft*DzMD?0Jjt)ozJ5JqJeXW zdwIOzYsUHdqn|a{#67H@pLlo+-F|#-a|{8(c|U82bzcEZlJqW|b;5ruD~ zQH~4kLqvs55fu@d_X~dmE8M=+F7MF>%6yxasGw5YR3UD10DR(R5AcR>AO(nO%*J3Q zjof7o8YuH!h6`zC%nqL@H^#YQE5s+JG7%bIIjfCfsL>Y?bN->i1I2~pJrSP-vvAo@ vTgK{v1zsUxLO9E*F$eOeF=l+t|KuD0)d5KrC~|QC0000ss%zZJlG1tT25##!$3q=4<#tH)-LgB^E_K2HiPb3Vcy#YpG#q=0DP9O6Nq zE@&2HZU z-V*ByudHgZJt5(h>Ci3aL2)=`cN z?L$O`Z5fpjn)eF>E8Ks-H7*~}2C96YR;Zv>`&1!ra{zqe_5kpKZy*JT8qCIECao;8 z77bK+k>Ns`8B^dB<;FNyY=!v5R3<{>D`$-{3^n=!VlF>ac%->B?9$ svcM}OObBN=HReeEG{#J?`Ja3PsNMgfPC`-%00000NkvXXu0jG}g54Ln`2YX_ diff --git a/graphics/object_events/pics/pokemon/primeape.png b/graphics/object_events/pics/pokemon/primeape.png index 25c8ed78ed97fa617bd66565930f478afdf45a92..0ec19a2a05f092cf454fe94de9fea3c7003c4fe0 100644 GIT binary patch delta 653 zcmV;80&@M`1>psdV1H~$L_t(|ob8i8Yui8=hi}kie~`2U`WZAFR7QiQEcqM(Noz6a zR6!>P>msOTXA3Wu@gipk8Qv?4zPYc-<)O`Bh6VQ2Gtd#W4nexQJ<1&BgZU-a-=*jHzzp|qSqrM zE<^_a_js6uc}+t4C5s%~8OZUb|c!a`3>8@=NZ_l8X%PX=UGvSx!6l94#pfdKT` zR$?8wk7CAFnCBJ7>b(RMH=2gusU-e21?b2H!) zm1T42&wsgB0b}ej#VwioAc2VW>m)qOlwwTzSzbzGJ0315xx#`>4CtOfn21RrAcS;( zc!G~{)5KoiuxF%=Tc^Du7tCj-Q>GoOpG)TTL((OakPFGNZ-5E&2G)O`5X|aGIB&k! nr)~Gn!G-lI^5l&FXZ;10pcvBl&>!sp0000FUZV1H;yL_t(|ob8i8i`y_5hcy_kO`xC2gP;x`Jl%4i<3RD&Az-Lqwk^*2_0$sJsvP{=#w(QBUHtJe+yx4PA>{#8W~Ud8I* zO^&`61-ydQ!8(3}VNxK3Vf<0nzJOkFgfjT-m8$ z>e&ktoyWJ}5=X>5pKs4IOtIm0B?sM=qi45L@ zKmsz2Cr`m9Q`qv&QUrB)w%DD6#?Dm2CK+gmk2yO&|dMdZ(~X z{6{fkC(QGT5dB^vMjFG|2GWsZJ@Oh?gzImLHJ(i%052u7fi7UiTKF67cI!Wcj9PG* zm>MDJaZwZ)3)gQQGZP3F_xs|P4s^mfYvC8XtABiEt$z_n!VE8cV9T(sl5#UJr;cqP zSUf%aysKz}-Oe?C;t+e*!f)(l-<6HD0VA<&1C@|i;q)0hwt-;(+}){l;?DIIFNsJz zE8z-%zkk4G>?Z6SrzTJptF@4L!JHR+^?Ha{1+3OSl%9DP)zwpjgTJ<8?q?t+F3aZF zpL4GR#(y+mMp`=cK?X7JH(7j<86$*=i@a3Ec068CaYZDZ7_b9{Fq4x&LI~O6_=FhK zrb&ao<-o`qzfN~WA$iE$q)a>3KbJh{$F$2Pp^%Ex&;T5L;}q#TI`j zdxu4}u1m=)^ro3^w=jAsdIpT?c2~bxKE1f%*ycT4HjG(+6@P5=mT#-to!|3zxV{;) z7Tv%Lrk0JW>s_0-bI`akYg_Nmv|wr+TCEftVrqwxb%l$MuaGr{QA$1Z@fQXkV!p?U zp5%kS^AcA-!)eMHue5k+A6w4BV#fY{+2`Ti`_+<-EMwkTm?q@d=K$?KPgTVSNAq00{s|MNUMnLSTZI^2(wB delta 396 zcmV;70dxN51L6aaV1I2%L_t(|obA=YYQr!L08qhlH)ew#_X`U$OzZ2q4gR8q4&0Pkw9&2vKc{X<# znr&Na-f+~NyWODGTJ?ey?shl7SiC&g3Hq|9%Z9n=uY!Hq;(u+E2lr97rS;uhGz?Q( zFt_Mr+aCI|t;NpHMVt2Ec){E>v{uSwh`B9A(G4wzcPyGhODP}6_zQ!NF+Wm8&+@_F zc|ogR@#IRTD?MF$jxCp9c8hTIUbB2~%zsL6OzeMUSkx+?)+rV^UCat98rrFB;kDw2 zDmN8GqmkbtvVUR?4IK)_^1(XZ1Az+p%mixWGZQ~PNIvGbNhKSCJu84}8j=Qs;_Kqn;O68?uJ~IL?Gm>aB0ZoL2w<002ovP6b4+LSTZ*q`tBM diff --git a/graphics/object_events/pics/pokemon/qwilfish.png b/graphics/object_events/pics/pokemon/qwilfish.png index d7695a5e54d925c37105ddaed98db39f9b0dc7c0..277b6e12132f8b2f69e6461d2961dc9dcf7ea831 100644 GIT binary patch delta 495 zcmVYxp5L(&vAt>>6QZW1ElGfRz0iftKbkvn#+BQ^<@*8w-?p~q=i#h6bE8a>S* zHY1@8Z0{yQX5tvIsxc)K8!S~ZCd6r7(E_&Rek9Ukj&<2Ia@-h$LG?-;3N8@~+Q4>J z8aJ)Saf#RzGJjDjq0YKhHZ2lH-~3#6;@yPNq0ziNTq~K8{_Qfcc;`#7JnU4F4M*yf(bmcQABFn zsj)$j3*I0!7DLnXdXWKZpOER4q4Z`cp-tw*?l`uK+$VHN3+1h3!e!g#RBsDfz0Dx^ zBjF7~KTd?rBr;OhQ^_W_*w|)G$jiRt1wxyrk(h)P_3bd2bz>|>J6nAzcpz$cgV0s$ zJ&XzGEz!`J!hhO=yPA&EQlc0hh_2h+r9f=7ennO%T)5>}W9R8;9}Cut=Xq&>r|Zu| z_YeCeBQ`*$+CkOpkV9YHeQ&L`^?oUMv6_y>Qqbh*Z+GYJ^3Y?ug4SoS2HaP_?teS( z(2YbhvzHYm{rpNorwmn=Wi>kvtE{d!e>uB)CkHOy(|kc_T0Y0000)z^o^qAmuPAQpHS8^XfY%; z8nz7DoTDLQj-uk=i!K1hB|@XE-6D_Q$s0n{8hRW&Axa4MQ;M2{*ced008#Uvd}iDa zjmqi_uh59Z;(w(|Ma|2pHmD$KR)Fd>L(ur43WC%8)>Ip=jiTbf=r^7`hO)k<5gZn| z+lKGJ8RmA|16~8Is2EBTg7pnTH$(AU?tO^u@ zf4}k_iKO5%x^HnK_>9p2XQmA`D?>Pn1`|B4^nAto6@NB@@bUI1p2-Qpw*_E=&6a=z z=D|!GLc#VV6){I*3_NZG5BW2m|B{W(TLEqaJ6lBXcr&haV^hHsWB7p;I4w&3(mfV} z;VWBVWw4yKSO|^@m#lPS8`dXjpB%!ZG+hYx8Ro1FxZrR6(0{zsB`p_6!PcPWC5NSH zY*;i*jejB7%}AI!20OYbQd1EZtUverA4B~-$lDBHLXxzYo5l_VXZ9pgv1%EvBSeqnQ6JA#lg=3f7_WHRk9%pa1q^!7XfyfB}9Vdy_?r&@F6 fQ$N#5{I~HB11pH00000NkvXXu0mjf(fLxP delta 695 zcmV;o0!aOh28#xeV1JfLL_t(|ob8pri`y_1$KP0RqrWAfELpOghMEiccU(9qHyqTE zlI3owiSgeMXyFnJM}`au6`r%C7%tE=5&9cWmaHF^6EYX>Ez0Lv`hN4|CmG-)KH?)} za5bRvJnOMZcldg+(j7XC3U}!8^-xpo0-u$W@$c|;16t2z#eXH1zf|%pi{RdVNe=Qw zBltrK&WwS_*9|z8WE3Um&ryT$R^<81)-LcE(Nmt=f;tSGNqwWJ_&J(d!AG363|fq6 zg@-MJHs^TAxue){@KqOp;sWE*)^3rdpko_yxQ z508rS0Lo)Of3xI}QCU+ZeawNY$1F#5Hph@q;lZUl#A z?xyBjxWK}0dn9YniVY)0Qn2b{+#kw697K1y%knQ1p*NVAHZ-i_*vF$InLwkcxhYTz z{`)3&BvOLQ=&r@J;1j_El9@Kt+!&%!G?gOh#qc!k(rthd|v>UY_dQ@d7A+xG)Z@J)7XLJ%$_7+P|?g@sC!l< zG&Adk;Lm%A6O#asgCwP5{b|u=dy;xFPn_k@n^j4&whU+<$J6XGi|O(<)3FlFtReLF zRgyY-y?tDzt^sgyJv-Mgs;_HD5OL1k>z@_8{V;|3OS6{VK_tKn^U0Tn{?m4&9002ovPDHLkV1nY4Sls{s diff --git a/graphics/object_events/pics/pokemon/raikou.png b/graphics/object_events/pics/pokemon/raikou.png index f92b69b416b23ee9141fbe1834fb02f36b3a5c92..22315887b5b1f7929da5ac9484af2cee73dc7f65 100644 GIT binary patch delta 847 zcmV-V1F-y`2cid%V1F%1L_t(|oZZzwZ<|0A0PtHfcrhOad25re5Xth^nvZezP)v#khps=n@^u?H7pPAAeNMkHIe+rkb3>9mS{!%%BfCyHVP}76 zO~8e1VSD`+*fqK(Vnd%CfLen|9CFCmR#3YXGR2 zhu>A;T2tj6?m9vT?;Tjuv!$hT?caPY|rdj7S#zbo) z_$1il@%GlVBGuiLeZhmlWi~c`=spjkux}7GiPqDERZp>r1#jhR#<0pVD@(X1ulvRl zARrQp&OF9M>uKPJ(b2@Xd({|o!2Pn0_gc?V2!Ef=&c|6ASI=fUze55?b8g<5zhrBe zW8zoWz%VUhEIJZnhMxCcnil8tK?8G%?lu4~=lKlpOOxNV#yP}hf7fLESq=*}4Vzr& zMbq%M`~CDhA&Zc~0K6KHW}nIyFrW38TO7$@!REQi_3tm`uwe6C4;y65W~`A}!x7n{ zFGwJP3=1~TO|A>Py6aJcrG(*s;ObJVT680R2-H0p#IWF~c;7>V=7r1nK^7m4mqq@` Z_zmLFXDXAVuT1~|002ovPDHLkV1i8DqS62W delta 844 zcmV-S1GD_12cHL!V1Ft}L_t(|oZZ#EZrd;r0AMZ|yoe7Ycx#ha2w-?it;e7}xj=_X zKoNV3JhXlx#hE%3h<<<|n?({Z1j#_8>q)jKi4D^sQ+t2`eP`;9qD-2Q|0G76^_zZo z+_A-*es7G}hOOT);R#RP^50^^nBQL%-Slx6#Ki2s#b|!V{C|95G@;RMH)x>wlsp<; zur0XxT$)U*G!A+1UfoUj?%L$S^NZESl_t|PI#!_|CO0u!fi!vRx^CgF)+U$X(e=tu zntUplvz5vI?PKv0bx))_jj`h@Oiac#O9*9bzBYJN?sq}jy%Wt=_-h5=g^|H^OHQ`^ z2AVI*7$C~j@PCU69V%O)pEFi`j|?URWN>uzrF!N+43*%}y%Wt=2#m3185vA~ivYZB z;gLl1Ij~%XA8E2!vISc%6N4$QIK&%&1(r4Rxgil83v$sF(3~^KSt#v-V64F zCPQ1NM}FWOYl>aF1e!^4=ds0CU%qaNbAj@>+2rgqk$(f0FpMvw0_d(;E z)&zW574EisN4|%N)>H_9`-0(H^{8edPYpg)RrT^wHPB2Kg_MPRT()bzIJ%f(HD zY;j)|ULuF4&4~12kH710;{IGvH=RS0h;5-7%wda()|CMJCa6T=x)qf}C(RR-F~NsQ zXuJ1ylYeG0%D6j9ns4B2oXdD0WZc2MBsJ5f1PuYV1})nISocMVKPVBVnQ|IqqBW&o zL~wt&ytJK2x0cZ{jWGdSFXwP=^f-m^*?(3(jMKP$w%hq72^{Q+ePut%)-b`u zlWIV1htR1ap=0!<^UQWQpY$5oGqhR&T$ITe&r6$MsYN@CW4k+RGX5<41?z@&PI+24 zyj0&?&4e66dIRuiJlI_-o5Ez=9d2&FZlKX7@fRZi82p8|DFdeJX9DBkrjpuXWWzL&*I`e%`UGJXS| WLq`rlBCs|90000a1g->-V1KzuL_t(|ob8jpYQr!P#GmK<39*xf^n`OO{Dw8__nxmGEwF*0Vu)5_NGNWe+1WBh9x z)Og4@4A{qBOhH>3tb762BVBNk?qnfUZwG3`$fFjuZEB`x8QH}LBFYFf18 z%tYf87QI2pYJcIcJ<1!{mx_=hn%64G!als&y+sy+tmjE O0000pN delta 465 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 Y08(~Zw&iBtJpcdz07*qoM6N<$g83FlJOBUy diff --git a/graphics/object_events/pics/pokemon/roselia.png b/graphics/object_events/pics/pokemon/roselia.png index 5a2ff3d9e8ed5b145f4c122d117197cb5e46469c..75bec8621410ce0ccdf4186fba4a516701ee3e70 100644 GIT binary patch delta 359 zcmV-t0hs=^1HJ>0V1G$TL_t(|obA*xYK1Tu2k%NS1HlHqU(3#G z^qW3O=Cj>YI(N>0wGLr7w_N_NfqD6GeKF5|OUr^kn@<}j=rF+Vkrn^|002ovPDHLk FV1oMztRVmZ delta 350 zcmV-k0ipiB1GNK?V1GbKL_t(|obA*xYK1Tu2k75l!05Y zVG}+g8h+RS7F$t=P0(ULwucS0LTie!Aw?f{+!T8>I&3ih`hQj*_lQ+Du&_a3gB^>w zLX;6}#6DueMA0;o*?_4Q(ueVY0g49Ya=^yfjm)*wv3*Z2nG1;u*cZY}y*#CB6Q#I> zq@1kTHMQ3GzA{s{UHc?SHJQbLwS8ggk3~AU`>v^T^D|-J12&#Bw$3hJ>e`tSJ}yjNxOn3e<9CY%g!(oi09PW+BJ339>` wyXL=I2cg$C+ut>?D4(ux=J{`FTkvP|3H58;CexGw^Z)<=07*qoM6N<$f(13J+yDRo diff --git a/graphics/object_events/pics/pokemon/sandshrew.png b/graphics/object_events/pics/pokemon/sandshrew.png index 2241274b7f14dbd94806429f6b8d15fb5e3ee354..ef3c30dc26bc6120bb8274bd0c761794ee878a70 100644 GIT binary patch delta 383 zcmV-_0f7F~1J(nOV1HprL_t(|obA-HPQx$|2H=}IHZOH%Y!+W96fe-B19>Zkg4&%7 zOe_pMgNJxQC}fBkTB+u!kg#1{7FdvSQ$9QX9Xn0{rkZN1siyj~ns@e>&hs)ms_cln z78l)!`TivF%&kVXu(FYjvcaLMdXPOQL?kQwiUTi3tPphxqJMctMY@tbr?0ZIc|}-* zXdb{%lmz4+Uty~iE^k0I6cq=$UiK+acB?8r6(Aal#S>k&y=d?}p#jmJUK}Ya8es3R z+Q}|Xd)~`#x{cRXG;hg)9+NG~?DP~`}wQ0P17wuJ9qBf!d!kcR2Pc!o{ zJcs+Tlzj@64R~;P?XZdxGkdddc0PK-+{)9SWdp1`tz5Jz>uuuV`mT9MULt!L+oLDh z05eW==BH)0CGwHO$Ev=K0@myhjSpdCk_p&xKcBn$nEYT@`#SsKLJ+RMTl%y=^l5*Q d`MlxZ)+c18B-Y<;GbR84002ovPDHLkV1ia+w}}7% delta 380 zcmV-?0fYY51JeVLV1HgoL_t(|obA-HPQx$|2H=}IFf=c9W^5K;CuA?sp#ym(CWZ=? zr(j{=89c-bLcv4K(4pq2kg#1{7FdvSQ$9QX9Xn0{=9+7+x#s$_S`O})uJbB;GH${{ zkE>zAe1DO6=3b*(IoZfY+2B!`0J4{ah~#8nbKvEK6{2oIG=I;iNE_Kp`YI=zSA-pi z<^lXfML_N874}-;`W8e(V>r+U*{49+y)t|%Kr}R~C%Wo`Xox(a1<{dSJSis{;Na0b z%5F}39%RF?i`t3iEeX^VTU6QWF+X>;;ker)*$Hb4QN4?fs%=qQ(E#a9_4%h+c^se9 zL)*$e1e-Ld$=ZVp}b!-XVVf479PKZUZtseIn> aZ|f6Fk{kSfaNHpP0000lqV1N5bL_t(|obA=YirX*{08stF>hI>VMLHT9Xue}9^cq+Sy(P30 z;$sgR>Tl>p7Z({_WP*(58#+meC2Olv8hXq4k|&%QX(Zc1+~XeixX0fH3F&Te$yfHy zyIafy<`E!pb;}ll*XEcSO^h{(sX@?l@rIx0Wgv(sDvIh?;wi z17f6_Jxl>{^4F53dCR!x7Ul^Qe!z2daJ|1Y_jKCe?xWWgdoapaFlhoy2kah^yipYk zVa89`ZqlRUe}DP=wV;B_r7I5Gw_o=$^{h1ip>1%t&Q6Iwdp<>itkue9$8>4gJU8!5 z+V#>xOh~Ks)TRV`cG#yCfjOV-s-K%Ca#5o*$IK#p4ivJ46S7Y@&yf2O{PH;ni)WR{ zVuW<;i2647Y2;Ir5}pepj;FLDrC&OwtG*nZDce-hV}ES;EuB<7_z%$L>e= zvMbC9H!Y8JbGFNS=A;+ES&mK7zv dp7ei-pA@eq6?M~d;oblM002ovPDHLkV1gYN4&49% delta 538 zcmV+#0_FYi1n&fpV1N2aL_t(|obA=IiW@Ny0MMxe*56HYLF#iwzT*f4QXL$Dkj6(c z#v=8Z>^G!Qvq6g*Ek?`EH)QN!ORI}QIFruf#!uKY(n#6`xW+ZEagBcs1{E%G&1a4w zhD$619NJbP8Vvkm%Lp=tww1*cjs1(A!J%zXQKNyjXL7ykw|}8!c3x{YGz}>_9GF{H znmld$t!WuGdY9)^8`RB=+O-X_-#&dO7n*jG65CemBooHA=Yjg(dTtn$mxOwNmU}}3 z(abGJoD$I#PbF*1mPyY&o+nUwMTh9{^!wV<)9IcbKStAVM5mocmnX1vqV9$`I^8gU z3!lh-$X6%+_J5C4L5;_cX*jLleA~>qXSL-I7U;7oPKi1Ae2Rd*H`*7+bZG?-uyT3V zYXeNguhe97f{i$B@`}(MPIl7|a&@GrGll2EkiH~NMZ$^1dpgfh`jO)D9;C%xW%e{< zK6cE#ExjM*)Z~PRf<)s!uSlDxPMfBW2WKia6?(F}!hho!Xl5k?vgY>+M`x8T7tLIF7S4Fn2&i_@%07*qoM6N<$f_8}rCIA2c diff --git a/graphics/object_events/pics/pokemon/seadra.png b/graphics/object_events/pics/pokemon/seadra.png index 56532feef002b70a09aec27c5b49ef8b35adcb7a..67f566540aaf0ed36502d803c777699a191511cb 100644 GIT binary patch delta 633 zcmV-<0*3v?1u~k%u0~Z zm3inVKzdi=Ue&733g%p)1`5OiKQ;xR#crLs>$kNOE}rU=s|`R+9k&GzH5(8@cI(VZ ztFAXX&Sc5#03bGyw$v|}RmRq2S(Vtr&@c^k$y^T&4J$DffEb2WVB}9ih;NEs@3Fyy zlff_&S!Cv*mVZA0z3*1}rk@T%9N{=F`UW3`3zknRP~Mh?I6?0l%w(pQpF#gjRuTCIc84qhQGK zVDe+1aq|kkRu-;tBp6suBeGzur!7PSr@+r=mPO^A^?%u(26h-HhNf1C(Q)${SVuuJ z0Ght7$$)*ZOYImtUP0M7)RAw|LW8YRmnP6DTrHUnQG@)lH^vORCLX_KJmQc9H@7&sZA z&_J(sJ8})J0{IgflWr@YwzJBJ`8(+Y^E^XqEqRixB;B|ClGZt7m-7l6P`O`*AZN@h zJz>*Tz_`@J*>(Fj0j|xv>-1p$|6ms*V1ABo8Z6frf|TIr35$X^@zM3q`1kk&JduNN TCoM{=00000NkvXXu0mjf3m+{# delta 624 zcmV-$0+0R91;quBV1H0aL_t(|ob8pdj@%#+hAAR<$5W(E!)mK&i+DtJ$1_-3G*!$) z<{3`g-3rBsZh3|btTEVUE|D(fPO;KwX6FAHY?iS{JmP);U32a$dJxpy*;SVshn1A=~tS7}<%$x)Xw#~7h z02zFXC)KOIDp+%e8YmDOeBTs+7N>pYemeG2_x}EkvTCt|*su(B%Us8XhP9XqK*XUn82Pgh;=7{Pdv0*&Vla(F zHko{d^YUCk*p4&Wy7l4pacrW=;*D8aSOAeEUk4h23S|x!>@^c|NDx znc19f(ZN}RUknV1E5S4r+LPI5bcRT2KNs+uiu|&?RZr*?_;E3Si7^YNoB*ai_7#t> z5PId{Esq2f%Vk6kj0Zvd26zG=IH9%#O#`#5xO-0nqeqEe713 zeQC$o@CM4|q0Vfxg%PhxUB;YGf|0R&cuFfUvKRnjy$IePvI{_1v&wpbKZP6Ti~MLJ zFM@0g@l0;TKw@9DqwC|1PN_)Z82OTsUqM|Gz@^(WoRA9 zFEE;NTWN)|on1z(-^q}e*BM%CS?#%#bl>tzS?5q)&O2;C)qWX*TrqR>ge_MA<5Ck> z*X`c~xHccI(}VT@gWHUNg*CowuwCB>QbJfKYzp4RXV)L`@9_twE_M8{+@{z70000< KMNUMnLSTaSfhooS diff --git a/graphics/object_events/pics/pokemon/seaking.png b/graphics/object_events/pics/pokemon/seaking.png index 27a45b6b4cfd989d62cb910b3c456f1155e56a78..bb97b08d71735fe43fc2b68e1694e38062505701 100644 GIT binary patch delta 406 zcmV;H0crlr2g(PKV1HFfL_t(|ob8rPirhF9$Gxa!BY4Izgn+<8kWKIzVqqAD3_ixJ zvT6pr=-@j9W|Lzy4D>>cX_|p7s^~LF!lW0~=nV5LJ*mr1SIA~y7SWGR2@qJBI z6yn!mP$^<>oJ7Wi&|&xWLuH5I(l|i^#47H`Bf+(3@LIWes(K){oZh9fTMTy358{SD za`!ki=t#3-N-6W+Sv~1%hpiERT}(_xpWD(6mkzo!Ts&RA!LBp;_zrAN-XHAE)nPv* zhrVGv$S)2DR_C_d@NzUbAu>fiLG=0KA0I|@j%|2CnaBbg4nCD@i>_W_;lDhXv&`aN z*PP*~y8c42+Yg5AC(4Sc*5(|4OI!RozBB#>w4^!T0RfnkZ~|9<1=ISD z3`*jEqCr2qPL6*{HOI5Z$yp(bZYGbv?yq0#0X?o`(lXO?=j4~y+8p&S(IB29#P>B- zQHWoML8XYjaS|C5LWkYg50xE;OXCCy5UaQ!j|A7E!E5E>sp^5)a(b7_ZZX(BKZqOt z$lc@6pd-zSDW%MNXZ5779kxb)bTKg%eQrxPTsr8^aPf5c2D{GW<2$f9d4I4sSBL$O z9QuawAip>qSe@E(%gfQ=gvb>61kvY@e|#9tIkw>mWg-h~IQUeqExLMzh5zzk&N7R8 zU2}$`>iP@8Za)~dpC~J)TAOqHEp74V_>b`~I1V|1+;k+r00000NkvWtM6N<$g8KZ& A6951J diff --git a/graphics/object_events/pics/pokemon/sentret.png b/graphics/object_events/pics/pokemon/sentret.png index bc763cf77e4c6dbfd53fa81275341cf64aae6244..ec695ed2ba2a2188505230b2dd3d8fe613521dca 100644 GIT binary patch delta 450 zcmV;z0X_bz1gQj&U;(s|VHJNjK@KpPp_np}4h>?0r4PVBP&QtX0oqQN45UP=WY^Gu zFNf-=V^uEGcfR}Ya+Z&=o89bYH~T*Z8@ER@KXY-N`7(5Re8^Pl;9AQ8NJ9#C$WvQD z6G6&KOI;m79;#my@JWA^nFd7?4C5G8s7eZ9KP3eS8%M5F2QxJoXAXaEk{hAS{I}we zI=I0(?>M;mnaK!c=r^ODc)D!M1MBS5wk)Um6sh4lSJZ< s;*qTElI(f`R;+ISUkUh`Q|~X?7l?iqUvm1O;Q#;t07*qoM6N<$g36c8d;kCd delta 451 zcmV;!0X+Vx1gZp(U;(v}VHJNDVQ_%S48@d*bZ8J0EPVh5g0k_74A6GEWFRF{CA)?O zd^uD{9jkJgzVqFGm$Q6~-Rx#JyV?IS*tk8K`I(FB%$K3l<3pxW2iIB-KpIl8L!R0K zng~)>TI%Wu@=*PvfKU3P%rq#HU>L`!LRC@-`za|v*f?^XI+&@!ICFn+liUbp=D!t( z)WHqTdB?%c&veGFxdms3ci0~a6hJvPg2CcvZX8}YFv>01o?~Jom}3FLO97l?=Ei~e z`Ekqnh5=L<#HGNp!#gO!J8@z;Qeq!Wtzg8J$e&PwzWF6#1;1H{UCG|SFdtdLBl4c* zaLZGP&gIczxp9gQ#JPV!$>XuU2)50K1Sy9gNCD$O+%5&nj!V|s3ii#13sjk{XE2uw zdme|zfkt?o2p{URV#zk&jHru8WG=B=xztrG=R?e4Bv*)Ejt!3pPb{uOVF{HXR1T$R>D89z^&h=Do=@z`LiIO!2<*Ci*vHj+hm?sJ!fWm?RQ+ t6pv(Omt@xquwr%l|4P8moO*xBz5r#`7E|{YHoE`-002ovPDHLkV1hYL*?9l} diff --git a/graphics/object_events/pics/pokemon/shroomish.png b/graphics/object_events/pics/pokemon/shroomish.png index 95e18527b691598e2719b7f8e2e55e49192d2843..de258414e72e20ef52651212eeb6bc5949396688 100644 GIT binary patch delta 266 zcmV+l0rmdo0^tIXV1MjML_t(|obAss3c@fH2H@-x&?__R^ey2!#wne(3PMm-j;nNl8gbN%^C!mT_%!X=0k@8J7`F?u@gw zneWFB(;7ssn)z0($U&keRD(-7-%dJU(vR=qV1jM~=3^mlcYmIF Q00000NkvXXt^-0~f_prF4FCWD delta 271 zcmV+q0r39e0_FmcV1MyRL_t(|obAssio-Av1<)b53j@1nP>L;+$dGMRWePPuO$w(; z6&E_rc3YU-LBxSAjP4TITf``g0tOWUeQ@z+q%RDRlarH^^G5mnNNZOro6=Y=3YE}s z6D#p$=lk!4@kp}Nr}@^6EJ?8jG~`pwx0i_+y5T(SZPZP~#eY!9+h0JyVpD%PDHLkV1j|ug|z?x diff --git a/graphics/object_events/pics/pokemon/skiploom.png b/graphics/object_events/pics/pokemon/skiploom.png index 95bed007c46282ab800294283f82ecceef471fc8..da5baf252b3e29ed39ad9f31dedb17d965258742 100644 GIT binary patch delta 402 zcmV;D0d4;51Ly;gV1IK-L_t(|obA%RYQr!P0AMX%y!c_9j3GnPF<@{#=6!@9_!Ra^N~XP7A{M z7^HKcC8(o&;5Y^~EePj9T_w8^OSpjI1+sDs>Y&_$a6VB7RDUJAugQFa4)6juwlJAL z$~1o>pZEY-A(Vbcox-cU|Jt-MfMy#fip&P&S}UbLvcVl0+U%$K$3)EsMpi<}7D6L6 zl-P{!l(gKzJWVtmd3?hh?YbSkN3^o+5wpRjx5ypL3$a5(9tZ5OLFOE5w0(`|p+QaQ zdiC94n$Ms4!GH8gh2{O81zcd0`z_i>zxC2C%`;A|m;Jr5i w)2rESk@+nO5pllQisTkD?No$4$KS;#0v~aDR$;@Z01E&B07*qoM6N<$f|`NEb^rhX delta 406 zcmV;H0crl|1MCBkV1IW>L_t(|obA%FYQr!P0MLWjPy|K45^y{xkaQQg{-2IQQ2Yym zE<#Iw#Y2WH`3HdscvCNKYoDA-lrDwhoBVXv-AM>wi6xd;;{OD*p)J$1h0sjTH>C5- z$Y8-rqjb0sm>D(Skj@*$B>90!^I#O+Aa!7)UR1ato#*QHqJJ9lzeUptdUH7&M+QdI zOPS}7=p$_)b!(cq^IknNdHuCEyZY-!_RTLs-$oIuzUpysTLte!V-L2lXj2e7il-wl@&ZW#dSCw5EHC~|i`?j{EhZ-d|`X!PJ=7$=dAq2N>4C#5r zJ?tPa>_-9*eScPQRxg*kQ+qpDH?wqfWk?KbL-vR3if4gv+@F5b!iKO19G(}L;5N$y zm$um2cr7~59+VaL@Q5nDdz0YsaI9rQYFc#gswQ_z2Dz3)KW3W63oRB4sYbadK5x%q*V8fS<{Dxco3w zhMP$qE0bE@Z+u+`#^ry?zz*e(?~>>kEsi{sSl`f){4Hu~0oJ}GORjccynLihw*Q}g Z16ec=3J|)is1E=D002ovPDHLkV1j0v0we$c delta 533 zcmV+w0_y$j1nLBkV1M;VL_t(|ob8mcj?+L8hIbWh?>!R_K2+oznGO_#86OJ%i8EXdyAcPNJ#!Gf3xdddB|=S_Xm z#*0}NjKe5wW7-=nX0r<=fm^aoYr}D2zf=xgW0na4$?I3%`(`GjKM+C`=B**^Rour8 zvfO$s@X+TKr+@WwxjV6T!%Z_wM@NRls5az(xUP8a3)}hWg)Pj4H7wvojtTCvOmJn1 zorTw;^Za31aUYMU;(NCVj<2@M0(N4!F&bGKKHCmYH;*uZ#;oe-yp11RzPkj-h4ag3 zWckAB$FryFCupEE6x+{5s&PFyba{UXGnq0l8d*k;-hXUAz2(?}#sm1eS^*es%#Y5d zMc~DWQFG!X%BWKJc)jMzplN&p7n}!b0+;jn1_zOH2cjsxt}Etdkw$=@$z-(pFj9t_ zOP(l`THbGTQwJvHe~Mv;a>sW`bb=Nqu0hOiXh{ARHM9V4Uy>zPJ1|~8(k9#gPrm`^ XOAU%(vkp~200000NkvXXu0mjfw)+Cy diff --git a/graphics/object_events/pics/pokemon/slowking.png b/graphics/object_events/pics/pokemon/slowking.png index 5e9c083f591e5a57ef762d76da873ca44743e07d..fe05626844e846e309f81e7b04f3141233051c80 100644 GIT binary patch delta 638 zcmV-^0)hR`1=9tPV1HgoL_t(|obA@ZYTGav0APvcmWzI3dP$sjFe<&Q3lR~$j6Ot3 z$sS;^W8Nc&zC#1OxenwUrCyw40AS!WtHDK?6SfB+h@tYq~8`2WB=oC ziRM$ixv2NKfFy%D$6*@R`E1O>boVDdE_qsG-aTw`QRn5l&VR>*3ly}Q_};@O+T844 zjiAlg#i!+3&~A2m!}O`fZEL4BW~?{dPk}V&_IhZApuMs7K)Z;df0B~!hW5Q@)0}k2 zSZn5_izU5(jw>~yJ6VI>jxA`)fqI?o_JN|zCw9LGaqf9>vcAl>!i;jLHGtMB<>J4-9x1Izhx*IQ;@M45H4ikRR)RFfQGhE&nW^6| z1eBRNo^U07b6n}-4MCX=6d*!yMY%DMQA?g!bok|dS(0b1!?b+hn_o!)IS`~Hd3i5e zzRLlcDR;DrA^Vhhgi@lLz_WzwAxP522{?!XXNkTUbP(rJ>6Yi9C1vEcA6S0N@$o+qy=Bmt5@l8M-Ls(qOz;O*0Bn?o-xbZ*~DtDljC1n@up zmWZ-?qpJ5?L0Lp~&K2f$elz9@cYor;lxH=@-lkQkIxm`aK7Ta00wp_wmp){&(e59u zk_~Y3VbN5wqi%nUS&ci)vl;{R$NL$HM&yezD?+xi=O7zSE+a0QxoEV#PhX01V~1|2!-#Pp8P0AN zj5!95jyA;G8zv(;P9NvHeVj_hDeqSbmVsACo6}-@(;FEj`HHNiYsr95#rD#A83;W% zefMQXbsU2v-l&>GO5jK!4ScHR8!69UOBS8Xl%UCgXS@ zI>U#j+h-L?R>lw+gOZ`MzL=yY6|Kz2`_-M_K-Cz#^){&z4S5nnBb5y4?;m2xkREQh zlA#eA#{Hor!!UIVLh-re#!x41eWa`K%Y!l{cg83zKZM3}O{9lPbfQm3x*fXgAo@;i z*X2MmCUR@7*M0+mHC>EJi-u@DOk!_}p@F*V^)e~l4ji|&PWbo6e&%>9K|CD{2KJ^9+R^0$v39DvsF(p$6|sB$ljM$wn??hOqE~~xJ~njO3-|f>29WOc(TSXbjydI=hJGIm6Mt7S_M3u$Y?gX`IMotB z7GARq0J0~q@sXT@j;T}|a_-e8njF&+4u_PA=%!$YgJIiZqPP~@WcxoOt@iGY&L;S8>uvxoC8 zW7uOK9{bj7=s2D()1DZc1884wpXhD`nYuJQb=YN9@L~P_-P&s4xRNplu`=u0yC?cF z>dz;-VA^Sn_}mYI-n}`Y_Sa_S*g(k29+BZ{&5K{hawRSrvLQNdmXqMa6sAJv##}Ch)qriz zl7yOq)wyy_tkeawKC~KbEhhKnA{v*uF)4FHv#V)XxNC>PHqI_q{C$ysG`|3Vz@Bv( TJqdjP015yANkvXXu0mjf9DNE? delta 524 zcmV+n0`vXm1mOgbV1MjML_t(|obA&wYvV8!2XGBp)J0$6)|NoO!VS)J%MI<;;if`J zpkGB4&LAT24ZWe}h7KiQo}tho;ENz%#hAN;P=oJDB$ljN$sJir$$$Gr(R=cfO~^6F z9P^GM_--GX_ygVPLqnH@@ABadAlvDK6MF?c3n~QVVebu-*MBMrn}URVmIb{(^%6jp zL9-kH@~5Ejk-UPQsnQ#YpxGFm-2{yry7PMFW+CF$pZ3Stc>T{$NX3-9-;HmQzze|3 z6Azix3i3{aj_D*HU&EY}&At291$Ep8U6UA3ys&en#_h7idCqWVgwkFUa$D<}+mTS? zs;z)`lFjnx)_=Fg+dDd$;J>jW2u}N~3uuCK$(}0(oH{e9jh{FE{t0X84YP;SK4aM9 z03HX_5j8=n6=1GYX%Q)&y= zr`ip1(v-~k&>FO}nBG^5cw80Mq$(`!uC`(6uk8z4d%IZq|3%(t{sKE@oY&Bat?~c> O002ovP6b4+LSTY0MGe~k diff --git a/graphics/object_events/pics/pokemon/snorlax.png b/graphics/object_events/pics/pokemon/snorlax.png index 9a0a6f2e7d34cbb0a39b7714389b0c8dccc992f2..aacd9041ea5d1d9596c1698687c2991b50ac534a 100644 GIT binary patch delta 742 zcmVHDLE7h9fRQ8S^fXc?nssp|Ko23 zKFM-Nm-^)_L=dLp3Ccc^eR!l}mk&PbIqVyZ7~}i;MsMzGi1`)- z$FVhxDR!vspL7k?LkjTxx(mJ?9lSrBrohkR}U z#E$b;;+^I*rJc2%ZzB^vNl)f=kGGBRYd+ z9QB4x4W=vgJZ`%LJ8q0%Z(zGJO;s6`poH&s5?J1o8+)>7L{f*H#g6caUYt6+BKWJD>UD zaawmz8qP{qEPI0?*NDjb(Hjg|mSuT~MT72D!p!LYmy46q#C4G## zUFx^95J8xV7dT50izt0F3;AO<@|$uNR#2(*%`7mgX2T^QZe{h!kJQMVeDrk=w*@ViNS<}NM9*^m3SE<5(Gcrksv_qV-dX9`b_J@ z%Rq_%e%5*!zQB_&0TqAiB@7KFjPX z6P6)d+|h#Xb5N(;Vm+VQd}0<1p!k-o=hIeU@ldj0?hGcJ(RN<1%GDRzSV?*(15Rze zp{R)I++;LhBO&kBCF#ZPR3|L?z&~s@TN-)CH>6?QG6`@+QP_WOIpw)CC0*?RC?g@Y zwiB$un1horfl}+$4Pavi>b&IyRKS9eTRr4+3m|r!w-O&UpDFFE?R>*rXUoAnsm{4+ zRse+=$iZ?mH-hLE48?)+jngNm#0st<=Z)wL)^XGuHZ_>8)XTW-670A!g1v$5qOlaS#w_Xc`L+v|S}B<5BS@i=!YKFVT2b8oRXFq{ny7OmjQ2~N2?gQF}K)YP9)(JMUd zc$ulh83^PNiqbvF6Rxcy;^8REk}EjOD?6Y0<}k0jCk+=RE0(>%m}^Aj{pbzGEX%UI z#iBv?Dq&`H|I5WiY2v;}k8*%E3UQRh6B}SJIAwWxZ3K6>=wT=5VG&TV*cJ3Ui{gvJHK0+ed^(7Prh5B*|efVI>s>v4Si$CZyPuAxY-dm%{agB z1fTcgya=}Y-S|tZ*z%ll3iKhEN49yT2J3nIoMU79zUhfQ)W7h%J(>^#tMoqoQ&evl2C zQoq6mw~@rTzFl5iN@asq{y2p#jFX%}sKeIOE5;dR#MtZ=Xa6PN&{@WJl&v@`mF0{< zIP1z&m)5yf-7a@#30rRNv=2Zxd|mWz{NMZl3N8{lflLS35REJgK> zb>*o`>s+huIxThAs>5M>I?wNfEjM@C2cR3iE_yfqZ+-w~R{6c94T)m_0000 diff --git a/graphics/object_events/pics/pokemon/snubbull.png b/graphics/object_events/pics/pokemon/snubbull.png index 96459a33351ace92774e688d3bcf06fc86deae37..596a4c43c218c9ba3098751199b0ef19869a7aad 100644 GIT binary patch delta 535 zcmV+y0_gqf1ndNmV1M^XL_t(|obA=YirX*{24I0M-nR+J#WwV2foxcM=_P%R7$yrP z1njUfETs^a+OTia98$=!?~p!5CCidVUc7tmlDU1E=pR{j971k&t6SabU01ZnVl3>= zOc`6fX7#~J?nAdd&I1S%XQm0j#wXTHo29`QHf0~0dsCIC5`S%itc_D?17q#n21Wzd z=7ZmIqKyV<7w(eeW2F~}t(?|_F-!?jFSM(6S`albR^bLv-A-lbqWJLA#? znj`Z&GWPdCoqw@_st66P-yU~DRMj=J0oL}+hi2T6TOf_?GeAfTJGCP}aCGUc0>1(L zb%BH$yXR8!v0NZE_RnqdNiFb!##_IE2(D$fgZ+|8tn+fRX!_?G1diVLK544!P87?g z;f7zB#OfAgub8Prkg;1qb8YlfroR~bh_65!4Y)fuoPYgZHq9^Rr_0d~$h7@H5?@rI zflM0>yn8;&=WexVnw7__!$+X)2NG6xW!P87FRSbb7kp+}@-;AxPxtxWJJQBSaL@S( z_qD&H0nI7q1$NE@leGTu1^dV6w8kF#L)c%p12#RZgST~5AJ*7p{`U~gx^MR1{@}l@ Zf2$uEG7tch*=Ya(002ovPDHLkV1m4n2?GEC delta 533 zcmV+w0_y$j1nLBkV1M;VL_t(|obA=YirX*{24H~>(Y{SUF1DeEf(5o=Z@r{%5r|>3 z(1XDaD?<;3xYUMyo92*0j(wm?mL-k6c=z0rxqX@FA6a%BLhg01d)@25E>>f49(EU| zoNwQ<`d};T(A|LZ0D{DYX$)}ii4E80N$`b3IfNG8ROP8en|~l1<3!rPNISEEY!upJ z^jnU#(E#njU6OpR^n&~-=k;I=a{?Q3?W&s>uok8&+yJWEi3}Y-4R%8?mkC^&uxG>L z9MIYRfCB-ZR;&Vr+Hx*zpv;Xc=>pXyR4%alY3u`IP=}T;EZh}J5kp?7yJ7=-fY0YW0!s~!1)lS^k6SOYK@ zNT{)UE~S{t1yW=G+{T~O0v~96^c!HXDf>OtYbKG-%gCzfpG^=r`QZDctv36-ST_wf z{K_O!w;+APTpfap+zOg$qn|SU#ra2k1=?u9!?hLs_kX%+cDsJNo&A7R+YcnsO%)o* zwb8(bm#ci~x2vXUc}{zL1loQe;bmWjeP#TzO3!e^XO_la1Jmg8nAP4)8y~@=5EtCn z{*DH;mq--YnFvgh=EE24AD@#3dmK(-f7gxJ^t21!)~q@0u*vf8fi1f4_TT^DpRK=+ XGY!(BFb=Wo00000NkvXXu0mjfd^8Q5 diff --git a/graphics/object_events/pics/pokemon/spinarak.png b/graphics/object_events/pics/pokemon/spinarak.png index 9003042d703a37cf71d75f042c5dc531b47e65d7..0f78256a489c84027032748e33ddcd2629b3f3be 100644 GIT binary patch delta 481 zcmV<70UrLc1h)i`V1L3%L_t(|obA-HZsIT)2XIfBD&-0K6kp1i4yiI#ZBK!@J`p~h zC%*+NQ;|CLRXW|$O7{?)7}G?cPh|4hN$j{(gta>56U&c3`ePdh#>N?EoN>nak0vXl-*AR7q3#m!B|7xQ1(_?&?uzw_}-^BYQ-fTiYXgTL8?X zIL>+R+%t(CRDV0Dan){cX>AK%lDncv?$@I4kL^Y4#C%K1{8rQB+ka;e=ys^#okyQH|fiHr3 zr_X9#TOUyEAyT#M9E!&Dt8}?8{P1&Qmop{zDH4(Fjan!ry1WeEZ*Ko!Unq_B`!;9# zR&g)q#x6J4gdYwhSG^BqxNlHESd7CUmjUls!tz3_BWn? XxcoJCN>cWx00000NkvXXu0mjf@;K;) delta 476 zcmV<20VDpm1hNE>V1Kgg91%~+d}pn7M35t ziKmHyPPs~_E(y>>xbUb_u<-y*EGdZ;IxAF;<>20t#`9fOO zkk!SQ_a1V_Zi+Hhl?hw!jW}FXZe+7b;X8$glRCGdP?CEtqP(-u?U6L62Z=9|Mi)QK zuJzVvPLP^b4d${l2_14<_&3g-L(Ysk6-Y#CG@?=%a#hXW9v*+=Sg4%s`#xv(R*5JV z&LMZ#L}*QlkJg&=K)0!1uRr6$&hfb8jPehEhRkryOho&N$hbD|K7Q^`JpTZe5ig#b SJIa&*00009kz1z?{bIo(PP2`t;v_5ziH%1hc4bdR%O zrLjyRmH63km)M=KP9#r2mPGPnpB<0?Vq6}0L9+wo*FEeW)f7r2XlYbsWUr{mk2PkelA-J+l z%PR_+$KkBmWQ5;r%aL?B^xL9EC%cU$nBInP;KD fowv-&Z#XZcs1jb<&?Tvh00000NkvXXu0mjfogRgB delta 274 zcmV+t0qy?q0_g&fV1M*UL_t(|obA)EQp7M22Jn^Cq;HAiEJ$S4dCc(y@Hhx&HnZ|f zzC?maZtK|2WGjlfnSAb-G@E}7(a6Zi$jBW9a>xO2P2ea;oOT?TIUY0||H}lPbw?WM z8|whaDf(U;B1_-96MU&l--IXTlQ`Bb!SlDe^iB1H`Lj62<9`W`Ltvy@dzEf<~Ua~c&6oX?OFfH#~x(?Up7xPfIo)Us%y>)u4 zsdPPKIh%rNd*%?+uQqqE?itx}%heP_%YXl}-F{tCX~j4<`^9Vv(l$H&^R{JE{*H44 YLW)_ajcXpb01E&B07*qoM6N<$f<|zMa{vGU diff --git a/graphics/object_events/pics/pokemon/suicune.png b/graphics/object_events/pics/pokemon/suicune.png index fdbcfd51e4a6885aa106c0136c6fd6fad830d92f..aee3d646d8930c6d2a54f987d0f533ed717c2348 100644 GIT binary patch delta 862 zcmV-k1EKu32eAi`V1GPGL_t(|ob8seirg>|hSjKWrH9$wBBZ!tFLf4fhj5rfk0D(7 z0aE0eMTjf*A%Y>nEPjeB!V&Tc2A?oS1Z8B)w&d*HhID}lTzr=F|D&0)Fd_fPpAK~& zVRHY%y1yPWizMa3fWqs1c_bo>{ZusFtm;?!vc3``3>q;^8h=~wufpX^zN{~uVyLf# z434zl(DjbI%$M~K8zJVrGl86i2Jh%~WU$~%LyBhA3YkZoi8;-CZugPFg0bi}Q89;& zDRazeCh`T(23*NwD9DwFnC`b_8x+xT7qm^%ygO{W*`Vh(p9OGn7Pd`?6$+T{ulJt= z1J9EIy=^+#w10UW^Kn*?N`+rWA|ggTc)P+iG0%ONc1$fY-N5R~D&dy6D{Nqi^5d68TYs)L@aFhIpJ%hf@Gwcj3`H{7 z!M#D+Gu^IvhbfaTkM|=x$i^zP4d33pziG!JFW7J=hfiSO0`>-Qy}gnyLFnO<h)d?vnoab`HSRz!Dz-h0`OT-a~nwQIMKX_M@H+ zmYlfnO5_u}^Weooea^@oz^!^X*{6D9H8Vy;d4E|}K&A*|##&qK{9`>CFhpC=22hp& zCkuD=%nJE5a9U7EaRn`R=a^xtfm^#HrkdDV7}+%r*OmEk_XrVx2hU6sV@h39JFzyU znb=g;6i`|_7J0!W1>jG`4&X6lfZ)eKbDM_OvEddbW~MBF;<4>{Ch!voW{iQ~1B5=> znpfThii}ep=;K-zFtZxxt)1BdgPAD|xuv=e-Y^J5wk$T_EdDKdbzbu^tU7q3qa9=^ oNEYL@dG6<^4d3v1$3HuM0eM?{Bw`#ta{vGU07*qoM6N<$f@SNb-T(jq delta 867 zcmV-p1DyP^2et>0V1GeLL_t(|ob8sqY8){T$JI=+7^8=|yCS4;adzzm?_i8EdJM7E zK0u1NIfQU=uV4s)@(O~rSe7Fwqy3bY`v~a*5uD+-lIB19&#b(R{U3ii z^kam{%m*|+o z##9A)n#*FsqkzzA9R?IyMhw|@xcj z2y{FMz+G9ZvVST}%>B z=e8H1n}3%)T0_J9?CUp8UF$p7U-=!=5$V@-8h=ieSkA6*AJgqVW;>vpj}o+JT>_1O zHqf$5+4t3*kGZx}ZVtd-ShBmB-Pa7Zd-*I)n&Z3sF6C7D8aUQ6_5Jx9QoN_lex`u1 z`|Lj1QDDl6f3IXQus;u7EG^S`K)lmW=kC=Etba$Qj6iHQTVz9qF~88Usq@!n5b!U8 zGot{WZ4l2LKA4d;@p;QB0N&FIVCg>Q&xWCJWUbi_>>Tz?o-kpz=I6s3M*IUi=9U@r zYz?@9t$8*B@3=GcPu{t{$P;EMqId=R`xY`{@L^zuOT+8f2!{i6G6Vf*gxk*yf03MF z99+9S$l#4~cnBhL0V0S`Yk9!jS(jOODQ4(WhmC tCpOx_rUBVx9Ge&29Jug_hItclPhL1~| zzX3=|Nl8ihql^YNjLonfjVC{vbl1KPntkmxqxbb*F-*4QYG)LeRaq&{t8&MRDU-$r zGI9I$Mloh#wLLyA<;Ap^gnCxBvhE delta 252 zcmVs#cuW)t(hoCXJ6| z;`W=ZV$8yNcY0jPi)pzC!8%fWR19ckKRbvT*;-pVyxH6g=Ce7FklAoO{%~Nx9PKG9B4z7Z|$wNQrNY=q`7;%UymgIN|dH$HMWLiAp}^vj7U@0|sQ{aK{YJ zN35{~X{s%A#vF^(rg%2ZjG*~|6G}v>RXgTr07=#Cm`D*Y$$ywxf-0sKV9Ok5h?JU= zXB$XBg2WNC7LjN%^MFM{QH?TS;t5hFG>4vpC}zwuU{V!r_2+gxK7NOvMf-w2+Ri=S#zC$)2fbP_fM$F;8m#?8^gQ0ktB}wlvl-k=9bj zES4_p%7E$1Uw>*Xbj+46N?XevKj4q(zw7tj?N}^gl2(ypqMHpRYR%ZQIsEvz-SCtL zEOvgWnSN&5nm1E*zq(`6=f{Vq*A{WdD#<+N5%XhG9I&Ny1+J}PPJe9%-33{v*0KGk z{cC9MQrDq9zhBgP+A_2W%jKmxSnTL-eAzp;f%MPoGCiRU!=Bg6OXK$oa{pZOYHvMV u?dYD~jqX8sUvtuGfz$9a434f}XT7WHcoFP(bN}g>X z0SOXE%vwaE#moa12}L!^fQctana~`14x*Sb%YaE$1fn4in4#vc?UiRj#DrO^#poJloP(!$ew39kW=v zuqy+mZ-1$^(0?&ox+rZecl?A$(TCg5-tAZ{Vv<&oW1?(BiCQ!EYz~=o#!DWs*!iVq z`kifSK1|j9>W)d@o}XUcTf`l!B=eX@%+E=2z?RYtxV4Hoz1j@A3$jkFWBX70*U;Rh zu0wnNyr}iGWoQ$Y%e6UJ?C5TM+dH;_^v~-up$)^H*Eq|y@#h7(f3A78x1O$cbkFIc ppia!ghF9Ijp|_sc&lUeyz5qYzz@ENsH8TJJ002ovPDHLkV1oN3-HreN diff --git a/graphics/object_events/pics/pokemon/teddiursa.png b/graphics/object_events/pics/pokemon/teddiursa.png index 96f2054939711027e699183e6f0bc13edd0fae1f..00ed843b974c18fcd0bb966877e069556b80de03 100644 GIT binary patch delta 442 zcmV;r0Y(0g1ds%fV1JuQL_t(|obA-XYJ)%!2H-t;-FJ}o5GeE|HVdA-WCaf;Qp|!7 z$jew^AmGb{f)MB>IrQW!gdl>4V%I>)%$7BfTZz@y+lk*W9eEpvVfR`7RYA zLPu&BLZrB%1}SkaL89C=ln}>wK=uaMtrByEPPj6TtcC*RsiXs$_X1gp{`lT!5n%J9 zQuy)bDW&io;I#-P&O;I6+&rG&=i~{!UQzdYMH(LU1~V_n`o1Cgq3=mK7XB=jS|MDnrf=4{!f{7%%cB! zxzCJoh)I9PEp*15i{rhv4fBc)AQk|Xy`Z|&mxd~(1F%Jz7k|4CFqO{$g}uOMTX}UZ z@c?R3X50Bwfd)7Z;Zl*ucHug!0Ilr04Y&65^60g+Ec|9UByd*DYXNp+bmCtQ>B6qr z8yLVpt7{JRuCB`w59PPrSQWUTYZ0CvgLCBd%>k!v5#tlNW^E7z562M?_k6_sc@8jQ zwmAhs-&{}741Z2ho&c&3Q*00000NkvXXu0mjf32@oJ diff --git a/graphics/object_events/pics/pokemon/vaporeon.png b/graphics/object_events/pics/pokemon/vaporeon.png index f81b919af12a980a469cd7e4a5f0edf54764695e..b1ac9aad427619305d75636f9dfc962a2eb6758b 100644 GIT binary patch delta 740 zcmV0V1L6&L_t(|ob8suYTGavfOXZ$?+~AI7=?x%a@bRp9eUYo7{lzm zf{7VIP&x0i%NRK9G>o9K2c?8S?V9Eg3UxKPwtq`%+On-8o&}_kqiEs0UimPOho1@*st`95p1CoE`O{))X(!v?U9g~1Nh?r zwh-s$5;zyv&+?1S7Gix#WR0Y3f9k{B_ZiJ*Y$c5muqkeZ7x0y+2c|7cF-r7njWNs% zE6hbU7{6nl=LKy31h>8}$p_)UXCR@?tr5UrJkONS;}Bq8P|sfhqid00Mw)P7ENDM4 zylif$=C_zGT7RKGzRqGz&I({h`A+C4963Ml1H?y6y4n!pqh_Tsdk_ZWg!+OD4%~># zlecjM!j9Dy4!Vh!x9&Ylc2md_ixJzl!g36-VVT$iH)TGPG6EqmD!Wu^3MtC6kYkpZ zjL1e+I@v$~vRQZwZ(t{13n8{3)R=SzTnZ&reZvY^jDK*Ygdw2fkR-s)RVqZa1mVcI z&vpEvEOSv-r|2*%AtNl&1C)eS@IGm}&fhQTARL(u#q_D-Iqx&=5F?rq!nGuz-1C81 zO4i@!$7-|bgaaoDRBOEbn4I|+V6Yh_N|^IXcIqa1FC3V2C|2sf`MREJ zd2TUcN`I)A`a>nd2)^B=oKAy5IB+K5k!7<_zce>su-O#ajG5r^@l<6_Cmh*_DLFb% z(_*YFn^Dqk6my03{5U=!Wz2LL7! zqGJHXJ|@N?ENNhz7>&O&Sfahb``Xdj@gMq(4)cLlp*P36Yxl?lH&}_by#R!AGZJ43S+3;W&sLLxv*|N0rakZ%Mf%v`y(!4TnGZ{QZ{n|B?~<-+rqR zj_~Sl3d#D%b^WRVJRz2qEMGIgBVk`i>b`>iO1~Jv7m{S@{ePi*o?mK@gu)%b9|!P- zxN?_(T;4p(FE(F@?IlqiQfm0=4)fIKG@r4TG)}<2zLQ~Gu4HGJ53J-Yv9B%0FfXEZ z7ujL_UW8#7i^UT>_{JnRLc?bu;r*Qxz+t>7v@k3oz@p}1v;syqvbv&{&@h&K8W^U1 z$1T6dd^rfC`G0kmYj#!x6YV?UvvB6>VhWHFp#p0NDd|@hi@h+OCp40!EP;D@b@DEy zARJj=;dq>Abr(E{>=r|oc#On$5H@pwjVR;}xNoXsr6>r2Q8T7WUn|)(wVJcUWyChR z(%A+Au+1`DhK5PCmQrp(XfYcNxRF|@`^*Y>jBu-k34fsGgk`|wI+wDgAe2q6F<&jK~>$VHylb7lFA zvSF*R0x*pUFy<*b)>b2&Sj=O_fhy`-jGkhB9)(F_uYqRkgh~Un(8UdNI_)u1evdkEbLDot>X+faY(D`i0ZN}|U71S& O0000#wYH;dWTC44lZ$En85oKbE%`7V3Px1 zFtA|nt2DRlE;J+cdmQRn*s$qR2NxWODNTdH!LY4%N!|K0cb7PDU^p%8%&#QX_o-Ap zy;^-A-^YJ3*f4)i|8CdCa+bapb&6L0!}c?&;oGS~CU!AzO@EFy0XJ?#;Wk(-U1X%p z#1{Ob!sjb|#XyG41X_DJ3h*IjY0{!0{N7JW*q&%M2spM$fbO)@h^UXS#0uFuUP{cM zJ0Rcv!Hrx_&AS7!NKK=F1R9WiVk>2Q685tB@EX)Bs>QNnoOxOC(sU?xe{wP~EGIk= zizeP8fPWrM7gIX6O_x1tdi^^*->i?Jug^0F0oj;#ccU<5U=sB12D@1D=hxcZ@iOh1 z^r8SewCfM>T&>kp6!5&PU=nA6(Am_vPC&*c`tk0p5RxDGtN=_3dp6O^#Cy!I)YYOa@TZ0-^zNvXw!Ya>mPFTK!A)xHd7yJf|ho zbf&*4GvGLN$*1bJp3?iqbAA9S!QJk?NF^9&4#c*?f` delta 940 zcmV;d15^Bl2>u68U*q~wH zc3#CW%nX>8{2q(kGqG{W!37JVOKn)#pc%_olC3|zx5)(;EUX5m`&W|c`&25oSF2y+ z*Z4n1G0dOSf7^AjyhvYJouZZhu>DMG_;IR`skoT8CP$lq8-KTfxeXRe7a1utu?4?~ z`FzZ0Jp2DR%sifQ%jR5_KN4V4x(%Er$D{o0Li=WLJW9WTE2rS*3kxn%z{zugeaJy! zds5g&F3eCZ5)44~^9BXrmvG9!%L0A6e;Z(OS>JsQMJT70rCBH=o3rY}2^x8-D8}kz z6Hefn`xAHrlYbMO76S~FXA8kGuXTM=(8)5g5Xa|bcHc?l6rJaN9}Tp=0(O9wtwleM@_H)gqPd(G4%C$<{%&&)9!8+h75%Sy}QLOmi*;PyE|T{J(FG(C=Ttq zgqLcqo}+;0Wkn%z76_e9o$CZ-Y@#>!XN8aii7{M=uL#^srV^AP7_c-;E26;H>n8&SG8U2i znC@=huJ7(rXmXrt2*%XHU^0NJ77z`HldTNGlrvub((2!G6RlN zm;7Db)l+)kc+L+%CAi;x6sZK`%mE8yT!}IRo|A#<QRQ0moUDpVl8txo8JLf{loTst&#u|b4>Zv!)7B?Cg3hs}-31Xd4!s7!#~cx-z^rAqY+F{@d!D$?r)lIb?C;sVawT2QWCk2p7whL`8DC8Q%;O)Hut!u1li?x& O0000p diff --git a/graphics/object_events/pics/pokemon/venusaur.png b/graphics/object_events/pics/pokemon/venusaur.png index 3ec4004899f88186766418b41e505b3dd5801143..1c49947b2e5be4aa8005344105051b0eeb8d297c 100644 GIT binary patch delta 695 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 diff --git a/graphics/object_events/pics/pokemon/weedle.png b/graphics/object_events/pics/pokemon/weedle.png index 21f6bf13d58563237612f25379b67057ccc97cc9..c5e08ddf8e7bafc2e70829b3f3ebccc51ecd4315 100644 GIT binary patch delta 456 zcmV;(0XP1Z1fB$tV1KDeL_t(|ob8mcN&`Uwp z2TQ=imk{Iv>Cz++dV~-1pRFjOKtHUL7q?s5kcvwiHnodZ4<-J%<%_u9uWrd ysGgcwo?Su{e_uOcrzwM`|A$BH=mQ_|Kdvuo3E!n;XVF6d0000TRaaeg^><7C z+7P!3r=tI3q1o^oLa2f(N^*0JUkH`m*k<8gL8WSA*zT!0iGPs7alF5pgrG7+vR=K8 z2P{CLJV7B;nP+O?LQsfElnTbo7%OCfH9{P)H9`o9=V7Hx68?j1M!R)Fjoc`Nf_n>O z0V}b(MyNx?Fl-Je{E@lsftEAhtpa+f4|F0x2z7S5!p|n5XXmR5NEctu9!I5@&cdM& zpra#&P%P7Rqkqt^_gF30>DqbWaa49Q=kxgJ2q8Q!(-+d`LjTTkXY&e6-?b1QHfaAm zMO<->5R#7-Jw=_r*^&l~?nV*evMfjd=(2PoKnP*t+&c{z1(y$`t?z?AW!SmI(2rzp ztzn}uLA+t3%D;Okg8sIRwQ+QgAWt}hicHkT#o76`jX7aw=k$i2M~p!|;d2}7i)(1( q{joDH4QDX?|L}xM{=g^vkLw$?#NA&x)c4u|0000O}e^3r~4%BeDjZlggDfp z4)t+LKE1ObGws6J-VW^}s&3ILRJ!%}mJ@+c&3wUza1|WiNPo0vM2TJh@jxh7xqp8n z(Vh|W&Xso}6y|2-cMKEJiD0RoPH6`Bhjn0{|O%c|iIodcEE$6NEx- zckVb4lHeO&yFdcVbg3EB(oPY3?3?&R!oF*$w1!w4##YD}PZI3{iK;xl=1c-aEO!gV zv!?QxgpSq4iPkyeN_$Mo3&e{rAAu3b2@O1}w2YH2{#+@aCguwyN%{rELc5TZ=NE1AT%%|1PH~(5lh(jIf zP~WHI>lX_$(=MFt?a)4=>J_a*rCYae*%1iU%ol73m%;XpM1Olml-Tnh4}@}=`|BHt z_KcW!@4OwMFgHuTW0;6`1c&MgWf$jO$3Q3z7;imHL=C%lJB3(eFoO6Mi<&=#*vudS z=eMniM21U`(FxUfk^zk3d^~YX!kSkD02^RSB9T4E{D#b8Cp`L-%tzE=k^HOq%?fK) zNjjxv$dj}d&VOtoCZvb}?0=V28qf(BNznnYKQ*s~MKb`f0Z6z?)Cj4j6xj*XHF!ex znEry{%VXN`u@#=x{Js`EY!^~h@C>mFR9=th1Xw^!3mDSHu@yF~#=mXDzmx4kdSCzo zj0=Q=VTZGjr$3`8ac3r1!Y4OC*ETe}ghG{5aKnL7@I zB=~{%E|9=7U1-L1Xcvfm_D-CTaNrs$ts&Niu@y4L^F+HqqAE}CIg|$Po^^g00000NkvXXu0mjf2Uzvl diff --git a/graphics/object_events/pics/pokemon/whiscash.png b/graphics/object_events/pics/pokemon/whiscash.png index 80048e48f449c47d46dac9538c2621361439f829..37c8d2e168e6902c0e1a4228c90f8e48f002e72f 100644 GIT binary patch delta 609 zcmV-n0-pV^1-1o{V1GeLL_t(|ob8k`YuqpxhNY#TPL`bp6c545QScNRPe(T+4my?g z7nBZ8nRzLTed7ac2ek=`|$F}*7Hj8XCrj1V;$@D6nTOF zyGr>yzfi)c7K%XOo@Zung$$YAF|9F z(ZDY7njj|1^{0Tmm1A6IlK9T^4H-rAnE3%w7DtXZ2(LjX6nZ1a7)nvPkG=UrMwrEn zP6dK+Ccdvl(gpMwrk~_#yzhiVhJt{}K=O@o5awx6j50zeLZlzP6}L>3ogfj`rB-!& zj4--poTqS|$$xRiLI{4brLEAhPU}#3X`#qP?!CkwBLYIGl)3#`ZufXv3AtfGBOGwm zbu$=(Gp+k>$RMP;5~^0nlx5Q#%IQkvAT+8CXgO2%NKse|d4P%$u7svquoEh3nc5BF z-LlFv##o`pb)!^5zE~`BFTiII2F!pjpzc$&+@9DU{(m{=sS|d5VLNeyXAkdJtJy=+ zwBdm3Q`g3C;~wMk>Tu6Dg;G}7ahTY5xcYJ6%jM-^Q;c#|RI6Sam!?#X)b{VaDb7sL z2pzY-3-kLN&g}C1wr#tHZzhBY#d|21NRoHyFQs@Ztl3cR9>C!jXbbh#bxFhBx7QaU z6z;eCU0N3~r#CvG)Mp99E_WONe<1DT5U z3p(X{NY)FZq0N{sh21IeS2f7)K9LedDpFFQWBj1OhZgT8A1{T_v5s}D*Hh#L{_kq! z^ZY^)BaNB;7yiMGg16)}|3m3&Rb2+JM~38w#7UzWl6RAAJ%1&p(V9k_Rv)S=7}3Dq z@P?pFG@C0*-pDDoo+Q5y^u~!BC2^eICpoGs0P(u{lE! zT#9cSQ49tV!}OE7%=d%fn4!R6)(|?vL9i|4cw_j`QT3UZUtPH@C+>XtAB zJ+-+TGYB%>3aVZ(Q;tp76nZUc5HzYY@LVa^Qj}OhPVEO^%&nkl7wiQUbIjZZ@ov%j z8DpGaz&0qYAYZT7bzl%O2-3`e9%cS2I_^96n}4c#>3;kN8!ady|ouH)MoL4@)>ly@Y>+w!MUyce`=822yWi7o^1TaHz2$%-}RB2Zo!;i(rE=FB(uZg(apzN*vD$!p&%( ouvqlvc``sSW8@irD)@@(FFa)J^l?eMxc~qF07*qoM6N<$f|BeWS^xk5 diff --git a/graphics/object_events/pics/pokemon/wigglytuff.png b/graphics/object_events/pics/pokemon/wigglytuff.png index db76d6544888cb935270646775f1b169d7da9846..b52a399df9846b7be1bdb121296f9e422a39f6d9 100644 GIT binary patch delta 462 zcmV;<0Wtoe1f&FzV1KVkL_t(|obA)GYQr!P24HOhzfYkrQpniJCI*A2s4-|NZIpu7 zrY;0L#i_xs6B)z3OHXlvPi`-v&D4@x%%`*elY%0|wXSuo|55V7=h=ElFMA&6DZzNV z5JIIwn(}w;5-qE#Ywja4$Gx-~`$` zI$-2JkldotfPVx(peG#Jo#;6?B%pWd2kN1(y@B|jZu1=-fKG@ppfv`PAs}&vQD9si zKd2LLAO`0CEks*yz}y(KBmq2*`;6osJVd@W*VFEP}^?Hl@5F8w2(p@2CGJkCydc!Fn8h3}iPf;(;nnaY*@q z*sy}cq&c@*a;rrRvpN&4(@?o+_^98`8k)MU*X+GD!9UtEGUHC$eHA*akOsGa8;ng6h6w-FjnAdvTRk9jMvVY(pXd+~=oeIrzw&D39 zw1n6;FT|X2{w`N3w@!^?A)q^Pxk`i#Uw~@{c*neOAG^i{`X~&cI;bEO5_N+oX2+y) zEKHLMagm_+y`j4OO>sF;mOBy0Xt3b3WZ_8ok(ISC&CGM`3g1w zF~^d9_J{6V=zmLS%(Ac%1>ia`+m|x?*kmi%r7KVgVy>hPxWnR#4W`(MPdfu1l`}&% z<-n(aSz#7wF07Pz&RCEt4zI8H01jbKl(QZ&gz2~-WSWb@L+3K6o&u<*YMb zuZ@Nl(;eJCRWg!`2Lx`iyEPio&xq78^|pIi!}?C9kUA^}CWj{4OfjluLXMU&;@o6w rfX%;#Swa?|$@cj({Xc|F{!hLDqto_tCvLh000000NkvXXu0mjfmub<) delta 449 zcmV;y0Y3hw1f~R#Z-2dDsVaU6RFEoB^(6uuQiZrI)RKjY7s$&nbn9D`E&-`ayUg@B{sh^tu0@CCSGfOpIaUt!0(z!eHhsP-yMghZX=k=Y?` ztc6JuA0a@ax5HzpRHg8 zpjk^c=^v(Zu759~nq_Vy3Si{HWK+oOW0kI8ovc8`h?$alFzV-5Y%#^QKJE2*RLl(3 zm;)aJriEE#IJZ*bdjmnrcz1otd$8YiMKPNZeHagNLS{HG+_x{nQjTzUKLGAWqL@vl z%ca%OVY-Ifr&308_JF``z6q>G^fMwAO#NUZD_AGAg*s&3uz6>r%M_zZCgk7nO=l|pjY83P9A}kv200000NkvXXu0mjfAEDHP diff --git a/graphics/object_events/pics/pokemon/yanma.png b/graphics/object_events/pics/pokemon/yanma.png index 806969b8f7f41e8acccf52165615247169340336..ec67acf0128c7c8a9dd7b6689d90046d97712044 100644 GIT binary patch delta 785 zcmV+s1Md9Y2IK~iV1MsPL_t(|ob8s+YTG~%#@81GbkZUbiXeRlvBETm6oiJB8scYA zXmDE}j3I}ld4R+@r?k;+O-)+{tOqhQCm&iv_8B@Wtz^lLm2)BEi+*eEeBaLg6JyWu z9M4e(+OmbMgt0*j>kjm5347r$TG)z2@TP^SgF@A`*oY3F27goD!jv##yP2^}Wo-gp z6vlyYnha|`gD{N8>~YrhVl$Y5tg(%Dy<{Ek3C?%&-Yo#c-*&LoO_~Clvxn@V98oUC zxnrJ+$hi#bE(Cb>bq9C45qIV)Th+NH$g(Bnb*Vu1Y+XioT`(K18v*g*Ri$sZd?AP+ z@>RB|vv)i@u73oekIWN}O%Hh+QX)?aqBI76oe6P)mHysD^K~^^2qC)9=+BN*aXzA) zZR+@duJGq-sZ-O61Jon1XZ@8i@RJgrm-=MjLJM4?(Q_#w@B<>(uQ3|VR1ei4jJu;1 z_O-`s*(ZkXNP))Oz;_`^{oDWvTpE4Wp>zOVs5)__t?hW-5HOvtUMx0Ay z;5R?GH~P5&&4oTCgm>u|@Zx|6VNaGER!o&p%JaZ`sdR0~G4u^X4~>Co9H7z94QMX( zY0AT!GzC{gw3S}Vl10Uo5z&id@G&nzM$QV>R;4i@gwfXq4CnfKP5nvJcz!e${JsAO z>sjlBlz%X=&7$d*jAjxL-B=j?!hq&NpAugDNGCm7rktH772j7(AwSdBjMK3!mc6XF zNJ&R47lCiiS8bqRG?U=|m|SQ1vb3C%vBs2h_&0>Z)v#RHn=G*-Xnci$HelH3^AG3a z`p(sijl)k4Ki!ISn8+Q>q{a8y`u#0tHo&Z3Z-1DpMML0Yn%>m~n#=|#aWF{M-8Y%` zM)SC~=g@;*g=kG&@#3nw#5UQYttmvedOzo|e&b-ast&uHXC$z0u-SPOydB%Sm<@c_ z->;8ggQ<&b-np4tsk$QLfx}vObTUfXcq^W`Lbt+72CcjuPkaRYNAVBB#;qDnSGw~6 P015yANkvXXu0mjfntF)l delta 778 zcmV+l1NHpm2HggbV1MXIL_t(|ob8ssZrd;r#_2@?I0Paj1cin^Lj(#&vlJ0@Xi*P- z1_uq?)`MXnL()7z;>;=9Xk$<#EpFg5W$@5?;4}0nQL<#m%3L6qg+E5T@8j{G8GDJB zc!?^Is}A-?jEy_k4xqn|;5_0T?4>e(*TFQvplMrdMNizv_kW^;DPhWXGh^E5E`cyj zvRL|UhBco-l4LXXG~0Ty1uQ@{m?LkNtS3S##7^G31%T|w4)*$^wt!{*s2{5t6;eX@ zu2n|CRd{y^z?<(oxYtjGuZ&(bxgp5(lJW*rAih|aF<2Ljqjw`AJG!d%9akU3DWs9n zyvgD5;E41b;q5l(E2Iuv5bh)OvFO!)gw zzc66A)Te~-A^!$p7K=C;sEU)CsS?J7A%w4utqnPbp<@`JGjN~9==2K%mP>tF^5iDZ zA&@B@rMIeLSutgzh*n>uXHrCe5T56uWBw+($y+t z9J%||8YmgvA_NcfYh7$høOgSfi6F6E;s*SzL3VV{~R|;4Ij-9^vbUtgIT+7(H z{M6*jt;{DQwS$@R!~t7>zr~CLEQZYvWq3>AbAO)SH3izt#wS@k9<7IOGM$a~bbZr`f8wC#w4!)00000NkvXX It^-0~f}@&qsQ>@~ diff --git a/graphics/object_events/pics/pokemon/zigzagoon.png b/graphics/object_events/pics/pokemon/zigzagoon.png index e18c0910a0f757c800792526d42b83615c9a27fc..2d847ca802210d0ecf77d7187273ea6b81605451 100644 GIT binary patch delta 627 zcmV-(0*w921;_=EV1H9dL_t(|ob8mqj^Z#7#zR9J(yX9BC#6Uk-e|>AjIzZ!&p@*Z zMTpX%q~e)q&^8=83JV%LP(-0v`y9Y=ViB!GvC>I=(ENt+e8c#UVLbKJQ$HoEV`+h& zbwBe#4F<6mh~xX2kExT+;$9;#NYY+g_5O_qlK2pktqxlGp?*ly># z6xvw)CkH}5dw-V(H?9mPyOV8?Tu0{XY?6zzHa3uL^Eu%tiL*LOL-XW1J9n}h$q{I5 zm^r14`N|+Cj8nzki9H$>1fxTmHTY&|+SiV3X`r!TO^ag`^{XAUrhe2f6pMlnF=)nvWG9X6N%_tPI4x_vQzl zHJM>KbSy@Kk=jI^Nsy#L?G({{I!h|<;#WjSvHm;NIFcD1CMFKFdY^SR^Fmzg`YB=! z&M_iW`~% z;J%tzIYaLA+Rr8rbME;yF1GMd>#&Sv?R52Mg-b;dtFPgisptH!`UfPdy0p%hZC?NY N002ovPDHLkV1kOvGA954 delta 629 zcmV-*0*d{}1n$FZTiAkAhi%q0|*@E>hhiWj%I;cu|H zV4;M@K;_?LW47_kQ4nor(1NhV&fK650~5(67Mon+SDVlC&HFyz{Lr+A9(w4zWDZOv zFf?yx-l@?jRswN+JM%sb(pfz01V%|Z?90AG`Ya8-P9RJZ?|*jgeFiwhc{_l3KpN=Y z<&3OB0W=V2K2u|at~ zUXc{HxfTLmauAyxZVZj%<`>L=Hu(x080vz6i`%T7XFA~qY20OD7`R|Na4JQ*%0RQs zaR~G=|4%l|gMZ>p7+kqA^s|#?xsEOJRW|ThMIUR(ve*JMl*C1wg`shB?9A~qSByYm z%_s?>G>`@*ri@6|eam$#oTEcpbogp$SeK40VW6;PPOD=SJvTdOPJ`&VlFSR99I|*r z`=sdb)lg$72S7O!3skP6YQBxC=2%tpW4L{14Fj?>41Wu}{6o5YHPoIkaN$?6KxMXz zx8u>LY+&~>Uawbz4I40q5aVTDbopwijo}6OcP$F2tOv*(fW1vD>GJ zcDT$DW^P+FF%^~%en|<<15Gj_l(d-b_WRFQ$xk&mTf*-xz Date: Wed, 24 Jun 2020 23:32:44 -0400 Subject: [PATCH 037/241] Fixed old graphics info collisions. --- .../pics/pokemon/azumarill_old.png | Bin 0 -> 325 bytes .../pics/pokemon/azurill_old.png | Bin 0 -> 308 bytes .../object_events/pics/pokemon/deoxys_old.png | Bin 0 -> 547 bytes .../pics/pokemon/dusclops_old.png | Bin 0 -> 640 bytes .../pics/pokemon/groudon_old.png | Bin 0 -> 1052 bytes .../object_events/pics/pokemon/ho_oh_old.png | Bin 0 -> 529 bytes .../pics/pokemon/kecleon_old.png | Bin 0 -> 345 bytes .../object_events/pics/pokemon/kirlia_old.png | Bin 0 -> 469 bytes .../object_events/pics/pokemon/kyogre_old.png | Bin 0 -> 1037 bytes .../object_events/pics/pokemon/lugia_old.png | Bin 0 -> 410 bytes .../object_events/pics/pokemon/mew_old.png | Bin 0 -> 801 bytes .../pics/pokemon/pikachu_old.png | Bin 0 -> 335 bytes .../pics/pokemon/poochyena_old.png | Bin 0 -> 674 bytes .../object_events/pics/pokemon/skitty_old.png | Bin 0 -> 332 bytes .../pics/pokemon/wingull_old.png | Bin 0 -> 354 bytes .../pics/pokemon/zigzagoon_old.png | Bin 0 -> 299 bytes spritesheet_rules.mk | 32 +-- .../object_events/object_event_graphics.h | 17 ++ .../object_event_graphics_info.h | 30 +- .../object_events/object_event_pic_tables.h | 264 ++++++++++++++---- 20 files changed, 264 insertions(+), 79 deletions(-) create mode 100644 graphics/object_events/pics/pokemon/azumarill_old.png create mode 100644 graphics/object_events/pics/pokemon/azurill_old.png create mode 100644 graphics/object_events/pics/pokemon/deoxys_old.png create mode 100644 graphics/object_events/pics/pokemon/dusclops_old.png create mode 100644 graphics/object_events/pics/pokemon/groudon_old.png create mode 100644 graphics/object_events/pics/pokemon/ho_oh_old.png create mode 100644 graphics/object_events/pics/pokemon/kecleon_old.png create mode 100644 graphics/object_events/pics/pokemon/kirlia_old.png create mode 100644 graphics/object_events/pics/pokemon/kyogre_old.png create mode 100644 graphics/object_events/pics/pokemon/lugia_old.png create mode 100644 graphics/object_events/pics/pokemon/mew_old.png create mode 100644 graphics/object_events/pics/pokemon/pikachu_old.png create mode 100644 graphics/object_events/pics/pokemon/poochyena_old.png create mode 100644 graphics/object_events/pics/pokemon/skitty_old.png create mode 100644 graphics/object_events/pics/pokemon/wingull_old.png create mode 100644 graphics/object_events/pics/pokemon/zigzagoon_old.png diff --git a/graphics/object_events/pics/pokemon/azumarill_old.png b/graphics/object_events/pics/pokemon/azumarill_old.png new file mode 100644 index 0000000000000000000000000000000000000000..84b07ea5bc12f6d737863afce821b11e24ec3c9d GIT binary patch literal 325 zcmV-L0lNN)P)2Xkl{Dhv6g#o0( zzkuL31S}A8JVSG5#6q&qteTj_dLP;iMEiO1=vQ9=sW60N2v>9jALQ~=F z?zI6U`T{1D_>I0p^FpqTY*en{^d{0v5KiQxxL}>xJ6GNoqQNyJF6n;JH+W#$1;V!P z&!@6~aX)@+?PZLjzaV2AhjJTZxnFE=(X&P8!$?9^X$hBB-UJ~5Bk0^3>K`=$=jZba X4+5IQX@&Zy00000NkvXXu0mjfFTRbR literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/azurill_old.png b/graphics/object_events/pics/pokemon/azurill_old.png new file mode 100644 index 0000000000000000000000000000000000000000..99cd25fe5c772963d5a6a530a5f5e492c0c3e748 GIT binary patch literal 308 zcmV-40n7f0P)(>tQc_K#`CSABPTz{t;aJ z6LloVNTRlMdS4>MP)bCT?0O7hzDk(@T@a-b%WOG|Zx@jX3U461LRp%nBs)v16scH< zR}me=DrW${w7tlID^y6S+9T&-u_&Htt7DQjQnt71Y>(Fli0000OV&BaoKdmuqM#f$EgQmg;~000000000=N=pC#{{R30^AuMO00055 zNklsbvFruajd$EC$5WBQn)f6jYLLi!oscF?Fe*jpS_<7yf zfwmyA5Mnzm^dqp~#k#xqIiK$ifd4ws`6FK4T2`zAF2>ex05mZ+om>ENZrYy7xswB& z6kSsY(<+y8047}f{L!-n-3$OoQo)^P5oa?10B3LKcNdiB0MhmO@$md@t^iVS{P8gT z@y!(gp!oFW{u=T;07b*yAb4eT?ur%g9UlaJ+??T^K_-a13gB_5?P$B}mN70`S9KlV z>nfmB^R-}PgmB+-D|J?r2)YbH4IFh;3M7meu*MSwtTsd;KrJ6AfYWFwA4M%J`m@Gu zvjh(ZX^v6L4>KU@mz1C-`U&UBmJ=xfHvAI}M8j&DqRBCfVAI*->YaK3f1Nn64#=PGFJ->J4i*A!+wAZP#p002ovPDHLkV1mBg=a2vZ literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/dusclops_old.png b/graphics/object_events/pics/pokemon/dusclops_old.png new file mode 100644 index 0000000000000000000000000000000000000000..fb2c85576c08e846addb2496d030ea8ebbd05d3e GIT binary patch literal 640 zcmV-`0)PF9P)x_HVh9i*)pMkzL32_dLDkjOi;I*&K~n$!{{R30E*dwM0006D zNklr;|^1v;n)FYu3NB>)xb+fyre1v;n)TcQC(H1OIe8~d`cJDXl9-Z=L(qb-&y;vu{D}Di zR7g&!CBK3#jTiA*By&(H5DxqtXtaR~P#_8?)PpUJ57{|vjzt@7(YnRwu#Ud;lw2SV zC)9&2(MZ3}(#Sb9!i41QhDNsn6liKtYXopw3uxU$ny8CR2gHcN=^!%&a&!D*lN6vp zlExzfV!bs2ctnE<1&u#q$sy@V(mrgsfR`N;Si-hjR4bqmdXC58oQn&tD?8By+yX$X zWGQLI310Y6aUO{Yk4|{XD1fE2CcYiL^$q`fUi2d%!&E@ynMztM^LcD(jN|e{^$O?@ zO*7-^hV%MJ8&t&3;3|lvmo&P$zRxW?SO3+{k)Ff#UXKw{3wc#&Cg;pwhOKSR-Tv6z ayT1Wy{ literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/groudon_old.png b/graphics/object_events/pics/pokemon/groudon_old.png new file mode 100644 index 0000000000000000000000000000000000000000..3d14c5ac9ef670f03bcf7a4b73a74ba7ffb70a48 GIT binary patch literal 1052 zcmV+%1mpXOP)!OFtG1lB4ce5V+-xBe5VL zRvuN>dFCcjAu$^)slT>zhe|(j@!`Ynf((K#!jgm2IOFRV7yM6fm}O!48@{faDf7j= zL)4sQb@>}^X@f2{|LLg4G%L!>9HLD((?TB}UvLy+nx+|EW}@1rSg3sebmyo%6(C7S z`7$%6H2}r&_}o!`q7Y)1W@iqL9Fp_{fN^5Z9mU7>0ZEk%sl3FYBmh8BP4xKO(cV%J zTvcG&fsdR9(Wsk(ulTT+BCw(7dmvFWoN1 z{L%A=Dl5A?h5x?G@0Qpn>>N2VI_@_uv_OxPrH@1wcOJh9ew~e&wOM*P`p;k zV3WiTT9tc8xJlGjYtF=RvO(tIXgFdnHkojJ^&vA$+6NszB2JKJEA$_Yxsj1hCMnN{ zUcdtO6=8Rb2gY7Nws8#*r>J~FH$IJqVghnL^7`Nt0bGnDJ{4H(-g~VE1-47*;#y`= z!`csD6v^!U@Chy9A{xKue*JB(ax&uH7HY@mubqd0OjJf$-;N5$pwmhr|DFe2F`;R!;Ktlj^)nzwj5! Wi3Dpb31zwf0000JuqQoTVrV(xQ6tU)v*-0004; zNkl1aKSZ0~k1~9RqGd z;5h;^@`*(bl}%6PdB3DR%;=HPX`&}{fUAy@D8%zXB8TqAmx9q>haNOTff67wg}8Tz z77l`epCJ&ZgxD6PB(Hktp7y}DVE(xN=^>VNsGvj;Cznwb_C13Vf4)~0XjY7DYb0{o zqO!rjwmj^YltlqON&=i{3->(~&T8S9bdCWf9`;m)M76t-LVsNi0fV#P>DuGWS3qaK zmBM)6Q2??9XFHC*UPNsxg|VwveSZMHt`5M9-nCno!cesU?GZcAWpDWCMDJ46r7#qV zZ*m+^l0vppKjNlHQj!#AI98&T;$z#|vVp6Q2ZamU`j|w=*&@4=E5O49d;b>!3`IHX7@piL8MGump0dzNr)Dt;4??|&L=TW7#66CCfs*pzE)@to ziu@Em1OVFNpkcpvYH`rBljAeh+@B6w9a8}ay%$n33L7CzJ>uXK-8A}a#kUX4#?;}h zcw<96TSIO{7lwdo8+`zlZ5q#(30+xQd}zD literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/kirlia_old.png b/graphics/object_events/pics/pokemon/kirlia_old.png new file mode 100644 index 0000000000000000000000000000000000000000..bac74a9ccb0c3ddca0031d49393edf4b97cd3f92 GIT binary patch literal 469 zcmV;`0V@89P)_3iGUR1;0Csr4{D?gSU0GQQ1>l`CIV83g8>FReAFX)Ws#0G zLQjv@Ljg!34hEP88pGCR2(V$RArGVw2LntW+~(^6#16Vou4pI$Qiy}TG_X4TL^qV@ z9cs3sFGc`|IOq#mp7--MwMjjsi?e1M5+H>*=nK$mUmthl_WIozU=RmGA+z=_uCP0R z6aQYtU?@F_tfm4=tN<+2e&37IR$teHU;Y!KLHfDU`g;^rjl2H>AOolhChTD500000 LNkvXXu0mjfBc{lN literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/kyogre_old.png b/graphics/object_events/pics/pokemon/kyogre_old.png new file mode 100644 index 0000000000000000000000000000000000000000..32f67aafa2c7399296e29c63dc751fd8fd4dc7f4 GIT binary patch literal 1037 zcmV+o1oHcdP)x_HVh9i*)pMkzL32_dLDkjOi;I*&K~n$!{{R30E*dwM000A+ zNkl>O2!%tDgNCia#P&&Y%Ex=E#VFnrJa+h=fkiYuCn+y!lo+?SJK+1r2&=~`;Ghjxq(ee=h z1?`e2OhH0~SV9GJ&T%&A#gG7HHS^&H5YejzBv@96GQ!XS2EBN)XEGpQvFsCqRinUm z)6}4%C_PdKXnUOz;O>c`N+3#2^6ERwxNbn%G6e=JdnlONLl4?s^AS9*NQS6Fl^e`| z`$&43Hk4Ecu=@%JK&Ks`+cX=Z!pjecn6H!AkPfA-?6g}1=dN#Nz2+lWBD$2_iiLlu zYs`1J#Cuwz19WSIJ)qYNNIB*8C!iHuauojY?X;#O4BpezrcAy22habh@7x=m^K3j~ zMgZ%`_tS#~5L&sr5NVs^cTu{#5H(K6tZm9PQe*(7>>rN@iBuz;%gWvbF`qcYda7B+ zi(b!~!m}w$24IcScINRwZGzQqPUlO3Qb&_dZ1{U!3Mxz43_2#wDVMd8lyj9J=a`vF z5NzKjd>2NbqlD`UufkHmX#~xnV>ofjdjSHgJgvIIFA@y~3q@rtyphmRU$#={(QT;rruEv}a)UbIeUvnIasrpp?Hk?55miylCm z@+u4XqD^I&M45`$*UOit?R6HvW`LLKS_`UR(D$woF2G0f@Fy6$PBcHAr|`?e!(Y(S zb>i#4$l${RFGxEOp(*&Mp$C8q(70>`${klauTY<_mu-ylch+wzY|d8)pkAnL3ElOh zfHs-yKhy0D?DFMR_|HAvzh@J9hu3B$DegSPIQ>st3u;^Sr_lA+3Ih>rfF1)YXQ?FO6UR%KC=l$jeFxgY6QzM$C zjz{I*{;g@}{wCkc!B2lWlijg;LL`Usyk|7}#qIb0xC8zJ0efB}kMMV<00000NkvXX Hu0mjf-?r%o literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/lugia_old.png b/graphics/object_events/pics/pokemon/lugia_old.png new file mode 100644 index 0000000000000000000000000000000000000000..1dfc6858b90f830a7433edd0333e1d548ce231e0 GIT binary patch literal 410 zcmV;L0cHM)P)N?QN_{{R30pUU_40003c zNklo&!yBvaJXt+lm<0mE#ZF2&L}S31dH&|J)-mNoSTcG*Q879`dX$3?JY*#?i0(1xiA4Uhi0Qy&p#Y~mHBE*7d zxs-Hn6wxqZ96PF(t)%6}nusFCnP_{z;gYUg_MjTR7Kam(wo6x5&f0lvI{d0{8rbO77JtKs3g@3E+V*V*oFJu0D-%TWPINfX}njbu+m7 zAXQl(2InDtV~cv443=DH0GTKU0;NaMb3V4C;;{J#@PTZsS9pC11Y%I}P78QzhTqOwHk-ZN%FxWKQmYNqcG z8S8oJ!kFhh&)Xmg3)FJ$lKw{Zg%ZyI8kcLVby?8chAVnlpvt94x}o|UU(GGRRC?}0 z&&{LLje1W*#?aV^6h;vTn>@1xpi)Z z{OX3!Xg_R%E(7Uwb}9rxXK4WiDU<8#N)ou9bQRxiZ9N6;!Z@zCfDJ+5fK}gu;F+-C zX{689zyjC3=PMQ?mG^v1Xu(^g?s6j-FenKWByBmj-5LaQJyIv=bG46tHo`c%E)xjw zpqE8o18DSduE(bYl(jC0;AbO@V}FeTcEbP*w@9}LGKC9sZHhJl;Szo?LicR6+O#l6 z0UQia_jCC=An2_K^BRJN1RTrxF$Ss6bNPZ}ZCW_3D8RNeK;3`+^csMs2=lt0?2tMc zZ(pi5>>e9cJ@ptA1PJ0z)cv>H*A*nx|H!hG@4|H0=zQ=MDJVySCK$MHIpqepmf#V?{Z^fTKqMlFd%_C5wbd- zaWf+bHft(62I3VyHG2~-Bp6*dJ`?X93JvV$&bb=vZhwQD!XROrrptlS9S<=m8rhHp z#{k>5*g1o6o&iH)U}4A%ED%6e&N`8UT33gb?6LCkN7RS;j*M&o;nb}F`BB(SC$bf% zE(79%5X8o0hyr#Jrk&`wofJZf42Y3iBO9WS0D{*sh^pL4GNdsXVu1mvxPthxo%pNg fr**%s$_zgMxIqo;le;3~00000NkvXXu0mjf-EwIE literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/pikachu_old.png b/graphics/object_events/pics/pokemon/pikachu_old.png new file mode 100644 index 0000000000000000000000000000000000000000..b2d15ef1796db2730dd20195815ad1320908a576 GIT binary patch literal 335 zcmV-V0kHmwP)}%LU h(VUL_Tk$vlpdadYey3dYkz)V=002ovPDHLkV1jjXb&}c1jbOMS{IYQlt%Xf*c{u-a(B>VUd8L zyf!%;h6W5bL7;(cfSl2v_eT=V*dBZAvBw^J?D0Rw_^$!z`A&g*g8&rT+$WHRlvmU5 z8GCaDpkJ%oMwB`r00tl$A_3qvV+(3Y0Qj*jXI5NmKm-#91c287xFH27#Aw93EC81) zbgT~re`yd2CJrb-u~=IpJp#ZM;iAp~a03e*jF1SKHXx3u0}5c4hYvM!L;%=S9m>A- zas=R)eEA08uBfsNV!_k_1<-?(O_u{;9D3IcE{-X{Z}nLnp{dG1KpVt@sRIJQ8zrS0 z{D=vF%a=kNe4YX*<(2@$(BvEv!NfrV(0-NjWy%4#btOda*A#$1D>b-{2C@xe!NfrV z(0)HYewlIrj8B`v_Oj;c3~-9Lmqa(68hl$`>z!Opc zV?X`0_^sOj&|9~T00!wZ4Q3hwkZG)SQ$jP`8U#L9-~{nWX}}yod7u=)S`1)10FCoX zcM9cC1iJHj>jul$fLv@1&^eSi;=`!XM2)mo;)dPp*O!mFGc(Tf8Rt&~s6U^>@9T!L zRv`iRlyx@x_p)ve<<-oi`ZXt6H|F#42Q}2iWNS9J3IG5A07*qo IM6N<$f`1AoeEb>!3;?-l@<0^vmPcgqKQbsnhYUqwauT2nl97i5MSkTD(Z;`&WC9o+ zLK{3vCy_S5+X$A*#%G~X7l0*ggj!xVV$pXaT+>V3QvEbBr+RYnQ=n+SaF6kBg1C|2 z)Eu;EbBrfeQca|+wyN5$9d^eL7mZbfBTfv>gdmCu?zyQz8M*YV8~D3N6}_DwoFVLS z#q3}ThqbPC!&!T|v4E?D5*=~=J zZ=n5b@)lE+QdgA!kp?y!<^0R z8{F`4V~&bMfnm79G-9Nflh%Qj--9T(fp*lXW;zjf!!^s8o0N-L6lb_pih;DpH>?rI zY+~QXgjZ$2*n2R{YUb5X6wQ&I1H9dQR+}S~W-i=iFw9UF^U2q18>ssJK(yG?`O7L* z-j5h&y_>20Eh00I7i8wi#$r6IC#!>Lk~zQg3j;C25_4nS$p8QV07*qoM6N<$g0sh? AwEzGB literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/zigzagoon_old.png b/graphics/object_events/pics/pokemon/zigzagoon_old.png new file mode 100644 index 0000000000000000000000000000000000000000..2eaf2403d5f7eed52a53ce9c66333a9201188ab7 GIT binary patch literal 299 zcmV+`0o4A9P)UA`ws)C`3EQd2PUbd7Lrtn)b?ZxTlk%i)*8SV?U&4$v%om^ zB_OGLWY^-}aPPf9j6mLBo`4DQXuz1VV(l;tCMgSNHY@bxJ{I5=q9=+N1LCsquIfp+ zF!orIAXP~iDntV7L?cfNTjx6KcM+n|<~Es-D*IOF8iynYda0ljFJ+(l^irxHI9cFFXQfw2))%DXkXv;kKRE(q+R%c2weaG002ovPDHLkV1nZVe((SQ literal 0 HcmV?d00001 diff --git a/spritesheet_rules.mk b/spritesheet_rules.mk index 5ed754386..dfda9e636 100644 --- a/spritesheet_rules.mk +++ b/spritesheet_rules.mk @@ -405,55 +405,55 @@ $(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_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_tree.4bpp: %.4bpp: %.png @@ -462,10 +462,10 @@ $(OBJEVENTGFXDIR)/pokemon/sudowoodo_tree.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 diff --git a/src/data/object_events/object_event_graphics.h b/src/data/object_events/object_event_graphics.h index 14db20a2b..7204232bc 100755 --- a/src/data/object_events/object_event_graphics.h +++ b/src/data/object_events/object_event_graphics.h @@ -767,3 +767,20 @@ const u32 gObjectEventPic_Groudon[] = INCBIN_U32("graphics/object_events/pics/po 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_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"); diff --git a/src/data/object_events/object_event_graphics_info.h b/src/data/object_events/object_event_graphics_info.h index faf958743..71cfa2533 100755 --- a/src/data/object_events/object_event_graphics_info.h +++ b/src/data/object_events/object_event_graphics_info.h @@ -97,7 +97,7 @@ const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_VigorothCarryingBo const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_VigorothFacingAway = {0xFFFF, OBJ_EVENT_PAL_TAG_VIGOROTH, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_VigorothFacingAway, gDummySpriteAffineAnimTable}; const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_BirchsBag = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_2, OBJ_EVENT_PAL_TAG_NONE, 128, 16, 16, 3, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_16x16, gObjectEventSpriteOamTables_16x16, gObjectEventImageAnimTable_Inanimate, gObjectEventPicTable_BirchsBag, gDummySpriteAffineAnimTable}; const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_EnemyZigzagoon = {0xFFFF, OBJ_EVENT_PAL_TAG_ZIGZAGOON, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_EnemyZigzagoon, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Poochyena = {0xFFFF, OBJ_EVENT_PAL_TAG_POOCHYENA, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_Poochyena, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Poochyena = {0xFFFF, OBJ_EVENT_PAL_TAG_POOCHYENA, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_PoochyenaOld, gDummySpriteAffineAnimTable}; const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Artist = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_4, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 5, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_Artist, gDummySpriteAffineAnimTable}; const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_RivalBrendanNormal = {0xFFFF, OBJ_EVENT_PAL_TAG_BRENDAN, OBJ_EVENT_PAL_TAG_BRIDGE_REFLECTION, 256, 16, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_BrendanMayNormal, gObjectEventPicTable_BrendanNormal, gDummySpriteAffineAnimTable}; const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_RivalBrendanMachBike = {0xFFFF, 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, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_BrendanMachBike, gDummySpriteAffineAnimTable}; @@ -204,18 +204,18 @@ const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Fossil = {0xFFFF, const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Regirock = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_2, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 3, SHADOW_SIZE_M, TRUE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_Regi, gDummySpriteAffineAnimTable}; const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Regice = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_3, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 4, SHADOW_SIZE_M, TRUE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_Regi, gDummySpriteAffineAnimTable}; const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Registeel = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_4, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 5, SHADOW_SIZE_M, TRUE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_Regi, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Skitty = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_1, OBJ_EVENT_PAL_TAG_NONE, 128, 16, 16, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x16, gObjectEventSpriteOamTables_16x16, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_Skitty, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Kecleon = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_3, OBJ_EVENT_PAL_TAG_NONE, 128, 16, 16, 4, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x16, gObjectEventSpriteOamTables_16x16, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_Kecleon, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Skitty = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_1, OBJ_EVENT_PAL_TAG_NONE, 128, 16, 16, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x16, gObjectEventSpriteOamTables_16x16, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_SkittyOld, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Kecleon = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_3, OBJ_EVENT_PAL_TAG_NONE, 128, 16, 16, 4, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x16, gObjectEventSpriteOamTables_16x16, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_KecleonOld, gDummySpriteAffineAnimTable}; const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Kyogre2 = {0xFFFF, OBJ_EVENT_PAL_TAG_KYOGRE, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_KyogreFront, gObjectEventRotScalAnimTable_KyogreGroudon}; const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Groudon2 = {0xFFFF, OBJ_EVENT_PAL_TAG_GROUDON, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_GroudonFront, gObjectEventRotScalAnimTable_KyogreGroudon}; const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Rayquaza2 = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_3, OBJ_EVENT_PAL_TAG_NONE, 2048, 64, 64, 4, SHADOW_SIZE_M, FALSE, TRUE, TRACKS_FOOT, &gObjectEventBaseOam_64x64, gObjectEventSpriteOamTables_64x64, gObjectEventImageAnimTable_Rayquaza2, gObjectEventPicTable_Rayquaza, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Zigzagoon = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_1, OBJ_EVENT_PAL_TAG_NONE, 128, 16, 16, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x16, gObjectEventSpriteOamTables_16x16, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_Zigzagoon, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Pikachu = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_2, OBJ_EVENT_PAL_TAG_NONE, 128, 16, 16, 3, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x16, gObjectEventSpriteOamTables_16x16, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_Pikachu, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Azumarill = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_1, OBJ_EVENT_PAL_TAG_NONE, 128, 16, 16, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x16, gObjectEventSpriteOamTables_16x16, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_Azumarill, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Wingull = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_1, OBJ_EVENT_PAL_TAG_NONE, 128, 16, 16, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x16, gObjectEventSpriteOamTables_16x16, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_Wingull, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Zigzagoon = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_1, OBJ_EVENT_PAL_TAG_NONE, 128, 16, 16, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x16, gObjectEventSpriteOamTables_16x16, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_ZigzagoonOld, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Pikachu = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_2, OBJ_EVENT_PAL_TAG_NONE, 128, 16, 16, 3, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x16, gObjectEventSpriteOamTables_16x16, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_PikachuOld, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Azumarill = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_1, OBJ_EVENT_PAL_TAG_NONE, 128, 16, 16, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x16, gObjectEventSpriteOamTables_16x16, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_AzumarillOld, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Wingull = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_1, OBJ_EVENT_PAL_TAG_NONE, 128, 16, 16, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x16, gObjectEventSpriteOamTables_16x16, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_WingullOld, gDummySpriteAffineAnimTable}; const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_KecleonBridgeShadow = {0xFFFF, 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, gObjectEventSpriteOamTables_16x16, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_Kecleon, gDummySpriteAffineAnimTable}; const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_TuberMSwimming = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_2, OBJ_EVENT_PAL_TAG_NONE, 128, 16, 16, 3, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x16, gObjectEventSpriteOamTables_16x16, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_TuberMSwimming, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Azurill = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_1, OBJ_EVENT_PAL_TAG_NONE, 128, 16, 16, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x16, gObjectEventSpriteOamTables_16x16, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_Azurill, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Azurill = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_1, OBJ_EVENT_PAL_TAG_NONE, 128, 16, 16, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x16, gObjectEventSpriteOamTables_16x16, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_AzurillOld, gDummySpriteAffineAnimTable}; const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Mom = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_4, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 5, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_Mom, gDummySpriteAffineAnimTable}; const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_LinkBrendan = {0xFFFF, OBJ_EVENT_PAL_TAG_MAY, OBJ_EVENT_PAL_TAG_BRIDGE_REFLECTION, 256, 16, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_BrendanMayNormal, gObjectEventPicTable_BrendanNormal, gDummySpriteAffineAnimTable}; const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_LinkMay = {0xFFFF, OBJ_EVENT_PAL_TAG_MAY, OBJ_EVENT_PAL_TAG_BRIDGE_REFLECTION, 256, 16, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_BrendanMayNormal, gObjectEventPicTable_MayNormal, gDummySpriteAffineAnimTable}; @@ -223,14 +223,14 @@ const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Juan = {0xFFFF, OB const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Scott = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_1, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_Scott, gDummySpriteAffineAnimTable}; const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_MysteryEventDeliveryman = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_1, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_MysteryEventDeliveryman, gDummySpriteAffineAnimTable}; const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Statue = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_4, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 5, SHADOW_SIZE_M, TRUE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Inanimate, gObjectEventPicTable_Statue, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Kirlia = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_3, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 4, SHADOW_SIZE_S, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_Kirlia, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Dusclops = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_4, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 5, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_Dusclops, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Kirlia = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_3, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 4, SHADOW_SIZE_S, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_KirliaOld, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Dusclops = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_4, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 5, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_DusclopsOld, gDummySpriteAffineAnimTable}; const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_UnionRoomAttendant = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_3, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 4, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_UnionRoomAttendant, gDummySpriteAffineAnimTable}; const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Red = {0xFFFF, OBJ_EVENT_PAL_TAG_RED_LEAF, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_Red, gDummySpriteAffineAnimTable}; const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Leaf = {0xFFFF, OBJ_EVENT_PAL_TAG_RED_LEAF, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_Leaf, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Sudowoodo = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_3, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 4, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_Sudowoodo, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Mew = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_1, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_Mew, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Deoxys = {0xFFFF, OBJ_EVENT_PAL_TAG_DEOXYS, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_Deoxys, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Sudowoodo = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_3, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 4, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_SudowoodoTree, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Mew = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_1, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_MewOld, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Deoxys = {0xFFFF, OBJ_EVENT_PAL_TAG_DEOXYS, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_DeoxysOld, gDummySpriteAffineAnimTable}; const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_BirthIslandStone = {0xFFFF, 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, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Inanimate, gObjectEventPicTable_BirthIslandStone, gDummySpriteAffineAnimTable}; const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Anabel = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_4, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 5, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_Anabel, gDummySpriteAffineAnimTable}; const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Tucker = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_1, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_Tucker, gDummySpriteAffineAnimTable}; @@ -241,8 +241,8 @@ const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Lucy = {0xFFFF, OB const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Brandon = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_3, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 4, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_Brandon, gDummySpriteAffineAnimTable}; const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_RubySapphireBrendan = {0xFFFF, OBJ_EVENT_PAL_TAG_RS_BRENDAN, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_RubySapphireBrendan, gDummySpriteAffineAnimTable}; const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_RubySapphireMay = {0xFFFF, OBJ_EVENT_PAL_TAG_RS_MAY, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_RubySapphireMay, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Lugia = {0xFFFF, OBJ_EVENT_PAL_TAG_LUGIA, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_Lugia, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_HoOh = {0xFFFF, OBJ_EVENT_PAL_TAG_HO_OH, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_HoOh, gObjectEventPicTable_HoOh, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Lugia = {0xFFFF, OBJ_EVENT_PAL_TAG_LUGIA, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_LugiaOld, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_HoOh = {0xFFFF, OBJ_EVENT_PAL_TAG_HO_OH, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_HoOh, gObjectEventPicTable_HoOhOld, gDummySpriteAffineAnimTable}; const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_AnimatedBall = {0xFFFF, OBJ_EVENT_PAL_TAG_3, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_AnimatedBall, gDummySpriteAffineAnimTable}; const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Follower = {0xFFFF, OBJ_EVENT_PAL_TAG_DYNAMIC, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_Togetic, gDummySpriteAffineAnimTable}; diff --git a/src/data/object_events/object_event_pic_tables.h b/src/data/object_events/object_event_pic_tables.h index 5267e3189..9218e2ac6 100755 --- a/src/data/object_events/object_event_pic_tables.h +++ b/src/data/object_events/object_event_pic_tables.h @@ -1698,51 +1698,51 @@ const struct SpriteFrameImage gObjectEventPicTable_Maxie[] = { }; const struct SpriteFrameImage gObjectEventPicTable_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), }; const struct SpriteFrameImage gObjectEventPicTable_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), }; const struct SpriteFrameImage gObjectEventPicTable_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), }; const struct SpriteFrameImage gObjectEventPicTable_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), }; const struct SpriteFrameImage gObjectEventPicTable_Fossil[] = { @@ -5255,20 +5255,20 @@ const struct SpriteFrameImage gObjectEventPicTable_Latios[] = { overworld_frame(gObjectEventPic_Latios, 4, 4, 5), }; const struct SpriteFrameImage gObjectEventPicTable_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), + overworld_frame(gObjectEventPic_KyogreOld, 4, 4, 0), + overworld_frame(gObjectEventPic_KyogreOld, 4, 4, 1), + overworld_frame(gObjectEventPic_KyogreOld, 4, 4, 2), + overworld_frame(gObjectEventPic_KyogreOld, 4, 4, 3), + overworld_frame(gObjectEventPic_KyogreOld, 4, 4, 4), + overworld_frame(gObjectEventPic_KyogreOld, 4, 4, 5), }; const struct SpriteFrameImage gObjectEventPicTable_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), + overworld_frame(gObjectEventPic_GroudonOld, 4, 4, 0), + overworld_frame(gObjectEventPic_GroudonOld, 4, 4, 1), + overworld_frame(gObjectEventPic_GroudonOld, 4, 4, 2), + overworld_frame(gObjectEventPic_GroudonOld, 4, 4, 3), + overworld_frame(gObjectEventPic_GroudonOld, 4, 4, 4), + overworld_frame(gObjectEventPic_GroudonOld, 4, 4, 5), }; const struct SpriteFrameImage gObjectEventPicTable_Rayquaza[] = { overworld_frame(gObjectEventPic_Rayquaza, 8, 8, 0), @@ -5295,6 +5295,162 @@ const struct SpriteFrameImage gObjectEventPicTable_Deoxys[] = { overworld_frame(gObjectEventPic_Deoxys, 4, 4, 5), }; +const struct SpriteFrameImage gObjectEventPicTable_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), +}; + +const struct SpriteFrameImage gObjectEventPicTable_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), +}; + +const struct SpriteFrameImage gObjectEventPicTable_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_Dusclops, 2, 4, 8), +}; + +const struct SpriteFrameImage gObjectEventPicTable_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), +}; + +const struct SpriteFrameImage gObjectEventPicTable_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), +}; + +const struct SpriteFrameImage gObjectEventPicTable_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), +}; + +const struct SpriteFrameImage gObjectEventPicTable_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), +}; + +const struct SpriteFrameImage gObjectEventPicTable_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), +}; + +const struct SpriteFrameImage gObjectEventPicTable_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), +}; + +const struct SpriteFrameImage gObjectEventPicTable_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), +}; + +const struct SpriteFrameImage gObjectEventPicTable_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), +}; + +const struct SpriteFrameImage gObjectEventPicTable_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), +}; + +const struct SpriteFrameImage gObjectEventPicTable_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), +}; + const struct SpriteFrameImage gObjectEventPicTable_RubySapphireBrendan[] = { overworld_frame(gObjectEventPic_RubySapphireBrendanNormal, 2, 4, 0), overworld_frame(gObjectEventPic_RubySapphireBrendanNormal, 2, 4, 1), @@ -5307,6 +5463,18 @@ const struct SpriteFrameImage gObjectEventPicTable_RubySapphireBrendan[] = { overworld_frame(gObjectEventPic_RubySapphireBrendanNormal, 2, 4, 8), }; +const struct SpriteFrameImage gObjectEventPicTable_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), +}; + const struct SpriteFrameImage gObjectEventPicTable_RubySapphireMay[] = { overworld_frame(gObjectEventPic_RubySapphireMayNormal, 2, 4, 0), overworld_frame(gObjectEventPic_RubySapphireMayNormal, 2, 4, 1), From b5c8b0f494dd9d92ef0dadcffa5bbf847335cbee Mon Sep 17 00:00:00 2001 From: Ariel Antonitis Date: Fri, 26 Jun 2020 00:30:01 -0400 Subject: [PATCH 038/241] Added more follower messages. --- data/scripts/follower.inc | 22 +++++++++++++++++++++- include/event_scripts.h | 2 ++ src/event_object_movement.c | 8 ++++++-- 3 files changed, 29 insertions(+), 3 deletions(-) diff --git a/data/scripts/follower.inc b/data/scripts/follower.inc index f071ed93b..2c9a6315d 100644 --- a/data/scripts/follower.inc +++ b/data/scripts/follower.inc @@ -1,5 +1,5 @@ gText_FollowerLovesYou:: - .string "{STR_VAR_1} loves you!$" + .string "{STR_VAR_1} jumps and grins at you.\pIts expression is welling up with love!$" gText_FollowerLostInThought:: .string "{STR_VAR_1} seems lost in thought.$" @@ -28,6 +28,12 @@ gText_FollowerMetLocation:: gText_FollowerSkeptical:: .string "{STR_VAR_1} gives you a skeptical look...\pWhat could it mean?$" +gText_FollowerAppraising:: + .string "{STR_VAR_1} looks you up and down...\pIt carefully follows\nbehind you.$" + +gText_FollowerHappyWalk:: + .string "{STR_VAR_1} skips happily behind you!$" + .macro playfirstmoncry callfunc ScrFunc_playfirstmoncry .endm @@ -56,6 +62,20 @@ EventScript_FollowerEnd:: release end +EventScript_FollowerHappyWalk:: + bufferlivemonspeciesname 0 + playfirstmoncry + msgbox gText_FollowerHappyWalk, MSGBOX_DEFAULT + waitmoncry + return + +EventScript_FollowerAppraising:: + bufferlivemonspeciesname 0 + playfirstmoncry + msgbox gText_FollowerAppraising, MSGBOX_DEFAULT + waitmoncry + return + EventScript_FollowerSkeptical:: bufferlivemonspeciesname 0 playfirstmoncry diff --git a/include/event_scripts.h b/include/event_scripts.h index 66b481b92..714a8ffc5 100644 --- a/include/event_scripts.h +++ b/include/event_scripts.h @@ -10,6 +10,8 @@ extern const u8 EventScript_FollowerHappyRain[]; extern const u8 EventScript_FollowerMetLocation[]; extern const u8 EventScript_FollowerEnd[]; extern const u8 EventScript_FollowerSkeptical[]; +extern const u8 EventScript_FollowerAppraising[]; +extern const u8 EventScript_FollowerHappyWalk[]; extern const u8 EnterPokeballMovement[]; extern const u8 EventScript_TestSignpostMsg[]; diff --git a/src/event_object_movement.c b/src/event_object_movement.c index a9726ce17..15850aa1b 100644 --- a/src/event_object_movement.c +++ b/src/event_object_movement.c @@ -1737,9 +1737,13 @@ bool8 ScrFunc_getfolloweraction(struct ScriptContext *ctx) // Essentially a big return FALSE; } friendship = GetMonData(mon, MON_DATA_FRIENDSHIP); - if (friendship < 25) + if (friendship <= 80) ScriptCall(ctx, EventScript_FollowerSkeptical); - else if (friendship == 255) + else if (friendship <= 170) + ScriptCall(ctx, EventScript_FollowerAppraising); + else if (friendship < 255) + ScriptCall(ctx, EventScript_FollowerHappyWalk); + else // Max friendship ScriptCall(ctx, EventScript_FollowerLovesYou); return FALSE; } From 85995c8a922b55ac32c9f3865587dfaa40e2e6b0 Mon Sep 17 00:00:00 2001 From: Ariel Antonitis Date: Fri, 26 Jun 2020 02:16:16 -0400 Subject: [PATCH 039/241] Modified front palette script. --- front_palette.py | 69 +++++++++++++++++++++++++++++++++++++++++++++++ gen3.png | Bin 350836 -> 0 bytes 2 files changed, 69 insertions(+) create mode 100644 front_palette.py delete mode 100644 gen3.png diff --git a/front_palette.py b/front_palette.py new file mode 100644 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/gen3.png b/gen3.png deleted file mode 100644 index ad2f2fb90cabc1ec4000d7c930e9910ca101823f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 350836 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 z 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 L9pxHDtH}QcT5CX< From 12e3b4efadafdef43bba26ca1ce897135808779c Mon Sep 17 00:00:00 2001 From: Ariel Antonitis Date: Wed, 17 Jun 2020 21:08:15 -0400 Subject: [PATCH 040/241] Added alpha-blending shadows. --- include/field_effect_helpers.h | 1 + src/event_object_movement.c | 5 +++++ src/field_effect_helpers.c | 26 ++++++++++++++++++++------ src/field_weather_effect.c | 3 +-- 4 files changed, 27 insertions(+), 8 deletions(-) diff --git a/include/field_effect_helpers.h b/include/field_effect_helpers.h index 9b7b6ffd5..004be8e19 100644 --- a/include/field_effect_helpers.h +++ b/include/field_effect_helpers.h @@ -15,6 +15,7 @@ bool8 sub_8155DA0(struct ObjectEvent *); void sub_8155D78(struct ObjectEvent *); void StartAshFieldEffect(s16, s16, u16, s16); 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*); diff --git a/src/event_object_movement.c b/src/event_object_movement.c index 15850aa1b..5a22b3f59 100644 --- a/src/event_object_movement.c +++ b/src/event_object_movement.c @@ -8650,6 +8650,10 @@ 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; @@ -8660,6 +8664,7 @@ static void DoFlaggedGroundEffects(struct ObjectEvent *objEvent, struct Sprite * for (i = 0; i < ARRAY_COUNT(sGroundEffectFuncs); i++, flags >>= 1) if (flags & 1) sGroundEffectFuncs[i](objEvent, sprite); + GroundEffect_Shadow(objEvent, sprite); } void filters_out_some_ground_effects(struct ObjectEvent *objEvent, u32 *flags) diff --git a/src/field_effect_helpers.c b/src/field_effect_helpers.c index ec5796ccc..994a8ada2 100755 --- a/src/field_effect_helpers.c +++ b/src/field_effect_helpers.c @@ -34,12 +34,20 @@ static void sub_81556E8(struct ObjectEvent *, struct Sprite *); static void CreateBobbingEffect(struct ObjectEvent *, struct Sprite *, struct Sprite *); static void sub_8155850(struct Sprite *); static u32 ShowDisguiseFieldEffect(u8, u8, u8); +u32 FldEff_Shadow(void); #define sReflectionObjEventId data[0] #define sReflectionObjEventLocalId data[1] #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; @@ -141,7 +149,7 @@ static void LoadObjectRegularReflectionPalette(struct ObjectEvent *objectEvent, } sprite->oam.paletteNum = paletteNum; // Apply alpha blending - SetGpuReg(REG_OFFSET_BLDALPHA, sprite->data[7] == FALSE ? BLDALPHA_BLEND(8, 12) : BLDALPHA_BLEND(8, 8)); + // SetGpuReg(REG_OFFSET_BLDALPHA, sprite->data[7] == FALSE ? BLDALPHA_BLEND(8, 12) : BLDALPHA_BLEND(8, 8)); sprite->oam.objMode = 1; // BLEND } @@ -293,12 +301,19 @@ u32 FldEff_Shadow(void) u8 objectEventId; const struct ObjectEventGraphicsInfo *graphicsInfo; u8 spriteId; - + u8 i; + for (i = 0; i < MAX_SPRITES; i++) { + // 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 (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]; @@ -325,12 +340,11 @@ void UpdateShadowFieldEffect(struct Sprite *sprite) sprite->oam.priority = linkedSprite->oam.priority; sprite->pos1.x = linkedSprite->pos1.x; sprite->pos1.y = linkedSprite->pos1.y + sprite->data[3]; - if (!objectEvent->active || !objectEvent->hasShadow + sprite->invisible = linkedSprite->invisible; + if (!objectEvent->active || MetatileBehavior_IsPokeGrass(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); } diff --git a/src/field_weather_effect.c b/src/field_weather_effect.c index 320a10670..4281117d1 100644 --- a/src/field_weather_effect.c +++ b/src/field_weather_effect.c @@ -155,6 +155,7 @@ void Sunny_InitVars(void) { gWeatherPtr->gammaTargetIndex = 0; gWeatherPtr->gammaStepDelay = 20; + Weather_SetBlendCoeffs(8, 12); } void Sunny_InitAll(void) @@ -2581,5 +2582,3 @@ static void UpdateRainCounter(u8 newWeather, u8 oldWeather) && (newWeather == WEATHER_RAIN || newWeather == WEATHER_RAIN_THUNDERSTORM)) IncrementGameStat(GAME_STAT_GOT_RAINED_ON); } - - From 42d5fe07fad481e79b779848d8abba2d93736b99 Mon Sep 17 00:00:00 2001 From: Ariel Antonitis Date: Sun, 21 Jun 2020 22:26:41 -0400 Subject: [PATCH 041/241] Start of implementation for time of day filter. --- common_syms/overworld.txt | 1 + .../rustboro/metatile_attributes.bin | Bin 700 -> 700 bytes graphics/object_events/palettes/light.pal | 19 +++ graphics/object_events/pics/misc/light.png | Bin 0 -> 3064 bytes include/event_object_movement.h | 1 + include/global.h | 2 + include/overworld.h | 8 +- include/palette.h | 1 + .../field_effect_object_template_pointers.h | 1 + src/data/field_effects/field_effect_objects.h | 6 + .../object_events/object_event_graphics.h | 9 +- src/event_object_movement.c | 100 ++++++++++++- src/field_effect_helpers.c | 6 +- src/field_weather.c | 2 + src/field_weather_effect.c | 8 +- src/overworld.c | 71 ++++++++- src/palette.c | 141 +++++++++++++++++- 17 files changed, 354 insertions(+), 22 deletions(-) create mode 100644 graphics/object_events/palettes/light.pal create mode 100644 graphics/object_events/pics/misc/light.png diff --git a/common_syms/overworld.txt b/common_syms/overworld.txt index e136f5444..483336209 100644 --- a/common_syms/overworld.txt +++ b/common_syms/overworld.txt @@ -6,3 +6,4 @@ gFieldCallback gFieldCallback2 gLocalLinkPlayerId gFieldLinkPlayerCount +gTimeOfDay diff --git a/data/tilesets/secondary/rustboro/metatile_attributes.bin b/data/tilesets/secondary/rustboro/metatile_attributes.bin index e2b728c657ac47e17dd2881b8dc1b3408baeb5db..56b728b08c8aa8566c69bc7c04bf414980f3c773 100644 GIT binary patch delta 14 VcmdnPx`%aw3Ns4>%SQF7OaLD*1F--A delta 13 UcmdnPx`%aw%ES*M8!cLx04BTzI{*Lx diff --git a/graphics/object_events/palettes/light.pal b/graphics/object_events/palettes/light.pal new file mode 100644 index 000000000..3beca89bd --- /dev/null +++ b/graphics/object_events/palettes/light.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +110 198 165 +255 213 18 +255 214 38 +254 217 39 +254 218 53 +255 220 65 +255 221 76 +255 223 86 +254 225 95 +254 228 104 +254 229 112 +254 230 120 +255 232 132 +255 235 148 +255 237 162 +255 240 176 diff --git a/graphics/object_events/pics/misc/light.png b/graphics/object_events/pics/misc/light.png new file mode 100644 index 0000000000000000000000000000000000000000..d1a0402d102cf52e47a584f2feb56230d5b7debf GIT binary patch literal 3064 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 e8c5f3ad6 (Added all 386 follower sprites.) const u32 gObjectEventPic_AnimatedBall[] = INCBIN_U32("graphics/object_events/pics/misc/animated_ball.4bpp"); const u16 gObjectEventPalette31[] = INCBIN_U16("graphics/object_events/palettes/31.gbapal"); const u32 gObjectEventPic_Bulbasaur[] = INCBIN_U32("graphics/object_events/pics/pokemon/bulbasaur.4bpp"); @@ -784,3 +778,4 @@ const u32 gObjectEventPic_LugiaOld[] = INCBIN_U32("graphics/object_events/pics/p 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 u16 gObjectEventPaletteLight[] = INCBIN_U16("graphics/object_events/palettes/light.gbapal"); diff --git a/src/event_object_movement.c b/src/event_object_movement.c index 5a22b3f59..348d65fdc 100644 --- a/src/event_object_movement.c +++ b/src/event_object_movement.c @@ -451,6 +451,7 @@ const u8 gInitialMovementTypeFacingDirections[] = { #define OBJ_EVENT_PAL_TAG_RS_BRENDAN 0x1122 #define OBJ_EVENT_PAL_TAG_RS_MAY 0x1123 #define OBJ_EVENT_PAL_TAG_DYNAMIC 0x1124 +#define OBJ_EVENT_PAL_TAG_LIGHT 0x8001 #define OBJ_EVENT_PAL_TAG_NONE 0x11FF #include "data/object_events/object_event_graphics_info_pointers.h" @@ -498,6 +499,7 @@ static const struct SpritePalette sObjectEventSpritePalettes[] = { {gObjectEventPal_RubySapphireBrendan, OBJ_EVENT_PAL_TAG_RS_BRENDAN}, {gObjectEventPal_RubySapphireMay, OBJ_EVENT_PAL_TAG_RS_MAY}, {gObjectEventPalette0, OBJ_EVENT_PAL_TAG_DYNAMIC}, + {gObjectEventPaletteLight, OBJ_EVENT_PAL_TAG_LIGHT}, {NULL, 0x0000}, }; @@ -1753,6 +1755,87 @@ bool8 ScrFunc_followerfly(struct ScriptContext *ctx) { return FALSE; } +// 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; + bool8 finished = TRUE; + // Ripped from RemoveObjectEventIfOutsideView + if (x >= left && x <= right + && y >= top && y <= bottom) + finished = FALSE; + if (x >= left && x <= right + && y >= top && y <= bottom) + finished = FALSE; + finished = finished ? finished : gTimeOfDay != TIME_OF_DAY_NIGHT; + if (finished) { + sheetTileStart = sprite->sheetTileStart; + paletteNum = sprite->oam.paletteNum; + DestroySprite(sprite); + FieldEffectFreeTilesIfUnused(sheetTileStart); + FieldEffectFreePaletteIfUnused(paletteNum); + return; + } + + if (gPlayerAvatar.tileTransitionState) { + Weather_SetBlendCoeffs(7, 12); + sprite->invisible = FALSE; + } else { + Weather_SetBlendCoeffs(12, 12); + sprite->invisible = gSaveBlock2Ptr->playTimeVBlanks & 1; + } +} + +// Spawn a light at a map coordinate based on metatile behavior +static void SpawnLightSprite(s16 x, s16 y, s16 camX, s16 camY, u32 behavior) { + struct Sprite *sprite; + 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; + } + sprite = &gSprites[CreateSprite(&gFieldEffectObjectTemplate_BallLight, 0, 0, 0)]; + UpdateSpritePaletteByTemplate(&gFieldEffectObjectTemplate_BallLight, sprite); + sub_8092FF0(x + camX, y + camY, &sprite->pos1.x, &sprite->pos1.y); + sprite->data[6] = x; + sprite->data[7] = y; + sprite->affineAnims = gDummySpriteAffineAnimTable; + sprite->affineAnimBeginning = TRUE; + 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->coordOffsetEnabled = TRUE; + sprite->pos1.x += 8; + sprite->pos1.y += 22 + sprite->centerToCornerVecY; +} + +void TrySpawnLightSprites(s16 camX, s16 camY) { + s16 left = gSaveBlock1Ptr->pos.x - 2; + s16 right = gSaveBlock1Ptr->pos.x + 17; + s16 top = gSaveBlock1Ptr->pos.y; + s16 bottom = gSaveBlock1Ptr->pos.y + 16; + s16 x, y; + u32 behavior; + if (gTimeOfDay != TIME_OF_DAY_NIGHT) + return; + for (x = left; x <= right; x++) { + for (y = top; y <= bottom; y++) { + behavior = MapGridGetMetatileBehaviorAt(x, y); + if (behavior == 0x04) // TODO: Use an actual constant + SpawnLightSprite(x, y, camX, camY, behavior); + } + } +} + void TrySpawnObjectEvents(s16 cameraX, s16 cameraY) { u8 i; @@ -1789,6 +1872,7 @@ void TrySpawnObjectEvents(s16 cameraX, s16 cameraY) TrySpawnObjectEventTemplate(template, gSaveBlock1Ptr->location.mapNum, gSaveBlock1Ptr->location.mapGroup, cameraX, cameraY); } } + TrySpawnLightSprites(cameraX, cameraY); } void RemoveObjectEventsOutsideView(void) @@ -1829,7 +1913,7 @@ static void RemoveObjectEventIfOutsideView(struct ObjectEvent *objectEvent) RemoveObjectEvent(objectEvent); } -void sub_808E16C(s16 x, s16 y) +void sub_808E16C(s16 x, s16 y) // Called when returning to field { u8 i; @@ -1842,6 +1926,7 @@ void sub_808E16C(s16 x, s16 y) } } CreateReflectionEffectSprites(); + TrySpawnLightSprites(x, y); } static void sub_808E1B8(u8 objectEventId, s16 x, s16 y) @@ -1934,7 +2019,13 @@ static u8 UpdateSpritePalette(const struct SpritePalette * spritePalette, struct sprite->inUse = FALSE; FieldEffectFreePaletteIfUnused(sprite->oam.paletteNum); sprite->inUse = TRUE; - sprite->oam.paletteNum = LoadSpritePalette(spritePalette); + if (IndexOfSpritePaletteTag(spritePalette->tag) == 0xFF) { + sprite->oam.paletteNum = LoadSpritePalette(spritePalette); + UpdateSpritePaletteWithTime(sprite->oam.paletteNum); + } else { + sprite->oam.paletteNum = LoadSpritePalette(spritePalette); + } + return sprite->oam.paletteNum; } @@ -2186,11 +2277,14 @@ void Unused_LoadObjectEventPaletteSet(u16 *paletteTags) static u8 sub_808E8F4(const struct SpritePalette *spritePalette) { + u8 paletteNum; if (IndexOfSpritePaletteTag(spritePalette->tag) != 0xFF) { return 0xFF; } - return LoadSpritePalette(spritePalette); + paletteNum = LoadSpritePalette(spritePalette); + UpdateSpritePaletteWithTime(paletteNum); + return paletteNum; } void PatchObjectPalette(u16 paletteTag, u8 paletteSlot) diff --git a/src/field_effect_helpers.c b/src/field_effect_helpers.c index 994a8ada2..05ade09d9 100755 --- a/src/field_effect_helpers.c +++ b/src/field_effect_helpers.c @@ -146,11 +146,10 @@ static void LoadObjectRegularReflectionPalette(struct ObjectEvent *objectEvent, } paletteNum = LoadSpritePalette(&filteredPalette); UpdateSpritePaletteWithWeather(paletteNum); + UpdateSpritePaletteWithTime(paletteNum); } sprite->oam.paletteNum = paletteNum; - // Apply alpha blending - // SetGpuReg(REG_OFFSET_BLDALPHA, sprite->data[7] == FALSE ? BLDALPHA_BLEND(8, 12) : BLDALPHA_BLEND(8, 8)); - sprite->oam.objMode = 1; // BLEND + sprite->oam.objMode = 1; // Alpha blending } #define HIGH_BRIDGE_PAL_TAG 0x4010 @@ -200,6 +199,7 @@ static void UpdateObjectReflectionSprite(struct Sprite *reflectionSprite) } paletteNum = LoadSpritePalette(&filteredPalette); UpdateSpritePaletteWithWeather(paletteNum); + UpdateSpritePaletteWithTime(paletteNum); } reflectionSprite->oam.paletteNum = paletteNum; } diff --git a/src/field_weather.c b/src/field_weather.c index 655e24590..73f22d56c 100644 --- a/src/field_weather.c +++ b/src/field_weather.c @@ -254,6 +254,7 @@ static void Task_WeatherMain(u8 taskId) static void None_Init(void) { + Weather_SetBlendCoeffs(8, 12); // Indoor shadows gWeatherPtr->gammaTargetIndex = 0; gWeatherPtr->gammaStepDelay = 0; } @@ -860,6 +861,7 @@ void LoadCustomWeatherSpritePalette(const u16 *palette) { LoadPalette(palette, 0x100 + gWeatherPtr->weatherPicSpritePalIndex * 16, 32); UpdateSpritePaletteWithWeather(gWeatherPtr->weatherPicSpritePalIndex); + UpdateSpritePaletteWithTime(gWeatherPtr->weatherPicSpritePalIndex); } static void LoadDroughtWeatherPalette(u8 *gammaIndexPtr, u8 *a1) diff --git a/src/field_weather_effect.c b/src/field_weather_effect.c index 4281117d1..0d0b71fe2 100644 --- a/src/field_weather_effect.c +++ b/src/field_weather_effect.c @@ -478,7 +478,7 @@ void Rain_InitVars(void) gWeatherPtr->rainSpriteVisibleDelay = 8; gWeatherPtr->isDownpour = FALSE; gWeatherPtr->targetRainSpriteCount = 10; - gWeatherPtr->gammaTargetIndex = 3; + gWeatherPtr->gammaTargetIndex = gTimeOfDay == TIME_OF_DAY_DAY ? 3 : 0; gWeatherPtr->gammaStepDelay = 20; SetRainStrengthFromSoundEffect(SE_RAIN); } @@ -1020,7 +1020,7 @@ void Thunderstorm_InitVars(void) gWeatherPtr->rainSpriteVisibleDelay = 4; gWeatherPtr->isDownpour = FALSE; gWeatherPtr->targetRainSpriteCount = 16; - gWeatherPtr->gammaTargetIndex = 3; + gWeatherPtr->gammaTargetIndex = gTimeOfDay == TIME_OF_DAY_DAY ? 3 : 0; gWeatherPtr->gammaStepDelay = 20; gWeatherPtr->weatherGfxLoaded = FALSE; // duplicate assignment gWeatherPtr->thunderTriggered = 0; @@ -1116,6 +1116,8 @@ void Thunderstorm_Main(void) if (--gWeatherPtr->unknown_6E6 == 0) { sub_80ABC48(3); + if (gTimeOfDay != TIME_OF_DAY_DAY) + BlendPalettesWithTime(0xFFFFFFFF); gWeatherPtr->unknown_6EA = 1; if (--gWeatherPtr->unknown_6EC != 0) { @@ -1152,7 +1154,7 @@ void Thunderstorm_Main(void) case 13: if (--gWeatherPtr->unknown_6E6 == 0) { - sub_80ABC7C(19, 3, 5); + gTimeOfDay == TIME_OF_DAY_DAY ? sub_80ABC7C(19, 3, 5) : BlendPalettesWithTime(0xFFFFFFFF); gWeatherPtr->initStep++; } break; diff --git a/src/overworld.c b/src/overworld.c index 369db2173..32bd469cf 100644 --- 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" @@ -175,6 +176,8 @@ static u16 (*sPlayerKeyInterceptCallback)(u32); static bool8 sUnknown_03000E18; static u8 sRfuKeepAliveTimer; +u8 static gTimeOfDayState; + // IWRAM common u16 *gBGTilemapBuffers1; u16 *gBGTilemapBuffers2; @@ -185,6 +188,8 @@ bool8 (*gFieldCallback2)(void); u8 gLocalLinkPlayerId; // This is our player id in a multiplayer mode. u8 gFieldLinkPlayerCount; +u8 gTimeOfDay; + // EWRAM vars EWRAM_DATA static u8 sObjectEventLoadFlag = 0; EWRAM_DATA struct WarpData gLastUsedWarp = {0}; @@ -197,6 +202,7 @@ EWRAM_DATA static u16 sAmbientCrySpecies = 0; EWRAM_DATA static bool8 sIsAmbientCryWaterMon = FALSE; EWRAM_DATA struct LinkPlayerObjectEvent gLinkPlayerObjectEvents[4] = {0}; + // const rom data static const struct WarpData sDummyWarpData = { @@ -811,6 +817,7 @@ void LoadMapFromCameraTransition(u8 mapGroup, u8 mapNum) RoamerMove(); DoCurrentWeather(); ResetFieldTasksArgs(); + BlendPalettesWithTime(0xFFFFFFFF); RunOnResumeMapScript(); if (gMapHeader.regionMapSectionId != MAPSEC_BATTLE_FRONTIER @@ -1442,6 +1449,59 @@ void CB1_Overworld(void) DoCB1_Overworld(gMain.newKeys, gMain.heldKeys); } +struct TimeOfDayBlend { + u8 coeff:4; + u16 blendColor; +}; + +static const struct TimeOfDayBlend sTimeOfDayBlendVars[] = +{ + [TIME_OF_DAY_NIGHT] = {.coeff = 10, .blendColor = 0x1400}, + [TIME_OF_DAY_TWILIGHT] = {.coeff = 4, .blendColor = 0x155D}, + [TIME_OF_DAY_DAY] = {.coeff = 0, .blendColor = 0}, +}; + +u8 UpdateTimeOfDay(void) { + RtcCalcLocalTime(); + if (gLocalTime.hours >= 20 || gLocalTime.hours < 4) + return gTimeOfDay = TIME_OF_DAY_NIGHT; + else if (gLocalTime.hours >= 10 && gLocalTime.hours < 20) + return gTimeOfDay = TIME_OF_DAY_DAY; + return gTimeOfDay = TIME_OF_DAY_TWILIGHT; +} + +static bool8 MapHasNaturalLight(u8 mapType) { // Weather a map type is naturally lit/outside + return mapType == MAP_TYPE_TOWN || mapType == MAP_TYPE_CITY || mapType == MAP_TYPE_ROUTE; +} + +static bool8 FadePalettesWithTime(void) { + gTimeOfDayState = 0; + gTimeOfDay = UpdateTimeOfDay(); + if (MapHasNaturalLight(gMapHeader.mapType)) { + ResetPaletteFade(); + BeginTimeOfDayPaletteFade(0xFFFFFFFF, 0, 16, sTimeOfDayBlendVars[gTimeOfDay].coeff, sTimeOfDayBlendVars[gTimeOfDay].blendColor); + } +} + +void BlendPalettesWithTime(u32 palettes) { + // Only blend if not transitioning between times and the map type allows + if (gTimeOfDayState == 0 && MapHasNaturalLight(gMapHeader.mapType)) { + u8 i; + for (i = 0; i < 16; i++) { + if (GetSpritePaletteTagByPaletteNum(i) & 0x8000) // Don't blend special sprite palette tags + palettes &= ~(1 << (i + 16)); + } + palettes &= ~0xE000; // Don't blend tile palettes [13,15] + gTimeOfDay = gTimeOfDay > TIME_OF_DAY_MAX ? TIME_OF_DAY_MAX : gTimeOfDay; + BlendPalettes(palettes, sTimeOfDayBlendVars[gTimeOfDay].coeff, sTimeOfDayBlendVars[gTimeOfDay].blendColor); + } +} + +u8 UpdateSpritePaletteWithTime(u8 paletteNum) { + BlendPalettesWithTime(1 << (paletteNum + 16)); + return paletteNum; +} + static void OverworldBasic(void) { ScriptContext2_RunScript(); @@ -1463,12 +1523,16 @@ void CB2_OverworldBasic(void) void CB2_Overworld(void) { + u32 *debugPtr = (u32*) 0x0203de00; bool32 fading = (gPaletteFade.active != 0); + *debugPtr = (u32) &gTimeOfDay; if (fading) SetVBlankCallback(NULL); OverworldBasic(); - if (fading) - SetFieldVBlankCallback(); + if (fading) { + SetFieldVBlankCallback(); + return; + } } void SetMainCallback1(MainCallback cb) @@ -1564,6 +1628,7 @@ static void CB2_LoadMap2(void) DoMapLoadLoop(&gMain.state); SetFieldVBlankCallback(); SetMainCallback1(CB1_Overworld); + FadePalettesWithTime(); SetMainCallback2(CB2_Overworld); } @@ -1620,6 +1685,7 @@ static void CB2_ReturnToFieldLocal(void) if (ReturnToFieldLocal(&gMain.state)) { SetFieldVBlankCallback(); + FadePalettesWithTime(); SetMainCallback2(CB2_Overworld); } } @@ -1966,7 +2032,6 @@ static bool32 ReturnToFieldLocal(u8 *state) case 3: return TRUE; } - return FALSE; } diff --git a/src/palette.c b/src/palette.c index cbaae8da2..a367a5ed4 100644 --- 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. @@ -50,6 +51,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); @@ -123,6 +125,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(); @@ -199,6 +203,53 @@ 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, u16 blendColor) +{ + u8 temp; + u16 color = blendColor; + + 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.blendColor = color; + gPaletteFade.active = 1; + gPaletteFade.mode = TIME_OF_DAY_FADE; + + 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; + } +} + bool8 unref_sub_80A1C1C(u32 a1, u8 a2, u8 a3, u8 a4, u16 a5) { ReadPlttIntoBuffers(); @@ -405,6 +456,94 @@ static u8 GetPaletteNumByUid(u16 uid) return 16; } +// Like normal palette fade, but respects sprite/tile palettes immune to time of day fading +static u8 UpdateTimeOfDayPaletteFade(void) // Like normal, but respects sprite palettes immune to fading +{ + u8 paletteNum; + u16 paletteOffset; + u16 selectedPalettes; + + 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; + } + + for (paletteNum = 0; paletteNum < 16; paletteNum++, selectedPalettes >>= 1, paletteOffset += 16) { + if (selectedPalettes & 1) { + if (gPaletteFade.yDec) { + if (gPaletteFade.objPaletteToggle) { // sprite palettes + if (gPaletteFade.y >= gPaletteFade.targetY || GetSpritePaletteTagByPaletteNum(paletteNum) & 0x8000) + BlendPalette(paletteOffset, 16, gPaletteFade.y, gPaletteFade.blendColor); + // tile palettes + } else if (gPaletteFade.y >= gPaletteFade.targetY || (paletteNum >= 13 && paletteNum <= 15)) { + BlendPalette(paletteOffset, 16, gPaletteFade.y, gPaletteFade.blendColor); + } + } else { + BlendPalette(paletteOffset, 16, 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; @@ -586,7 +725,6 @@ static u8 UpdateFastPaletteFade(void) if (IsSoftwarePaletteFadeFinishing()) return gPaletteFade.active ? PALETTE_FADE_STATUS_ACTIVE : PALETTE_FADE_STATUS_DONE; - if (gPaletteFade.objPaletteToggle) { @@ -721,7 +859,6 @@ static u8 UpdateFastPaletteFade(void) gPaletteFade.mode = NORMAL_FADE; gPaletteFade.softwareFadeFinishing = 1; } - // 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; From 2d9c42110f32bc1fb8211b5f265d669d1ebeba95 Mon Sep 17 00:00:00 2001 From: Ariel Antonitis Date: Fri, 10 Jul 2020 03:52:32 -0400 Subject: [PATCH 042/241] Added nature colors to stats. --- src/pokemon_summary_screen.c | 49 ++++++++++++++++++++++-------------- 1 file changed, 30 insertions(+), 19 deletions(-) diff --git a/src/pokemon_summary_screen.c b/src/pokemon_summary_screen.c index 7dcfd7b99..6a1ddfaf5 100644 --- a/src/pokemon_summary_screen.c +++ b/src/pokemon_summary_screen.c @@ -3336,23 +3336,36 @@ static void PrintRibbonCount(void) PrintTextOnWindow(AddWindowFromTemplateList(sPageSkillsTemplate, PSS_DATA_WINDOW_SKILLS_RIBBON_COUNT), text, x, 1, 0, 0); } +// Based on https://www.pokecommunity.com/showpost.php?p=10024409&postcount=21 +static void BufferStat(u8 *dst, s8 natureMod, u32 stat, u32 strId, u32 n) { + static const u8 textNatureMinus[] = _("{COLOR_HIGHLIGHT_SHADOW}{BLUE}{TRANSPARENT}{07}"); // Blue + static const u8 textNaturePlus[] = _("{COLOR_HIGHLIGHT_SHADOW}{05}{TRANSPARENT}{06}"); // Red + static const u8 textNatureNone[] = _("{COLOR_HIGHLIGHT_SHADOW}{01}{TRANSPARENT}{DARK_GREY}"); // Black + u8 *txtPtr; + if (natureMod == 0) + txtPtr = StringCopy(dst, textNatureNone); + else if (natureMod > 0) + txtPtr = StringCopy(dst, textNaturePlus); + else + txtPtr = StringCopy(dst, textNatureMinus); + + ConvertIntToDecimalStringN(txtPtr, stat, STR_CONV_MODE_RIGHT_ALIGN, n); + DynamicPlaceholderTextUtil_SetPlaceholderPtr(strId, dst); +} + static void BufferLeftColumnStats(void) { - u8 *currentHPString = Alloc(8); - u8 *maxHPString = Alloc(8); - u8 *attackString = Alloc(8); - u8 *defenseString = Alloc(8); - - ConvertIntToDecimalStringN(currentHPString, sMonSummaryScreen->summary.currentHP, STR_CONV_MODE_RIGHT_ALIGN, 3); - ConvertIntToDecimalStringN(maxHPString, sMonSummaryScreen->summary.maxHP, STR_CONV_MODE_RIGHT_ALIGN, 3); - ConvertIntToDecimalStringN(attackString, sMonSummaryScreen->summary.atk, STR_CONV_MODE_RIGHT_ALIGN, 7); - ConvertIntToDecimalStringN(defenseString, sMonSummaryScreen->summary.def, STR_CONV_MODE_RIGHT_ALIGN, 7); + u8 *currentHPString = Alloc(20); + u8 *maxHPString = Alloc(20); + u8 *attackString = Alloc(20); + u8 *defenseString = Alloc(20); + const s8 *natureMod = gNatureStatTable[sMonSummaryScreen->summary.nature]; DynamicPlaceholderTextUtil_Reset(); - DynamicPlaceholderTextUtil_SetPlaceholderPtr(0, currentHPString); - DynamicPlaceholderTextUtil_SetPlaceholderPtr(1, maxHPString); - DynamicPlaceholderTextUtil_SetPlaceholderPtr(2, attackString); - DynamicPlaceholderTextUtil_SetPlaceholderPtr(3, defenseString); + BufferStat(currentHPString, 0, sMonSummaryScreen->summary.currentHP, 0, 3); + BufferStat(maxHPString, 0, sMonSummaryScreen->summary.maxHP, 1, 3); + BufferStat(attackString, natureMod[STAT_ATK - 1], sMonSummaryScreen->summary.atk, 2, 7); + BufferStat(defenseString, natureMod[STAT_DEF - 1], sMonSummaryScreen->summary.def, 3, 7); DynamicPlaceholderTextUtil_ExpandPlaceholders(gStringVar4, sStatsLeftColumnLayout); Free(currentHPString); @@ -3368,14 +3381,12 @@ static void PrintLeftColumnStats(void) static void BufferRightColumnStats(void) { - ConvertIntToDecimalStringN(gStringVar1, sMonSummaryScreen->summary.spatk, STR_CONV_MODE_RIGHT_ALIGN, 3); - ConvertIntToDecimalStringN(gStringVar2, sMonSummaryScreen->summary.spdef, STR_CONV_MODE_RIGHT_ALIGN, 3); - ConvertIntToDecimalStringN(gStringVar3, sMonSummaryScreen->summary.speed, STR_CONV_MODE_RIGHT_ALIGN, 3); + const s8 *natureMod = gNatureStatTable[sMonSummaryScreen->summary.nature]; DynamicPlaceholderTextUtil_Reset(); - DynamicPlaceholderTextUtil_SetPlaceholderPtr(0, gStringVar1); - DynamicPlaceholderTextUtil_SetPlaceholderPtr(1, gStringVar2); - DynamicPlaceholderTextUtil_SetPlaceholderPtr(2, gStringVar3); + BufferStat(gStringVar1, natureMod[STAT_SPATK - 1], sMonSummaryScreen->summary.spatk, 0, 3); + BufferStat(gStringVar2, natureMod[STAT_SPDEF - 1], sMonSummaryScreen->summary.spdef, 1, 3); + BufferStat(gStringVar3, natureMod[STAT_SPEED - 1], sMonSummaryScreen->summary.speed, 2, 3); DynamicPlaceholderTextUtil_ExpandPlaceholders(gStringVar4, sStatsRightColumnLayout); } From 676261a0e02b5dd4325474130d00fa1202ec7a13 Mon Sep 17 00:00:00 2001 From: Ariel Antonitis Date: Sat, 11 Jul 2020 04:24:50 -0400 Subject: [PATCH 043/241] Fixed bug applying time filter to followers. --- src/event_object_movement.c | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/src/event_object_movement.c b/src/event_object_movement.c index 348d65fdc..ab9c6dad5 100644 --- a/src/event_object_movement.c +++ b/src/event_object_movement.c @@ -1633,13 +1633,19 @@ static void FollowerSetGraphics(struct ObjectEvent *objectEvent, u16 species, u8 objectEvent->extra.mon.shiny = shiny; if (graphicsInfo->paletteTag1 == OBJ_EVENT_PAL_TAG_DYNAMIC) { // Use palette from species palette table struct Sprite *sprite = &gSprites[objectEvent->spriteId]; + // 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]; // Free palette if otherwise unused sprite->inUse = FALSE; FieldEffectFreePaletteIfUnused(sprite->oam.paletteNum); sprite->inUse = TRUE; - LoadCompressedSpritePalette(spritePalette); - sprite->oam.paletteNum = IndexOfSpritePaletteTag(spritePalette->tag); // Tag is always present + if (IndexOfSpritePaletteTag(spritePalette->tag) == 0xFF) { // Load compressed palette + LoadCompressedSpritePalette(spritePalette); + sprite->oam.paletteNum = IndexOfSpritePaletteTag(spritePalette->tag); // Tag is always present + UpdateSpritePaletteWithTime(sprite->oam.paletteNum); + } else + sprite->oam.paletteNum = IndexOfSpritePaletteTag(spritePalette->tag); // Tag is always present } } From 9952a47a64a86c31aa55fbd397f65d4401780a81 Mon Sep 17 00:00:00 2001 From: Ariel Antonitis Date: Sat, 11 Jul 2020 04:46:08 -0400 Subject: [PATCH 044/241] Fixed follower behavior when seen by trainers. --- src/event_object_lock.c | 3 +++ src/trainer_see.c | 11 ----------- 2 files changed, 3 insertions(+), 11 deletions(-) diff --git a/src/event_object_lock.c b/src/event_object_lock.c index dec2d7906..a7ae3a357 100644 --- a/src/event_object_lock.c +++ b/src/event_object_lock.c @@ -147,6 +147,7 @@ static void Task_FreezeObjectAndPlayer(u8 taskId) void FreezeForApproachingTrainers(void) { u8 trainerObjectId1, trainerObjectId2, taskId; + struct ObjectEvent *followerObj = GetFollowerObject(); trainerObjectId1 = GetChosenApproachingTrainerObjectEventId(0); if (gNoOfApproachingTrainers == 2) @@ -184,6 +185,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/trainer_see.c b/src/trainer_see.c index b87e4dcb5..082b92f2c 100644 --- a/src/trainer_see.c +++ b/src/trainer_see.c @@ -462,22 +462,11 @@ static bool8 TrainerSeeIdle(u8 taskId, struct Task *task, struct ObjectEvent *tr static bool8 TrainerExclamationMark(u8 taskId, struct Task *task, struct ObjectEvent *trainerObj) { u8 direction; - struct ObjectEvent *followerObj = GetFollowerObject(); ObjectEventGetLocalIdAndMap(trainerObj, &gFieldEffectArguments[0], &gFieldEffectArguments[1], &gFieldEffectArguments[2]); FieldEffectStart(FLDEFF_EXCLAMATION_MARK_ICON); direction = GetFaceDirectionMovementAction(trainerObj->facingDirection); ObjectEventSetHeldMovement(trainerObj, direction); - if (followerObj) { - struct ObjectEvent *playerObj = &gObjectEvents[gPlayerAvatar.objectEventId]; - s16 x = playerObj->currentCoords.x; - s16 y = playerObj->currentCoords.y; - // Move back player's location by facing direction - MoveCoords(GetOppositeDirection(playerObj->facingDirection), &x, &y); - direction = GetDirectionToFace(followerObj->previousCoords.x, followerObj->previousCoords.y, x, y); - followerObj->singleMovementActive = FALSE; - ObjectEventSetHeldMovement(followerObj, GetWalkNormalMovementAction(direction)); - } task->tFuncId++; return TRUE; } From 8dd1811ce5576cc1e82e58cb2cae00bc31145479 Mon Sep 17 00:00:00 2001 From: Ariel Antonitis Date: Sun, 28 Feb 2021 20:40:43 -0500 Subject: [PATCH 045/241] Updated follower messages. Added remote build scripts/workflows. Fixed followers getting stuck when entering doors. --- .github/workflows/buildrom.yml | 24 ++++++++++ .gitignore | 1 + data/scripts/follower.inc | 75 +++++++++++++++++++------------ include/event_scripts.h | 80 ++++++++++++++++++---------------- include/global.fieldmap.h | 2 +- remote_build.sh | 9 ++++ src/event_object_movement.c | 68 +++++++++++++++++------------ src/field_effect.c | 14 +++--- src/field_screen_effect.c | 10 +++++ 9 files changed, 181 insertions(+), 102 deletions(-) create mode 100644 .github/workflows/buildrom.yml create mode 100644 remote_build.sh diff --git a/.github/workflows/buildrom.yml b/.github/workflows/buildrom.yml new file mode 100644 index 000000000..cd98c8daf --- /dev/null +++ b/.github/workflows/buildrom.yml @@ -0,0 +1,24 @@ +name: Build ROM + +on: + push: + tags: + - 'v*' + +jobs: + build_rom: + runs-on: ubuntu-latest + container: + image: arantonitis/devkitgba + steps: + - uses: actions/checkout@v2 + - name: Build & install agbcc + run: | + cd .. + git clone --depth 1 https://github.com/pret/agbcc + cd agbcc + ./build.sh + ./install.sh ../pokeemerald + - name: Build ROM + run: | + make diff --git a/.gitignore b/.gitignore index baa27796b..4abcf9a2c 100644 --- a/.gitignore +++ b/.gitignore @@ -34,5 +34,6 @@ porymap.project.cfg *.a .fuse_hidden* .ccls-cache/* +.ropeproject/ overworld/ *.sna diff --git a/data/scripts/follower.inc b/data/scripts/follower.inc index 2c9a6315d..c3e32fe3f 100644 --- a/data/scripts/follower.inc +++ b/data/scripts/follower.inc @@ -1,5 +1,5 @@ gText_FollowerLovesYou:: - .string "{STR_VAR_1} jumps and grins at you.\pIts expression is welling up with love!$" + .string "{STR_VAR_1} is regarding you with\nadoration!$" gText_FollowerLostInThought:: .string "{STR_VAR_1} seems lost in thought.$" @@ -7,8 +7,8 @@ gText_FollowerLostInThought:: gText_FollowerDefault:: .string "ERROR 404: Script not found.$" -gText_FollowerHasWetFeet:: - .string "{STR_VAR_1} frowns at you. It shuffles\nits wet feet.$" +gText_FollowerUnhappyToBeWet:: + .string "{STR_VAR_1} looks unhappy to be wet.$" gText_FollowerSplashesAround:: .string "{STR_VAR_1} splashes around happily!$" @@ -23,17 +23,29 @@ gText_FollowerHappyRain:: .string "{STR_VAR_1} seems to be happy\nabout the rain!$" gText_FollowerMetLocation:: - .string "{STR_VAR_1} is looking around fondly.\pIt seems familiar with this place.$" + .string "{STR_VAR_1} looks around fondly.\nIt seems familiar with this place.$" gText_FollowerSkeptical:: - .string "{STR_VAR_1} gives you a skeptical look...\pWhat could it mean?$" + .string "{STR_VAR_1} looks skeptical...\pWhat could it mean?$" gText_FollowerAppraising:: - .string "{STR_VAR_1} looks you up and down...\pIt carefully follows\nbehind you.$" + .string "{STR_VAR_1} carefully follows behind.$" gText_FollowerHappyWalk:: .string "{STR_VAR_1} skips happily behind you!$" +gText_FollowerAboutToFall:: + .string "{STR_VAR_1} seems to be about\nto fall over!$" + +gText_FollowerTryingToKeepUp:: + .string "{STR_VAR_1} is trying very hard\nto keep up with you...$" + +gText_FollowerIsShivering:: + .string "{STR_VAR_1} is shivering.$" + +gText_FollowerBurnPainful:: + .string "{STR_VAR_1}'s burn looks painful!$'" + .macro playfirstmoncry callfunc ScrFunc_playfirstmoncry .endm @@ -46,6 +58,8 @@ callfunc ScrFunc_bufferlivemonspeciesname EventScript_Follower:: lock faceplayer + bufferlivemonspeciesname 0 + playfirstmoncry callfunc ScrFunc_getfolloweraction checkpartymove MOVE_FLY compare VAR_RESULT 6 @@ -63,29 +77,21 @@ EventScript_FollowerEnd:: end EventScript_FollowerHappyWalk:: - bufferlivemonspeciesname 0 - playfirstmoncry msgbox gText_FollowerHappyWalk, MSGBOX_DEFAULT waitmoncry return EventScript_FollowerAppraising:: - bufferlivemonspeciesname 0 - playfirstmoncry msgbox gText_FollowerAppraising, MSGBOX_DEFAULT waitmoncry return EventScript_FollowerSkeptical:: - bufferlivemonspeciesname 0 - playfirstmoncry msgbox gText_FollowerSkeptical, MSGBOX_DEFAULT waitmoncry return EventScript_FollowerMetLocation:: - bufferlivemonspeciesname 0 - playfirstmoncry applymovement 0xFE Common_Movement_QuestionMark waitmoncry waitmovement 0xFE @@ -93,49 +99,60 @@ EventScript_FollowerMetLocation:: return EventScript_FollowerUnhappyFace:: - bufferlivemonspeciesname 0 - playfirstmoncry msgbox gText_FollowerUnhappyFace, MSGBOX_DEFAULT waitmoncry return EventScript_FollowerHappyRain:: - bufferlivemonspeciesname 0 - playfirstmoncry msgbox gText_FollowerHappyRain, MSGBOX_DEFAULT waitmoncry return -EventScript_FollowerHasWetFeet:: - bufferlivemonspeciesname 0 - playfirstmoncry - msgbox gText_FollowerHasWetFeet, MSGBOX_DEFAULT +EventScript_FollowerUnhappyToBeWet:: + msgbox gText_FollowerUnhappyToBeWet, MSGBOX_DEFAULT waitmoncry return EventScript_FollowerSplashesAbout:: - bufferlivemonspeciesname 0 - playfirstmoncry applymovement 0xFE FollowerSplashMovement waitmovement 0xFE msgbox gText_FollowerSplashesAround, MSGBOX_DEFAULT return EventScript_FollowerLovesYou:: - playfirstmoncry applymovement 0xFE ContestHall_Movement_Heart waitmovement 0xFE waitmoncry - bufferlivemonspeciesname 0 msgbox gText_FollowerLovesYou, MSGBOX_DEFAULT return +EventScript_FollowerAboutToFall:: + msgbox gText_FollowerAboutToFall, MSGBOX_DEFAULT + waitmoncry + return + +EventScript_FollowerTryingToKeepUp:: + msgbox gText_FollowerTryingToKeepUp, MSGBOX_DEFAULT + waitmoncry + return + +EventScript_FollowerIsShivering:: + msgbox gText_FollowerIsShivering, MSGBOX_DEFAULT + waitmoncry + return + +EventScript_FollowerBurnPainful:: + msgbox gText_FollowerBurnPainful, MSGBOX_DEFAULT + waitmoncry + return + EnterPokeballMovement:: .byte 0x9F @ EnterPokeball step_end -FollowerSplashMovement:: - jump_in_place_left_right - jump_in_place_left_right +FollowerSplashMovement:: @ defined in movement.inc + jump_in_place_down + delay_4 + jump_in_place_down face_player step_end diff --git a/include/event_scripts.h b/include/event_scripts.h index 714a8ffc5..0f12c689b 100644 --- a/include/event_scripts.h +++ b/include/event_scripts.h @@ -2,7 +2,7 @@ #define GUARD_EVENT_SCRIPTS_H extern const u8 EventScript_Follower[]; -extern const u8 EventScript_FollowerHasWetFeet[]; +extern const u8 EventScript_FollowerUnhappyToBeWet[]; extern const u8 EventScript_FollowerSplashesAbout[]; extern const u8 EventScript_FollowerLovesYou[]; extern const u8 EventScript_FollowerUnhappyFace[]; @@ -12,6 +12,10 @@ extern const u8 EventScript_FollowerEnd[]; extern const u8 EventScript_FollowerSkeptical[]; extern const u8 EventScript_FollowerAppraising[]; extern const u8 EventScript_FollowerHappyWalk[]; +extern const u8 EventScript_FollowerAboutToFall[]; +extern const u8 EventScript_FollowerTryingToKeepUp[]; +extern const u8 EventScript_FollowerIsShivering[]; +extern const u8 EventScript_FollowerBurnPainful[]; extern const u8 EnterPokeballMovement[]; extern const u8 EventScript_TestSignpostMsg[]; @@ -253,48 +257,48 @@ extern const u8 gTVWhatsNo1InHoennTodayText05[]; extern const u8 gTVWhatsNo1InHoennTodayText06[]; extern const u8 gTVWhatsNo1InHoennTodayText07[]; extern const u8 gTVWhatsNo1InHoennTodayText08[]; -extern const u8 TVSecretBaseSecrets_Text_Intro[]; +extern const u8 TVSecretBaseSecrets_Text_Intro[]; extern const u8 TVSecretBaseSecrets_Text_WhatWillPlayerDoNext1[]; extern const u8 TVSecretBaseSecrets_Text_WhatWillPlayerDoNext2[]; extern const u8 TVSecretBaseSecrets_Text_TookXStepsBeforeLeaving[]; -extern const u8 TVSecretBaseSecrets_Text_BaseFailedToInterestPlayer[]; -extern const u8 TVSecretBaseSecrets_Text_PlayerEnjoyedBase[]; +extern const u8 TVSecretBaseSecrets_Text_BaseFailedToInterestPlayer[]; +extern const u8 TVSecretBaseSecrets_Text_PlayerEnjoyedBase[]; extern const u8 TVSecretBaseSecrets_Text_PlayerHugeFanOfBase[]; -extern const u8 TVSecretBaseSecrets_Text_Outro[]; -extern const u8 TVSecretBaseSecrets_Text_StoppedMoving1[]; -extern const u8 TVSecretBaseSecrets_Text_StoppedMoving2[]; -extern const u8 TVSecretBaseSecrets_Text_UsedChair[]; -extern const u8 TVSecretBaseSecrets_Text_UsedBalloon[]; -extern const u8 TVSecretBaseSecrets_Text_UsedTent[]; -extern const u8 TVSecretBaseSecrets_Text_UsedPlant[]; -extern const u8 TVSecretBaseSecrets_Text_UsedGoldShield[]; -extern const u8 TVSecretBaseSecrets_Text_UsedSilverShield[]; -extern const u8 TVSecretBaseSecrets_Text_UsedGlassOrnament[]; -extern const u8 TVSecretBaseSecrets_Text_UsedTV[]; -extern const u8 TVSecretBaseSecrets_Text_UsedMudBall[]; -extern const u8 TVSecretBaseSecrets_Text_UsedBag[]; -extern const u8 TVSecretBaseSecrets_Text_UsedCushion[]; -extern const u8 TVSecretBaseSecrets_Text_HitCushion[]; -extern const u8 TVSecretBaseSecrets_Text_HuggedCushion[]; -extern const u8 TVSecretBaseSecrets_Text_BattledWon[]; -extern const u8 TVSecretBaseSecrets_Text_BattledLost[]; -extern const u8 TVSecretBaseSecrets_Text_DeclinedBattle[]; -extern const u8 TVSecretBaseSecrets_Text_UsedPoster[]; -extern const u8 TVSecretBaseSecrets_Text_UsedNoteMat[]; -extern const u8 TVSecretBaseSecrets_Text_BattledDraw[]; -extern const u8 TVSecretBaseSecrets_Text_UsedSpinMat[]; -extern const u8 TVSecretBaseSecrets_Text_UsedSandOrnament[]; -extern const u8 TVSecretBaseSecrets_Text_UsedDesk[]; -extern const u8 TVSecretBaseSecrets_Text_UsedBrick[]; -extern const u8 TVSecretBaseSecrets_Text_UsedSolidBoard[]; -extern const u8 TVSecretBaseSecrets_Text_UsedFence[]; -extern const u8 TVSecretBaseSecrets_Text_UsedGlitterMat[]; -extern const u8 TVSecretBaseSecrets_Text_UsedTire[]; -extern const u8 TVSecretBaseSecrets_Text_UsedStand[]; +extern const u8 TVSecretBaseSecrets_Text_Outro[]; +extern const u8 TVSecretBaseSecrets_Text_StoppedMoving1[]; +extern const u8 TVSecretBaseSecrets_Text_StoppedMoving2[]; +extern const u8 TVSecretBaseSecrets_Text_UsedChair[]; +extern const u8 TVSecretBaseSecrets_Text_UsedBalloon[]; +extern const u8 TVSecretBaseSecrets_Text_UsedTent[]; +extern const u8 TVSecretBaseSecrets_Text_UsedPlant[]; +extern const u8 TVSecretBaseSecrets_Text_UsedGoldShield[]; +extern const u8 TVSecretBaseSecrets_Text_UsedSilverShield[]; +extern const u8 TVSecretBaseSecrets_Text_UsedGlassOrnament[]; +extern const u8 TVSecretBaseSecrets_Text_UsedTV[]; +extern const u8 TVSecretBaseSecrets_Text_UsedMudBall[]; +extern const u8 TVSecretBaseSecrets_Text_UsedBag[]; +extern const u8 TVSecretBaseSecrets_Text_UsedCushion[]; +extern const u8 TVSecretBaseSecrets_Text_HitCushion[]; +extern const u8 TVSecretBaseSecrets_Text_HuggedCushion[]; +extern const u8 TVSecretBaseSecrets_Text_BattledWon[]; +extern const u8 TVSecretBaseSecrets_Text_BattledLost[]; +extern const u8 TVSecretBaseSecrets_Text_DeclinedBattle[]; +extern const u8 TVSecretBaseSecrets_Text_UsedPoster[]; +extern const u8 TVSecretBaseSecrets_Text_UsedNoteMat[]; +extern const u8 TVSecretBaseSecrets_Text_BattledDraw[]; +extern const u8 TVSecretBaseSecrets_Text_UsedSpinMat[]; +extern const u8 TVSecretBaseSecrets_Text_UsedSandOrnament[]; +extern const u8 TVSecretBaseSecrets_Text_UsedDesk[]; +extern const u8 TVSecretBaseSecrets_Text_UsedBrick[]; +extern const u8 TVSecretBaseSecrets_Text_UsedSolidBoard[]; +extern const u8 TVSecretBaseSecrets_Text_UsedFence[]; +extern const u8 TVSecretBaseSecrets_Text_UsedGlitterMat[]; +extern const u8 TVSecretBaseSecrets_Text_UsedTire[]; +extern const u8 TVSecretBaseSecrets_Text_UsedStand[]; extern const u8 TVSecretBaseSecrets_Text_BrokeDoor[]; -extern const u8 TVSecretBaseSecrets_Text_UsedDoll[]; -extern const u8 TVSecretBaseSecrets_Text_UsedSlide[]; -extern const u8 TVSecretBaseSecrets_Text_UsedSlideButDidntGoDown[]; +extern const u8 TVSecretBaseSecrets_Text_UsedDoll[]; +extern const u8 TVSecretBaseSecrets_Text_UsedSlide[]; +extern const u8 TVSecretBaseSecrets_Text_UsedSlideButDidntGoDown[]; extern const u8 TVSecretBaseSecrets_Text_UsedJumpMat[]; extern const u8 gTVSafariFanClubText00[]; extern const u8 gTVSafariFanClubText01[]; diff --git a/include/global.fieldmap.h b/include/global.fieldmap.h index 36c050f0d..2470d9f00 100644 --- a/include/global.fieldmap.h +++ b/include/global.fieldmap.h @@ -210,7 +210,7 @@ struct ObjectEvent /*0x22*/ union __attribute__((packed)) { u8 playerCopyableMovement; struct __attribute__((packed)) { - u16 species:11; // 11 bits for 2048 species + u16 species:11; // 11 bits; 2048 species u16 form:4; u16 shiny:1; } mon; diff --git a/remote_build.sh b/remote_build.sh new file mode 100644 index 000000000..ddbcf599f --- /dev/null +++ b/remote_build.sh @@ -0,0 +1,9 @@ +#!/bin/bash + +# Rsync repo to build machine; build and scp the ROM back + +set +v +set -e +git push build --force # ssh://merrbot:/home/ubuntu/pokeemerald +ssh merrbot "source /etc/profile.d/devkit-env.sh && cd pokeemerald && git reset --hard && git checkout dexnav && make" +scp merrbot:pokeemerald/pokeemerald.gba romhack.gba diff --git a/src/event_object_movement.c b/src/event_object_movement.c index ab9c6dad5..a6b2f5823 100644 --- a/src/event_object_movement.c +++ b/src/event_object_movement.c @@ -1622,7 +1622,7 @@ static const struct ObjectEventGraphicsInfo * SpeciesToGraphicsInfo(u16 species, return graphicsInfo->tileTag != 0xFFFF ? &gObjectEventGraphicsInfo_Dusclops : graphicsInfo; } -// Set graphics & sprite for a follower object event by species +// Set graphics & sprite for a follower object event by species & shininess. static void FollowerSetGraphics(struct ObjectEvent *objectEvent, u16 species, u8 form, bool8 shiny) { const struct ObjectEventGraphicsInfo *graphicsInfo = SpeciesToGraphicsInfo(species, form); objectEvent->graphicsId = OBJ_EVENT_GFX_OW_MON; @@ -1708,51 +1708,65 @@ bool8 ScrFunc_getfolloweraction(struct ScriptContext *ctx) // Essentially a big u16 value; u16 species; u32 behavior; + s16 health_percent; + u8 map_region; u8 friendship; + const u8 *message_choices[10] = {0}; + u8 n_choices = 0; struct ObjectEvent *objEvent = GetFollowerObject(); struct Pokemon *mon = GetFirstLiveMon(); if (mon == NULL) { ScriptCall(ctx, EventScript_FollowerLovesYou); return FALSE; } - if (!Overworld_MapTypeAllowsTeleportAndFly(gMapHeader.mapType)) // only return to flying if map type is relevant + // If map is not flyable, set the script to jump past the fly check + if (!Overworld_MapTypeAllowsTeleportAndFly(gMapHeader.mapType)) ScriptJump(ctx, EventScript_FollowerEnd); behavior = MapGridGetMetatileBehaviorAt(objEvent->currentCoords.x, objEvent->currentCoords.y); species = GetMonData(mon, MON_DATA_SPECIES); - // Puddle splash or wet feet + // 1. Puddle splash or wet feet if (MetatileBehavior_IsPuddle(behavior) || MetatileBehavior_IsShallowFlowingWater(behavior)) { - if (SpeciesHasType(species, TYPE_FIRE)) { - ScriptCall(ctx, EventScript_FollowerHasWetFeet); - return FALSE; - } else if (SpeciesToGraphicsInfo(species, 0)->tracks) { // if follower is grounded - ScriptCall(ctx, EventScript_FollowerSplashesAbout); - return FALSE; - } + if (SpeciesHasType(species, TYPE_FIRE)) + message_choices[n_choices++] = EventScript_FollowerUnhappyToBeWet; + else if (SpeciesToGraphicsInfo(species, 0)->tracks) // if follower is grounded + message_choices[n_choices++] = EventScript_FollowerSplashesAbout; } - // Weather-based messages + // 2. Weather-based messages if (GetCurrentWeather() == WEATHER_RAIN || GetCurrentWeather() == WEATHER_RAIN_THUNDERSTORM) { - if (SpeciesHasType(species, TYPE_FIRE)) { - ScriptCall(ctx, EventScript_FollowerUnhappyFace); - return FALSE; - } else if (SpeciesHasType(species, TYPE_WATER) || SpeciesHasType(species, TYPE_GRASS)) { - ScriptCall(ctx, EventScript_FollowerHappyRain); - return FALSE; - } - } - // Location-based messages - if (GetMonData(mon, MON_DATA_MET_LOCATION) == GetCurrentRegionMapSectionId()) { - ScriptCall(ctx, EventScript_FollowerMetLocation); - return FALSE; + if (SpeciesHasType(species, TYPE_FIRE)) + message_choices[n_choices++] = EventScript_FollowerUnhappyFace; + else if (SpeciesHasType(species, TYPE_WATER) || SpeciesHasType(species, TYPE_GRASS)) + message_choices[n_choices++] = EventScript_FollowerHappyRain; } + // 3. Health & status-based messages + health_percent = mon->hp * 100 / mon->maxHP; + if (health_percent <= 20) + message_choices[n_choices++] = EventScript_FollowerAboutToFall; + else if (health_percent < 50 || mon->status & 0x40) // STATUS1_PARALYSIS + message_choices[n_choices++] = EventScript_FollowerTryingToKeepUp; + // 4. More status messages + if (mon->status & (0x20 | 0x8)) // STATUS1_FREEZE | STATUS1_POISON + message_choices[n_choices++] = EventScript_FollowerIsShivering; + else if (mon->status & 0x10) // STATUS1_BURN + message_choices[n_choices++] = EventScript_FollowerBurnPainful; + // 5. Location-based messages + map_region = GetCurrentRegionMapSectionId(); // defined in region_map_sections.h + if (GetMonData(mon, MON_DATA_MET_LOCATION) == map_region) + message_choices[n_choices++] = EventScript_FollowerMetLocation; + // 6. Friendship-based messages friendship = GetMonData(mon, MON_DATA_FRIENDSHIP); if (friendship <= 80) - ScriptCall(ctx, EventScript_FollowerSkeptical); + message_choices[n_choices++] = EventScript_FollowerSkeptical; else if (friendship <= 170) - ScriptCall(ctx, EventScript_FollowerAppraising); + message_choices[n_choices++] = EventScript_FollowerAppraising; else if (friendship < 255) - ScriptCall(ctx, EventScript_FollowerHappyWalk); + message_choices[n_choices++] = EventScript_FollowerHappyWalk; else // Max friendship - ScriptCall(ctx, EventScript_FollowerLovesYou); + message_choices[n_choices++] = EventScript_FollowerLovesYou; + if (!n_choices) + ScriptCall(ctx, EventScript_FollowerLovesYou); // Default in case of no choices + else + ScriptCall(ctx, message_choices[Random() % min(n_choices, ARRAY_COUNT(message_choices))]); return FALSE; } diff --git a/src/field_effect.c b/src/field_effect.c index e734bd92c..e1ad82940 100644 --- a/src/field_effect.c +++ b/src/field_effect.c @@ -1415,7 +1415,7 @@ void FieldCB_FallWarpExit(void) Overworld_PlaySpecialMapMusic(); WarpFadeInScreen(); ScriptContext2_Enable(); - FreezeObjectEvents(); + FreezeObjectEvents(); // TODO: How does this interact with follower pokemon? CreateTask(Task_FallWarpFieldEffect, 0); gFieldCallback = NULL; } @@ -1567,7 +1567,7 @@ static void Task_EscalatorWarpOut(u8 taskId) static bool8 EscalatorWarpOut_Init(struct Task *task) { - FreezeObjectEvents(); + FreezeObjectEvents(); // TODO: Follower pokemon interaction CameraObjectReset2(); StartEscalator(task->tGoingUp); task->tState++; @@ -1945,7 +1945,7 @@ static void Task_LavaridgeGymB1FWarp(u8 taskId) static bool8 LavaridgeGymB1FWarpEffect_Init(struct Task *task, struct ObjectEvent *objectEvent, struct Sprite *sprite) { - FreezeObjectEvents(); + FreezeObjectEvents(); // TODO: Follower pokemon interaction CameraObjectReset2(); SetCameraPanningCallback(NULL); gPlayerAvatar.preventStep = TRUE; @@ -2062,7 +2062,7 @@ static void Task_LavaridgeGymB1FWarpExit(u8 taskId) static bool8 LavaridgeGymB1FWarpExitEffect_Init(struct Task *task, struct ObjectEvent *objectEvent, struct Sprite *sprite) { CameraObjectReset2(); - FreezeObjectEvents(); + FreezeObjectEvents(); // TODO: Follower pokemon interaction gPlayerAvatar.preventStep = TRUE; objectEvent->invisible = TRUE; task->data[0]++; @@ -2138,7 +2138,7 @@ static void Task_LavaridgeGym1FWarp(u8 taskId) static bool8 LavaridgeGym1FWarpEffect_Init(struct Task *task, struct ObjectEvent *objectEvent, struct Sprite *sprite) { - FreezeObjectEvents(); + FreezeObjectEvents(); // TODO: Follower pokemon interaction CameraObjectReset2(); gPlayerAvatar.preventStep = TRUE; objectEvent->fixedPriority = 1; @@ -2227,7 +2227,7 @@ void SpriteCB_AshPuff(struct Sprite *sprite) void StartEscapeRopeFieldEffect(void) { ScriptContext2_Enable(); - FreezeObjectEvents(); + FreezeObjectEvents(); // TODO: Follower pokemon interaction CreateTask(Task_EscapeRopeWarpOut, 80); } @@ -3071,7 +3071,7 @@ u8 FldEff_RayquazaSpotlight(void) struct Sprite *sprite = &gSprites[spriteId]; sprite->oam.priority = 1; - sprite->oam.paletteNum = 4; // TODO: What palette should this Raquaza use? + sprite->oam.paletteNum = 4; // TODO: What (dynamic) palette should this Raquaza use? sprite->data[0] = 0; sprite->data[1] = 0; sprite->data[2] = 0; diff --git a/src/field_screen_effect.c b/src/field_screen_effect.c index db82d667c..ead9bf52d 100644 --- a/src/field_screen_effect.c +++ b/src/field_screen_effect.c @@ -682,6 +682,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) { @@ -689,6 +690,15 @@ static void Task_DoDoorWarp(u8 taskId) FreezeObjectEvents(); PlayerGetDestCoords(x, y); PlaySE(GetDoorSoundEffect(*x, *y - 1)); + if (followerObject) { // Put follower into pokeball + // TODO: ClearObjectEventMovement ( + followerObject->singleMovementActive = 0; + ObjectEventClearHeldMovement(followerObject); + gSprites[followerObject->spriteId].data[1] = 0; + gSprites[followerObject->spriteId].animCmdIndex = 0; // Needed because of weird animCmdIndex stuff + // ) + ObjectEventSetHeldMovement(followerObject, MOVEMENT_ACTION_ENTER_POKEBALL); + } task->data[1] = FieldAnimateDoorOpen(*x, *y - 1); task->tState = 1; break; From f0587b3d756313923e61f72a17954db40871c5bb Mon Sep 17 00:00:00 2001 From: Ariel Antonitis Date: Mon, 1 Mar 2021 03:59:13 -0500 Subject: [PATCH 046/241] Made build script work for all branches. --- .github/workflows/buildrom.yml | 15 +++++++++------ remote_build.sh | 3 ++- 2 files changed, 11 insertions(+), 7 deletions(-) diff --git a/.github/workflows/buildrom.yml b/.github/workflows/buildrom.yml index cd98c8daf..e59b12497 100644 --- a/.github/workflows/buildrom.yml +++ b/.github/workflows/buildrom.yml @@ -1,17 +1,20 @@ name: Build ROM -on: - push: - tags: - - 'v*' +on: push + # push: + # tags: + # - 'v*' jobs: build_rom: runs-on: ubuntu-latest - container: - image: arantonitis/devkitgba + # container: + # image: arantonitis/devkitgba steps: - 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 .. diff --git a/remote_build.sh b/remote_build.sh index ddbcf599f..c9b492628 100644 --- a/remote_build.sh +++ b/remote_build.sh @@ -4,6 +4,7 @@ set +v set -e +git_branch=$(git branch --show-current) git push build --force # ssh://merrbot:/home/ubuntu/pokeemerald -ssh merrbot "source /etc/profile.d/devkit-env.sh && cd pokeemerald && git reset --hard && git checkout dexnav && make" +ssh merrbot "cd pokeemerald && git reset --hard && git checkout $git_branch && make" scp merrbot:pokeemerald/pokeemerald.gba romhack.gba From 9b25ce9e1f8754361d0ee258ed6e2d9cf332cd92 Mon Sep 17 00:00:00 2001 From: Ariel Antonitis Date: Tue, 2 Mar 2021 22:28:43 -0500 Subject: [PATCH 047/241] Fixed tall grass & ripples not being time-blended. --- src/field_effect.c | 1 + 1 file changed, 1 insertion(+) diff --git a/src/field_effect.c b/src/field_effect.c index e1ad82940..a721196b9 100644 --- a/src/field_effect.c +++ b/src/field_effect.c @@ -770,6 +770,7 @@ void FieldEffectScript_LoadFadedPalette(u8 **script) struct SpritePalette *palette = (struct SpritePalette *)FieldEffectScript_ReadWord(script); LoadSpritePalette(palette); UpdateSpritePaletteWithWeather(IndexOfSpritePaletteTag(palette->tag)); + UpdateSpritePaletteWithTime(IndexOfSpritePaletteTag(palette->tag)); // Ensure field effects are blended (*script) += 4; } From d7697e15027baa8bb22013c0cebc1f1bfdc3bc90 Mon Sep 17 00:00:00 2001 From: Ariel Antonitis Date: Wed, 3 Mar 2021 00:06:30 -0500 Subject: [PATCH 048/241] Fixed bug so that field moves do not clear follower palettes. --- gflib/sprite.c | 7 ++++--- include/trainer_pokemon_sprites.h | 1 + src/field_effect.c | 4 +++- src/trainer_pokemon_sprites.c | 13 +++++++++---- 4 files changed, 17 insertions(+), 8 deletions(-) diff --git a/gflib/sprite.c b/gflib/sprite.c index 0a07b5a42..fdb27a802 100644 --- a/gflib/sprite.c +++ b/gflib/sprite.c @@ -1676,9 +1676,10 @@ void FreeSpritePaletteByTag(u16 tag) { u8 index = IndexOfSpritePaletteTag(tag); u16 emptyPalette[16] = {0}; - if (index != 0xFF) - sSpritePaletteTags[index] = 0xFFFF; - LoadPalette(emptyPalette, index * 16 + 0x100, 32); // TODO: For debugging only + if (index != 0xFF) { + sSpritePaletteTags[index] = 0xFFFF; + LoadPalette(emptyPalette, index * 16 + 0x100, 32); // TODO: For debugging only + } } void SetSubspriteTables(struct Sprite *sprite, const struct SubspriteTable *subspriteTables) diff --git a/include/trainer_pokemon_sprites.h b/include/trainer_pokemon_sprites.h index d4390608e..eb11fe481 100644 --- a/include/trainer_pokemon_sprites.h +++ b/include/trainer_pokemon_sprites.h @@ -5,6 +5,7 @@ bool16 ResetAllPicSprites(void); u16 CreatePicSprite2(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/src/field_effect.c b/src/field_effect.c index a721196b9..f9c0d9694 100644 --- a/src/field_effect.c +++ b/src/field_effect.c @@ -923,12 +923,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 diff --git a/src/trainer_pokemon_sprites.c b/src/trainer_pokemon_sprites.c index aab4142db..f4fb39943 100644 --- a/src/trainer_pokemon_sprites.c +++ b/src/trainer_pokemon_sprites.c @@ -290,7 +290,7 @@ u16 CreatePicSprite2(u16 species, u32 otId, u32 personality, u8 flags, s16 x, s1 return spriteId; } -static u16 FreeAndDestroyPicSpriteInternal(u16 spriteId) +static u16 FreeAndDestroyPicSpriteInternal(u16 spriteId, bool8 clearPalette) { u8 i; u8 *framePics; @@ -309,7 +309,7 @@ static u16 FreeAndDestroyPicSpriteInternal(u16 spriteId) } framePics = sSpritePics[i].frames; images = sSpritePics[i].images; - if (sSpritePics[i].paletteTag != 0xFFFF) + if (clearPalette && sSpritePics[i].paletteTag != 0xFFFF) { FreeSpritePaletteByTag(GetSpritePaletteTagByPaletteNum(gSprites[spriteId].oam.paletteNum)); } @@ -357,7 +357,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); } u16 sub_818D834(u16 species, u32 otId, u32 personality, bool8 isFrontPic, u8 paletteSlot, u8 windowId) @@ -378,7 +383,7 @@ u16 CreateTrainerPicSprite(u16 species, bool8 isFrontPic, s16 x, s16 y, u8 palet u16 FreeAndDestroyTrainerPicSprite(u16 spriteId) { - return FreeAndDestroyPicSpriteInternal(spriteId); + return FreeAndDestroyPicSpriteInternal(spriteId, TRUE); } u16 sub_818D904(u16 species, bool8 isFrontPic, u8 paletteSlot, u8 windowId) From d45335f1dccf5745018a23554451a56ab6428559 Mon Sep 17 00:00:00 2001 From: Ariel Antonitis Date: Wed, 3 Mar 2021 02:21:44 -0500 Subject: [PATCH 049/241] Fixed graphics & naming inconsistencies with master branch. --- data/script_cmd_table.inc | 12 ++++++------ src/data/field_effects/field_effect_objects.h | 18 +++++++++--------- src/data/object_events/object_event_graphics.h | 13 ++++++++----- .../object_events/object_event_graphics_info.h | 2 +- src/event_object_movement.c | 12 ++++++------ src/field_effect_helpers.c | 2 +- 6 files changed, 31 insertions(+), 28 deletions(-) diff --git a/data/script_cmd_table.inc b/data/script_cmd_table.inc index b6e7a6b4a..eb8f9eda5 100644 --- a/data/script_cmd_table.inc +++ b/data/script_cmd_table.inc @@ -205,21 +205,21 @@ gScriptCmdTable:: @ 81DB67C .4byte ScrCmd_nop1 .4byte ScrCmd_nop1 .4byte ScrCmd_nop1 - .4byte ScrCmd_setmonobedient - .4byte ScrCmd_checkmonobedience + .4byte ScrCmd_setmoneventlegal + .4byte ScrCmd_checkmoneventlegal .4byte ScrCmd_gotoram .4byte ScrCmd_nop1 - .4byte ScrCmd_warpD1 + .4byte ScrCmd_warpspinenter .4byte ScrCmd_setmonmetlocation .4byte ScrCmd_moverotatingtileobjects .4byte ScrCmd_turnrotatingtileobjects .4byte ScrCmd_initrotatingtilepuzzle .4byte ScrCmd_freerotatingtilepuzzle .4byte ScrCmd_warpmossdeepgym - .4byte ScrCmd_cmdD8 - .4byte ScrCmd_cmdD9 + .4byte ScrCmd_selectapproachingtrainer + .4byte ScrCmd_lockfortrainer .4byte ScrCmd_closebraillemessage - .4byte ScrCmd_cmdDB + .4byte ScrCmd_messageautoscroll .4byte ScrCmd_fadescreenswapbuffers .4byte ScrCmd_buffertrainerclassname .4byte ScrCmd_buffertrainername diff --git a/src/data/field_effects/field_effect_objects.h b/src/data/field_effects/field_effect_objects.h index 949789541..1963f49dc 100755 --- a/src/data/field_effects/field_effect_objects.h +++ b/src/data/field_effects/field_effect_objects.h @@ -32,13 +32,13 @@ const struct SpriteFrameImage gFieldEffectObjectPicTable_BallLight[] = { obj_frame_tiles(gFieldEffectObjectPic_BallLight), }; -const struct SpriteTemplate gFieldEffectObjectTemplate_ShadowSmall = {0xFFFF, OBJ_EVENT_PAL_TAG_MAY, &gObjectEventBaseOam_8x8, gFieldEffectObjectImageAnimTable_Shadow, gFieldEffectObjectPicTable_ShadowSmall, gDummySpriteAffineAnimTable, UpdateShadowFieldEffect}; +const struct SpriteTemplate gFieldEffectObjectTemplate_ShadowSmall = {0xFFFF, OBJ_EVENT_PAL_TAG_MAY, &gObjectEventBaseOam_8x8, sAnimTable_Shadow, sPicTable_ShadowSmall, gDummySpriteAffineAnimTable, UpdateShadowFieldEffect}; -const struct SpriteTemplate gFieldEffectObjectTemplate_ShadowMedium = {0xFFFF, OBJ_EVENT_PAL_TAG_MAY, &gObjectEventBaseOam_16x8, gFieldEffectObjectImageAnimTable_Shadow, gFieldEffectObjectPicTable_ShadowMedium, gDummySpriteAffineAnimTable, UpdateShadowFieldEffect}; +const struct SpriteTemplate gFieldEffectObjectTemplate_ShadowMedium = {0xFFFF, OBJ_EVENT_PAL_TAG_MAY, &gObjectEventBaseOam_16x8, sAnimTable_Shadow, sPicTable_ShadowMedium, gDummySpriteAffineAnimTable, UpdateShadowFieldEffect}; -const struct SpriteTemplate gFieldEffectObjectTemplate_ShadowLarge = {0xFFFF, OBJ_EVENT_PAL_TAG_MAY, &gObjectEventBaseOam_32x8, gFieldEffectObjectImageAnimTable_Shadow, gFieldEffectObjectPicTable_ShadowLarge, gDummySpriteAffineAnimTable, UpdateShadowFieldEffect}; +const struct SpriteTemplate gFieldEffectObjectTemplate_ShadowLarge = {0xFFFF, OBJ_EVENT_PAL_TAG_MAY, &gObjectEventBaseOam_32x8, sAnimTable_Shadow, sPicTable_ShadowLarge, gDummySpriteAffineAnimTable, UpdateShadowFieldEffect}; -const struct SpriteTemplate gFieldEffectObjectTemplate_ShadowExtraLarge = {0xFFFF, OBJ_EVENT_PAL_TAG_MAY, &gObjectEventBaseOam_64x32, gFieldEffectObjectImageAnimTable_Shadow, gFieldEffectObjectPicTable_ShadowExtraLarge, gDummySpriteAffineAnimTable, UpdateShadowFieldEffect}; +const struct SpriteTemplate gFieldEffectObjectTemplate_ShadowExtraLarge = {0xFFFF, OBJ_EVENT_PAL_TAG_MAY, &gObjectEventBaseOam_64x32, sAnimTable_Shadow, sPicTable_ShadowExtraLarge, gDummySpriteAffineAnimTable, UpdateShadowFieldEffect}; const struct SpriteTemplate gFieldEffectObjectTemplate_BallLight = {0xFFFF, OBJ_EVENT_PAL_TAG_LIGHT, &gObjectEventBaseOam_32x32, gObjectEventImageAnimTable_Inanimate, gFieldEffectObjectPicTable_BallLight, gDummySpriteAffineAnimTable, UpdateLightSprite}; @@ -182,7 +182,7 @@ static const union AnimCmd *const sAnimTable_SurfBlob[] = sSurfBlobAnim_FaceEast, }; -const struct SpriteTemplate gFieldEffectObjectTemplate_SurfBlob = {0xFFFF, OBJ_EVENT_PAL_TAG_MAY, &gObjectEventBaseOam_32x32, gFieldEffectObjectImageAnimTable_SurfBlob, gFieldEffectObjectPicTable_SurfBlob, gDummySpriteAffineAnimTable, UpdateSurfBlobFieldEffect}; +const struct SpriteTemplate gFieldEffectObjectTemplate_SurfBlob = {0xFFFF, OBJ_EVENT_PAL_TAG_MAY, &gObjectEventBaseOam_32x32, sAnimTable_SurfBlob, sPicTable_SurfBlob, gDummySpriteAffineAnimTable, UpdateSurfBlobFieldEffect}; static const struct SpriteFrameImage sPicTable_Arrow[] = { overworld_frame(gFieldEffectObjectPic_Arrow, 2, 2, 0), @@ -231,7 +231,7 @@ static const union AnimCmd *const sAnimTable_Arrow[] = sArrowAnim_East, }; -const struct SpriteTemplate gFieldEffectObjectTemplate_Arrow = {0xFFFF, OBJ_EVENT_PAL_TAG_MAY, &gObjectEventBaseOam_16x16, gFieldEffectObjectImageAnimTable_Arrow, gFieldEffectObjectPicTable_Arrow, gDummySpriteAffineAnimTable, SpriteCallbackDummy}; +const struct SpriteTemplate gFieldEffectObjectTemplate_Arrow = {0xFFFF, OBJ_EVENT_PAL_TAG_MAY, &gObjectEventBaseOam_16x16, sAnimTable_Arrow, sPicTable_Arrow, gDummySpriteAffineAnimTable, SpriteCallbackDummy}; static const struct SpriteFrameImage sPicTable_GroundImpactDust[] = { overworld_frame(gFieldEffectObjectPic_GroundImpactDust, 2, 1, 0), @@ -931,7 +931,7 @@ static const union AnimCmd *const sAnimTable_TreeDisguise[] = sAnim_TreeDisguiseReveal, }; -const struct SpriteTemplate gFieldEffectObjectTemplate_TreeDisguise = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_3, &gObjectEventBaseOam_16x32, gFieldEffectObjectImageAnimTable_TreeDisguise, gFieldEffectObjectPicTable_TreeDisguise, gDummySpriteAffineAnimTable, UpdateDisguiseFieldEffect}; +const struct SpriteTemplate gFieldEffectObjectTemplate_TreeDisguise = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_3, &gObjectEventBaseOam_16x32, sAnimTable_TreeDisguise, sPicTable_TreeDisguise, gDummySpriteAffineAnimTable, UpdateDisguiseFieldEffect}; static const struct SpriteFrameImage sPicTable_MountainDisguise[] = { overworld_frame(gFieldEffectObjectPic_MountainDisguise, 2, 4, 0), @@ -967,7 +967,7 @@ static const union AnimCmd *const sAnimTable_MountainDisguise[] = sAnim_MountainDisguiseReveal, }; -const struct SpriteTemplate gFieldEffectObjectTemplate_MountainDisguise = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_2, &gObjectEventBaseOam_16x32, gFieldEffectObjectImageAnimTable_MountainDisguise, gFieldEffectObjectPicTable_MountainDisguise, gDummySpriteAffineAnimTable, UpdateDisguiseFieldEffect}; +const struct SpriteTemplate gFieldEffectObjectTemplate_MountainDisguise = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_2, &gObjectEventBaseOam_16x32, sAnimTable_MountainDisguise, sPicTable_MountainDisguise, gDummySpriteAffineAnimTable, UpdateDisguiseFieldEffect}; static const struct SpriteFrameImage sPicTable_SandDisguisePlaceholder[] = { overworld_frame(gFieldEffectObjectPic_SandDisguisePlaceholder, 2, 4, 0), @@ -1004,7 +1004,7 @@ static const union AnimCmd *const sAnimTable_Bird[] = sAnim_Bird, }; -const struct SpriteTemplate gFieldEffectObjectTemplate_Bird = {0xFFFF, OBJ_EVENT_PAL_TAG_MAY, &gObjectEventBaseOam_32x32, gFieldEffectObjectImageAnimTable_Bird, gFieldEffectObjectPicTable_Bird, gDummySpriteAffineAnimTable, SpriteCallbackDummy}; +const struct SpriteTemplate gFieldEffectObjectTemplate_Bird = {0xFFFF, OBJ_EVENT_PAL_TAG_MAY, &gObjectEventBaseOam_32x32, sAnimTable_Bird, sPicTable_Bird, gDummySpriteAffineAnimTable, SpriteCallbackDummy}; static const struct SpriteFrameImage sPicTable_ShortGrass[] = { overworld_frame(gFieldEffectObjectPic_ShortGrass, 2, 2, 0), diff --git a/src/data/object_events/object_event_graphics.h b/src/data/object_events/object_event_graphics.h index 1b8222e2a..e3d07cf70 100755 --- a/src/data/object_events/object_event_graphics.h +++ b/src/data/object_events/object_event_graphics.h @@ -231,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"); @@ -329,15 +327,12 @@ const u32 gObjectEventPic_MysteryEventDeliveryman[] = INCBIN_U32("graphics/objec 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"); @@ -778,4 +773,12 @@ const u32 gObjectEventPic_LugiaOld[] = INCBIN_U32("graphics/object_events/pics/p 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 u16 gObjectEventPaletteLight[] = INCBIN_U16("graphics/object_events/palettes/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 71cfa2533..347bce83d 100755 --- a/src/data/object_events/object_event_graphics_info.h +++ b/src/data/object_events/object_event_graphics_info.h @@ -243,7 +243,7 @@ const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_RubySapphireBrenda const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_RubySapphireMay = {0xFFFF, OBJ_EVENT_PAL_TAG_RS_MAY, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_RubySapphireMay, gDummySpriteAffineAnimTable}; const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Lugia = {0xFFFF, OBJ_EVENT_PAL_TAG_LUGIA, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_LugiaOld, gDummySpriteAffineAnimTable}; const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_HoOh = {0xFFFF, OBJ_EVENT_PAL_TAG_HO_OH, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_HoOh, gObjectEventPicTable_HoOhOld, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_AnimatedBall = {0xFFFF, OBJ_EVENT_PAL_TAG_3, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_AnimatedBall, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_AnimatedBall = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_3, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_AnimatedBall, gDummySpriteAffineAnimTable}; const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Follower = {0xFFFF, OBJ_EVENT_PAL_TAG_DYNAMIC, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Following, gObjectEventPicTable_Togetic, gDummySpriteAffineAnimTable}; // Species-indexed pokemon object event table diff --git a/src/event_object_movement.c b/src/event_object_movement.c index a6b2f5823..2c8e236c6 100644 --- a/src/event_object_movement.c +++ b/src/event_object_movement.c @@ -498,7 +498,7 @@ 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}, - {gObjectEventPalette0, OBJ_EVENT_PAL_TAG_DYNAMIC}, + {gObjectEventPal_Npc1, OBJ_EVENT_PAL_TAG_DYNAMIC}, {gObjectEventPaletteLight, OBJ_EVENT_PAL_TAG_LIGHT}, {NULL, 0x0000}, }; @@ -1631,7 +1631,7 @@ static void FollowerSetGraphics(struct ObjectEvent *objectEvent, u16 species, u8 objectEvent->extra.mon.species = species; objectEvent->extra.mon.form = form; objectEvent->extra.mon.shiny = shiny; - if (graphicsInfo->paletteTag1 == OBJ_EVENT_PAL_TAG_DYNAMIC) { // Use palette from species palette table + if (graphicsInfo->paletteTag == OBJ_EVENT_PAL_TAG_DYNAMIC) { // Use palette from species palette table struct Sprite *sprite = &gSprites[objectEvent->spriteId]; // 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 @@ -2061,7 +2061,7 @@ u8 UpdateSpritePaletteByTemplate(const struct SpriteTemplate * template, struct // Set graphics *by info* static void ObjectEventSetGraphics(struct ObjectEvent *objectEvent, const struct ObjectEventGraphicsInfo *graphicsInfo) { struct Sprite *sprite = &gSprites[objectEvent->spriteId]; - u8 i = FindObjectEventPaletteIndexByTag(graphicsInfo->paletteTag1); + u8 i = FindObjectEventPaletteIndexByTag(graphicsInfo->paletteTag); if (i != 0xFF) UpdateSpritePalette(&sObjectEventSpritePalettes[i], sprite); sprite->oam.shape = graphicsInfo->oam->shape; @@ -3417,7 +3417,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); @@ -3456,7 +3456,7 @@ bool8 MovementType_BerryTreeGrowth_Normal(struct ObjectEvent *objectEvent, struc sprite->sFuncId = BERRYTREEFUNC_SPARKLE_START; return TRUE; } - SetBerryTreeGraphics(objectEvent, sprite); + get_berry_tree_graphics(objectEvent, sprite); ObjectEventSetSingleMovement(objectEvent, sprite, MOVEMENT_ACTION_START_ANIM_IN_DIRECTION); sprite->sFuncId = BERRYTREEFUNC_MOVE; return TRUE; @@ -3496,7 +3496,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->sFuncId = BERRYTREEFUNC_SPARKLE_END; sprite->sTimer = 0; return TRUE; diff --git a/src/field_effect_helpers.c b/src/field_effect_helpers.c index 05ade09d9..8f6fcc424 100755 --- a/src/field_effect_helpers.c +++ b/src/field_effect_helpers.c @@ -1338,7 +1338,7 @@ static u32 ShowDisguiseFieldEffect(u8 fldEff, u8 fldEffObj, u8 paletteNum) if (spriteId != MAX_SPRITES) { sprite = &gSprites[spriteId]; - UpdateSpritePaletteByTemplate(gFieldEffectObjectTemplatePointers[templateIdx], sprite); + UpdateSpritePaletteByTemplate(gFieldEffectObjectTemplatePointers[fldEffObj], sprite); sprite->coordOffsetEnabled ++; sprite->data[1] = fldEff; sprite->data[2] = gFieldEffectArguments[0]; From a15b0de70e21d4b6e12f05af9254dc7f2febe44b Mon Sep 17 00:00:00 2001 From: Ariel Antonitis Date: Sun, 7 Mar 2021 00:23:40 -0500 Subject: [PATCH 050/241] Fixed light spawning causing screen tears. --- include/overworld.h | 1 + src/event_object_movement.c | 16 ++++++++-------- src/overworld.c | 21 +++++++++++++++++++++ 3 files changed, 30 insertions(+), 8 deletions(-) diff --git a/include/overworld.h b/include/overworld.h index 98564f91d..acb7e6801 100644 --- a/include/overworld.h +++ b/include/overworld.h @@ -47,6 +47,7 @@ struct LinkPlayerObjectEvent // Exported RAM declarations extern struct WarpData gLastUsedWarp; extern struct LinkPlayerObjectEvent gLinkPlayerObjectEvents[4]; +extern struct Coords16 gLightMetatiles[32]; extern u16 *gBGTilemapBuffers1; extern u16 *gBGTilemapBuffers2; diff --git a/src/event_object_movement.c b/src/event_object_movement.c index 2c8e236c6..d05928148 100644 --- a/src/event_object_movement.c +++ b/src/event_object_movement.c @@ -1775,7 +1775,7 @@ bool8 ScrFunc_followerfly(struct ScriptContext *ctx) { return FALSE; } -// Callback for light sprites +// Sprite callback for light sprites void UpdateLightSprite(struct Sprite *sprite) { s16 left = gSaveBlock1Ptr->pos.x - 2; s16 right = gSaveBlock1Ptr->pos.x + 17; @@ -1787,9 +1787,6 @@ void UpdateLightSprite(struct Sprite *sprite) { u32 paletteNum; bool8 finished = TRUE; // Ripped from RemoveObjectEventIfOutsideView - if (x >= left && x <= right - && y >= top && y <= bottom) - finished = FALSE; if (x >= left && x <= right && y >= top && y <= bottom) finished = FALSE; @@ -1803,7 +1800,7 @@ void UpdateLightSprite(struct Sprite *sprite) { return; } - if (gPlayerAvatar.tileTransitionState) { + if (gPlayerAvatar.tileTransitionState) { // As long as the second coefficient stays 12, shadows will not change Weather_SetBlendCoeffs(7, 12); sprite->invisible = FALSE; } else { @@ -1843,14 +1840,17 @@ void TrySpawnLightSprites(s16 camX, s16 camY) { s16 right = gSaveBlock1Ptr->pos.x + 17; s16 top = gSaveBlock1Ptr->pos.y; s16 bottom = gSaveBlock1Ptr->pos.y + 16; + u8 i = 0; s16 x, y; u32 behavior; if (gTimeOfDay != TIME_OF_DAY_NIGHT) return; - for (x = left; x <= right; x++) { - for (y = top; y <= bottom; y++) { + for (i = 0; gLightMetatiles[i].x > 0; i++) { + x = gLightMetatiles[i].x; + y = gLightMetatiles[i].y; + if (x >= left && x <= right && y >= top && y <= bottom) { behavior = MapGridGetMetatileBehaviorAt(x, y); - if (behavior == 0x04) // TODO: Use an actual constant + if (behavior == 0x04) // TODO: Use an actual constant for light metatiles SpawnLightSprite(x, y, camX, camY, behavior); } } diff --git a/src/overworld.c b/src/overworld.c index 32bd469cf..f81310b70 100644 --- a/src/overworld.c +++ b/src/overworld.c @@ -201,6 +201,7 @@ EWRAM_DATA static struct InitialPlayerAvatarState sInitialPlayerAvatarState = {0 EWRAM_DATA static u16 sAmbientCrySpecies = 0; EWRAM_DATA static bool8 sIsAmbientCryWaterMon = FALSE; EWRAM_DATA struct LinkPlayerObjectEvent gLinkPlayerObjectEvents[4] = {0}; +EWRAM_DATA struct Coords16 gLightMetatiles[32] = {0}; // const rom data @@ -590,6 +591,23 @@ struct MapHeader const *const GetDestinationWarpMapHeader(void) return Overworld_GetMapHeaderByGroupAndId(sWarpDestination.mapGroup, sWarpDestination.mapNum); } +// Caches light metatile coordinates +static void CacheLightMetatiles(void) { // TODO: Better way to dynamically generate lights + u8 i = 0; + s16 x, y; + for (x = 0; x < gBackupMapLayout.width; x++) { + for (y = 0; y < gBackupMapLayout.height; y++) { + if (MapGridGetMetatileBehaviorAt(x, y) == 0x04) { + gLightMetatiles[i].x = x; + gLightMetatiles[i].y = y; + i++; + } + } + } + gLightMetatiles[i].x = -1; + gLightMetatiles[i].y = -1; +} + static void LoadCurrentMapData(void) { sLastMapSectionId = gMapHeader.regionMapSectionId; @@ -806,6 +824,7 @@ void LoadMapFromCameraTransition(u8 mapGroup, u8 mapNum) Overworld_ClearSavedMusic(); RunOnTransitionMapScript(); InitMap(); + CacheLightMetatiles(); CopySecondaryTilesetToVramUsingHeap(gMapHeader.mapLayout); LoadSecondaryTilesetPalette(gMapHeader.mapLayout); @@ -1792,6 +1811,7 @@ void CB2_ContinueSavedGame(void) } else { + CacheLightMetatiles(); TryPutTodaysRivalTrainerOnAir(); gFieldCallback = sub_8086204; SetMainCallback1(CB1_Overworld); @@ -1951,6 +1971,7 @@ static bool32 LoadMapInStepsLocal(u8 *state, bool32 a2) (*state)++; break; case 3: + CacheLightMetatiles(); InitObjectEventsLocal(); SetCameraToTrackPlayer(); (*state)++; From 2723b69931a481fa6e43e996278ee68310db2968 Mon Sep 17 00:00:00 2001 From: Ariel Antonitis Date: Tue, 9 Mar 2021 01:31:51 -0500 Subject: [PATCH 051/241] Updated build script. --- .github/workflows/build.yml | 47 ++++++++++++---------------------- .github/workflows/buildrom.yml | 27 ------------------- 2 files changed, 16 insertions(+), 58 deletions(-) delete mode 100644 .github/workflows/buildrom.yml diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 822b386ea..25e332491 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -1,40 +1,25 @@ -name: CI +name: Build ROM on: push: - branches: [ master ] + branches: [ romhack ] pull_request: jobs: - build: - runs-on: ubuntu-18.04 + build_rom: + name: Build ROM + runs-on: ubuntu-latest steps: - - name: Checkout - uses: actions/checkout@master - - - 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: | - git clone https://github.com/pret/agbcc.git - cd agbcc + cd .. + git clone --depth 1 https://github.com/pret/agbcc + cd agbcc ./build.sh - ./install.sh ../ - - - name: Compare - run: make -j${nproc} compare - - - name: Modern - run: make -j${nproc} modern - - - name: Webhook - if: ${{ github.event_name == 'push' }} - env: - CALCROM_DISCORD_WEBHOOK_USERNAME: OK - CALCROM_DISCORD_WEBHOOK_AVATAR_URL: https://i.imgur.com/38BQHdd.png - CALCROM_DISCORD_WEBHOOK_URL: ${{ secrets.CALCROM_DISCORD_WEBHOOK_URL }} - run: sh .github/calcrom/webhook.sh pokeemerald + ./install.sh ../pokeemerald + - name: Build ROM + run: | + make diff --git a/.github/workflows/buildrom.yml b/.github/workflows/buildrom.yml deleted file mode 100644 index e59b12497..000000000 --- a/.github/workflows/buildrom.yml +++ /dev/null @@ -1,27 +0,0 @@ -name: Build ROM - -on: push - # push: - # tags: - # - 'v*' - -jobs: - build_rom: - runs-on: ubuntu-latest - # container: - # image: arantonitis/devkitgba - steps: - - 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 ../pokeemerald - - name: Build ROM - run: | - make From d05a5a08573d31adef71afe0c0fdc50f933a020f Mon Sep 17 00:00:00 2001 From: Ariel Antonitis Date: Wed, 10 Mar 2021 15:06:59 -0500 Subject: [PATCH 052/241] Temporarily removed follower fly script. --- src/event_object_movement.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/event_object_movement.c b/src/event_object_movement.c index d05928148..559470005 100644 --- a/src/event_object_movement.c +++ b/src/event_object_movement.c @@ -1719,8 +1719,8 @@ bool8 ScrFunc_getfolloweraction(struct ScriptContext *ctx) // Essentially a big ScriptCall(ctx, EventScript_FollowerLovesYou); return FALSE; } - // If map is not flyable, set the script to jump past the fly check - if (!Overworld_MapTypeAllowsTeleportAndFly(gMapHeader.mapType)) + // 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); behavior = MapGridGetMetatileBehaviorAt(objEvent->currentCoords.x, objEvent->currentCoords.y); species = GetMonData(mon, MON_DATA_SPECIES); From 7bcd2c8fb5a65ec4416def18458eb0cfc288051d Mon Sep 17 00:00:00 2001 From: Ariel Antonitis Date: Wed, 10 Mar 2021 17:23:14 -0500 Subject: [PATCH 053/241] Fixed bird fly sprite shadow position. Object event shadows are now displayed by default. --- include/global.fieldmap.h | 2 +- src/event_object_movement.c | 62 ++++++++++++++++++------------------- src/field_effect.c | 3 +- src/field_effect_helpers.c | 1 + 4 files changed, 35 insertions(+), 33 deletions(-) diff --git a/include/global.fieldmap.h b/include/global.fieldmap.h index 2470d9f00..fc2d245c2 100644 --- a/include/global.fieldmap.h +++ b/include/global.fieldmap.h @@ -177,7 +177,7 @@ 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; diff --git a/src/event_object_movement.c b/src/event_object_movement.c index d05928148..3c6860ea7 100644 --- a/src/event_object_movement.c +++ b/src/event_object_movement.c @@ -2016,7 +2016,7 @@ static void sub_808E38C(struct ObjectEvent *objectEvent) { objectEvent->singleMovementActive = FALSE; objectEvent->triggerGroundEffectsOnMove = TRUE; - objectEvent->hasShadow = FALSE; + objectEvent->noShadow = FALSE; objectEvent->hasReflection = FALSE; objectEvent->inShortGrass = FALSE; objectEvent->inShallowFlowingWater = FALSE; @@ -6159,7 +6159,7 @@ bool8 MovementAction_Jump2Down_Step1(struct ObjectEvent *objectEvent, struct Spr { if (sub_80941B0(objectEvent, sprite)) { - objectEvent->hasShadow = FALSE; + objectEvent->noShadow = FALSE; sprite->data[2] = 2; return TRUE; } @@ -6176,7 +6176,7 @@ bool8 MovementAction_Jump2Up_Step1(struct ObjectEvent *objectEvent, struct Sprit { if (sub_80941B0(objectEvent, sprite)) { - objectEvent->hasShadow = FALSE; + objectEvent->noShadow = FALSE; sprite->data[2] = 2; return TRUE; } @@ -6193,7 +6193,7 @@ bool8 MovementAction_Jump2Left_Step1(struct ObjectEvent *objectEvent, struct Spr { if (sub_80941B0(objectEvent, sprite)) { - objectEvent->hasShadow = FALSE; + objectEvent->noShadow = FALSE; sprite->data[2] = 2; return TRUE; } @@ -6210,7 +6210,7 @@ bool8 MovementAction_Jump2Right_Step1(struct ObjectEvent *objectEvent, struct Sp { if (sub_80941B0(objectEvent, sprite)) { - objectEvent->hasShadow = FALSE; + objectEvent->noShadow = FALSE; sprite->data[2] = 2; return TRUE; } @@ -6932,7 +6932,7 @@ bool8 MovementAction_JumpDown_Step1(struct ObjectEvent *objectEvent, struct Spri { if (sub_80941B0(objectEvent, sprite)) { - objectEvent->hasShadow = 0; + objectEvent->noShadow = 0; sprite->data[2] = 2; return TRUE; } @@ -6949,7 +6949,7 @@ bool8 MovementAction_JumpUp_Step1(struct ObjectEvent *objectEvent, struct Sprite { if (sub_80941B0(objectEvent, sprite)) { - objectEvent->hasShadow = 0; + objectEvent->noShadow = 0; sprite->data[2] = 2; return TRUE; } @@ -6966,7 +6966,7 @@ bool8 MovementAction_JumpLeft_Step1(struct ObjectEvent *objectEvent, struct Spri { if (sub_80941B0(objectEvent, sprite)) { - objectEvent->hasShadow = 0; + objectEvent->noShadow = 0; sprite->data[2] = 2; return TRUE; } @@ -6983,7 +6983,7 @@ bool8 MovementAction_JumpRight_Step1(struct ObjectEvent *objectEvent, struct Spr { if (sub_80941B0(objectEvent, sprite)) { - objectEvent->hasShadow = 0; + objectEvent->noShadow = 0; sprite->data[2] = 2; return TRUE; } @@ -7000,7 +7000,7 @@ bool8 MovementAction_JumpInPlaceDown_Step1(struct ObjectEvent *objectEvent, stru { if (sub_80941B0(objectEvent, sprite)) { - objectEvent->hasShadow = 0; + objectEvent->noShadow = 0; sprite->data[2] = 2; return TRUE; } @@ -7017,7 +7017,7 @@ bool8 MovementAction_JumpInPlaceUp_Step1(struct ObjectEvent *objectEvent, struct { if (sub_80941B0(objectEvent, sprite)) { - objectEvent->hasShadow = 0; + objectEvent->noShadow = 0; sprite->data[2] = 2; return TRUE; } @@ -7034,7 +7034,7 @@ bool8 MovementAction_JumpInPlaceLeft_Step1(struct ObjectEvent *objectEvent, stru { if (sub_80941B0(objectEvent, sprite)) { - objectEvent->hasShadow = 0; + objectEvent->noShadow = 0; sprite->data[2] = 2; return TRUE; } @@ -7051,7 +7051,7 @@ bool8 MovementAction_JumpInPlaceRight_Step1(struct ObjectEvent *objectEvent, str { if (sub_80941B0(objectEvent, sprite)) { - objectEvent->hasShadow = 0; + objectEvent->noShadow = 0; sprite->data[2] = 2; return TRUE; } @@ -7068,7 +7068,7 @@ bool8 MovementAction_JumpInPlaceDownUp_Step1(struct ObjectEvent *objectEvent, st { if (sub_80941E0(objectEvent, sprite)) { - objectEvent->hasShadow = 0; + objectEvent->noShadow = 0; sprite->data[2] = 2; return TRUE; } @@ -7085,7 +7085,7 @@ bool8 MovementAction_JumpInPlaceUpDown_Step1(struct ObjectEvent *objectEvent, st { if (sub_80941E0(objectEvent, sprite)) { - objectEvent->hasShadow = 0; + objectEvent->noShadow = 0; sprite->data[2] = 2; return TRUE; } @@ -7102,7 +7102,7 @@ bool8 MovementAction_JumpInPlaceLeftRight_Step1(struct ObjectEvent *objectEvent, { if (sub_80941E0(objectEvent, sprite)) { - objectEvent->hasShadow = 0; + objectEvent->noShadow = 0; sprite->data[2] = 2; return TRUE; } @@ -7119,7 +7119,7 @@ bool8 MovementAction_JumpInPlaceRightLeft_Step1(struct ObjectEvent *objectEvent, { if (sub_80941E0(objectEvent, sprite)) { - objectEvent->hasShadow = 0; + objectEvent->noShadow = 0; sprite->data[2] = 2; return TRUE; } @@ -7563,7 +7563,7 @@ bool8 MovementAction_AcroWheelieHopFaceDown_Step1(struct ObjectEvent *objectEven { if (sub_80941B0(objectEvent, sprite)) { - objectEvent->hasShadow = FALSE; + objectEvent->noShadow = FALSE; sprite->data[2] = 2; return TRUE; } @@ -7580,7 +7580,7 @@ bool8 MovementAction_AcroWheelieHopFaceUp_Step1(struct ObjectEvent *objectEvent, { if (sub_80941B0(objectEvent, sprite)) { - objectEvent->hasShadow = FALSE; + objectEvent->noShadow = FALSE; sprite->data[2] = 2; return TRUE; } @@ -7597,7 +7597,7 @@ bool8 MovementAction_AcroWheelieHopFaceLeft_Step1(struct ObjectEvent *objectEven { if (sub_80941B0(objectEvent, sprite)) { - objectEvent->hasShadow = FALSE; + objectEvent->noShadow = FALSE; sprite->data[2] = 2; return TRUE; } @@ -7614,7 +7614,7 @@ bool8 MovementAction_AcroWheelieHopFaceRight_Step1(struct ObjectEvent *objectEve { if (sub_80941B0(objectEvent, sprite)) { - objectEvent->hasShadow = FALSE; + objectEvent->noShadow = FALSE; sprite->data[2] = 2; return TRUE; } @@ -7631,7 +7631,7 @@ bool8 MovementAction_AcroWheelieHopDown_Step1(struct ObjectEvent *objectEvent, s { if (sub_80941B0(objectEvent, sprite)) { - objectEvent->hasShadow = FALSE; + objectEvent->noShadow = FALSE; sprite->data[2] = 2; return TRUE; } @@ -7648,7 +7648,7 @@ bool8 MovementAction_AcroWheelieHopUp_Step1(struct ObjectEvent *objectEvent, str { if (sub_80941B0(objectEvent, sprite)) { - objectEvent->hasShadow = FALSE; + objectEvent->noShadow = FALSE; sprite->data[2] = 2; return TRUE; } @@ -7665,7 +7665,7 @@ bool8 MovementAction_AcroWheelieHopLeft_Step1(struct ObjectEvent *objectEvent, s { if (sub_80941B0(objectEvent, sprite)) { - objectEvent->hasShadow = FALSE; + objectEvent->noShadow = FALSE; sprite->data[2] = 2; return TRUE; } @@ -7682,7 +7682,7 @@ bool8 MovementAction_AcroWheelieHopRight_Step1(struct ObjectEvent *objectEvent, { if (sub_80941B0(objectEvent, sprite)) { - objectEvent->hasShadow = FALSE; + objectEvent->noShadow = FALSE; sprite->data[2] = 2; return TRUE; } @@ -7699,7 +7699,7 @@ bool8 MovementAction_AcroWheelieJumpDown_Step1(struct ObjectEvent *objectEvent, { if (sub_80941B0(objectEvent, sprite)) { - objectEvent->hasShadow = FALSE; + objectEvent->noShadow = FALSE; sprite->data[2] = 2; return TRUE; } @@ -7716,7 +7716,7 @@ bool8 MovementAction_AcroWheelieJumpUp_Step1(struct ObjectEvent *objectEvent, st { if (sub_80941B0(objectEvent, sprite)) { - objectEvent->hasShadow = FALSE; + objectEvent->noShadow = FALSE; sprite->data[2] = 2; return TRUE; } @@ -7733,7 +7733,7 @@ bool8 MovementAction_AcroWheelieJumpLeft_Step1(struct ObjectEvent *objectEvent, { if (sub_80941B0(objectEvent, sprite)) { - objectEvent->hasShadow = FALSE; + objectEvent->noShadow = FALSE; sprite->data[2] = 2; return TRUE; } @@ -7750,7 +7750,7 @@ bool8 MovementAction_AcroWheelieJumpRight_Step1(struct ObjectEvent *objectEvent, { if (sub_80941B0(objectEvent, sprite)) { - objectEvent->hasShadow = FALSE; + objectEvent->noShadow = FALSE; sprite->data[2] = 2; return TRUE; } @@ -9443,9 +9443,9 @@ u32 StartFieldEffectForObjectEvent(u8 fieldEffectId, struct ObjectEvent *objectE void DoShadowFieldEffect(struct ObjectEvent *objectEvent) { - if (!objectEvent->hasShadow) + if (objectEvent->noShadow) { - objectEvent->hasShadow = 1; + objectEvent->noShadow = FALSE; StartFieldEffectForObjectEvent(FLDEFF_SHADOW, objectEvent); } } diff --git a/src/field_effect.c b/src/field_effect.c index f9c0d9694..f5344797e 100644 --- a/src/field_effect.c +++ b/src/field_effect.c @@ -3259,7 +3259,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++; @@ -3479,6 +3479,7 @@ static void FlyInFieldEffect_BirdSwoopDown(struct Task *task) ObjectEventTurn(objectEvent, DIR_WEST); StartSpriteAnim(&gSprites[objectEvent->spriteId], 0x16); 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 8f6fcc424..1e5c5d475 100755 --- a/src/field_effect_helpers.c +++ b/src/field_effect_helpers.c @@ -342,6 +342,7 @@ void UpdateShadowFieldEffect(struct Sprite *sprite) sprite->pos1.y = linkedSprite->pos1.y + sprite->data[3]; sprite->invisible = linkedSprite->invisible; if (!objectEvent->active + || objectEvent->noShadow || MetatileBehavior_IsPokeGrass(objectEvent->currentMetatileBehavior) || MetatileBehavior_IsSurfableWaterOrUnderwater(objectEvent->currentMetatileBehavior) || MetatileBehavior_IsSurfableWaterOrUnderwater(objectEvent->previousMetatileBehavior)) From 3a0795d8626449234c48429bcc8f1563203ca207 Mon Sep 17 00:00:00 2001 From: Ariel Antonitis Date: Wed, 10 Mar 2021 18:27:53 -0500 Subject: [PATCH 054/241] Followers disappear properly when using Surf. Removed leftover palette 31. --- src/data/object_events/object_event_graphics.h | 2 -- src/event_object_movement.c | 2 ++ src/field_effect.c | 17 +++++++++++++++-- 3 files changed, 17 insertions(+), 4 deletions(-) diff --git a/src/data/object_events/object_event_graphics.h b/src/data/object_events/object_event_graphics.h index e3d07cf70..66e6dd925 100755 --- a/src/data/object_events/object_event_graphics.h +++ b/src/data/object_events/object_event_graphics.h @@ -340,9 +340,7 @@ 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 u16 gObjectEventPalette32[] = INCBIN_U16("graphics/object_events/palettes/32.gbapal"); const u32 gObjectEventPic_AnimatedBall[] = INCBIN_U32("graphics/object_events/pics/misc/animated_ball.4bpp"); -const u16 gObjectEventPalette31[] = INCBIN_U16("graphics/object_events/palettes/31.gbapal"); 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"); diff --git a/src/event_object_movement.c b/src/event_object_movement.c index cd77b82be..8db7b4003 100644 --- a/src/event_object_movement.c +++ b/src/event_object_movement.c @@ -1695,6 +1695,8 @@ void RemoveFollowingPokemon(void) { // Remove follower object. Idempotent. 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)); } diff --git a/src/field_effect.c b/src/field_effect.c index f5344797e..65c08f8cf 100644 --- a/src/field_effect.c +++ b/src/field_effect.c @@ -2995,8 +2995,19 @@ static void Task_SurfFieldEffect(u8 taskId) static void SurfFieldEffect_Init(struct Task *task) { + struct ObjectEvent *followerObject = GetFollowerObject(); ScriptContext2_Enable(); FreezeObjectEvents(); + // Put follower into pokeball before using Surf + if (followerObject && !followerObject->invisible) { + // TODO: ClearObjectEventMovement ( + followerObject->singleMovementActive = 0; + ObjectEventClearHeldMovement(followerObject); + gSprites[followerObject->spriteId].data[1] = 0; + gSprites[followerObject->spriteId].animCmdIndex = 0; // Needed because of weird animCmdIndex stuff + // ) + ObjectEventSetHeldMovement(followerObject, MOVEMENT_ACTION_ENTER_POKEBALL); + } gPlayerAvatar.preventStep = TRUE; SetPlayerAvatarStateMask(PLAYER_AVATAR_FLAG_SURFING); PlayerGetDestCoords(&task->tDestX, &task->tDestY); @@ -3047,13 +3058,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_5; ObjectEventSetHeldMovement(objectEvent, GetFaceDirectionMovementAction(objectEvent->movementDirection)); + if (followerObject) + ObjectEventClearHeldMovementIfFinished(followerObject); SetSurfBobState(objectEvent->fieldEffectSpriteId, 1); UnfreezeObjectEvents(); ScriptContext2_Disable(); From c15ae199aace2b6936f185c0cc69db6bea244820 Mon Sep 17 00:00:00 2001 From: Ariel Antonitis Date: Mon, 15 Mar 2021 23:04:19 -0400 Subject: [PATCH 055/241] Fixed glitch pokemon follower sprites. --- src/event_object_movement.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/event_object_movement.c b/src/event_object_movement.c index 8db7b4003..78db0c4c3 100644 --- a/src/event_object_movement.c +++ b/src/event_object_movement.c @@ -1619,7 +1619,7 @@ struct ObjectEvent * GetFollowerObject(void) { // Return follower ObjectEvent or // Return graphicsInfo for a pokemon species static const struct ObjectEventGraphicsInfo * SpeciesToGraphicsInfo(u16 species, u8 form) { const struct ObjectEventGraphicsInfo *graphicsInfo = &gPokemonObjectGraphics[species]; - return graphicsInfo->tileTag != 0xFFFF ? &gObjectEventGraphicsInfo_Dusclops : graphicsInfo; + return graphicsInfo->tileTag == 0xFFFF ? graphicsInfo : &gPokemonObjectGraphics[SPECIES_PORYGON]; } // Set graphics & sprite for a follower object event by species & shininess. From 5d18500a74590110c332ddc17961dab522792f84 Mon Sep 17 00:00:00 2001 From: Ariel Antonitis Date: Wed, 24 Mar 2021 18:17:27 -0400 Subject: [PATCH 056/241] Generalized remote build script. --- remote_build.sh | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/remote_build.sh b/remote_build.sh index c9b492628..1f6dbd1f4 100644 --- a/remote_build.sh +++ b/remote_build.sh @@ -1,10 +1,15 @@ #!/bin/bash -# Rsync repo to build machine; build and scp the ROM back +# Push to SSH machine; build and scp build products back -set +v set -e git_branch=$(git branch --show-current) -git push build --force # ssh://merrbot:/home/ubuntu/pokeemerald -ssh merrbot "cd pokeemerald && git reset --hard && git checkout $git_branch && make" -scp merrbot:pokeemerald/pokeemerald.gba romhack.gba +# 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 +set -x +git push build --force +# `nproc` must be escaped so that it executes on the remote machine +ssh $remote_host "cd $remote_path && git reset --hard && git checkout $git_branch && \ + echo \"Using \`nproc\` job(s)\" && make -j\`nproc\`" +scp "$remote_host:$remote_path/pokeemerald.gba" romhack.gba From e647e926a859512e05464b3106411841d5cc7d87 Mon Sep 17 00:00:00 2001 From: Ariel Antonitis Date: Wed, 14 Apr 2021 22:02:51 -0400 Subject: [PATCH 057/241] Added all unconditional HGSS messages. --- data/scripts/follower.inc | 14 ++- emotions.txt | 191 ++++++++++++++++++++++++++++++ follower_emotions.py | 50 ++++++++ include/data.h | 27 +++++ include/event_scripts.h | 2 + src/data.c | 1 + src/data/text/follower_messages.h | 149 +++++++++++++++++++++++ src/event_object_movement.c | 101 +++++++++++++--- 8 files changed, 517 insertions(+), 18 deletions(-) create mode 100644 emotions.txt create mode 100644 follower_emotions.py create mode 100644 src/data/text/follower_messages.h diff --git a/data/scripts/follower.inc b/data/scripts/follower.inc index c3e32fe3f..4907eb0c5 100644 --- a/data/scripts/follower.inc +++ b/data/scripts/follower.inc @@ -1,5 +1,5 @@ gText_FollowerLovesYou:: - .string "{STR_VAR_1} is regarding you with\nadoration!$" + .string "123456789012345678901234567890123\n$" gText_FollowerLostInThought:: .string "{STR_VAR_1} seems lost in thought.$" @@ -146,6 +146,18 @@ EventScript_FollowerBurnPainful:: waitmoncry return +@ Message address must be loaded into bank 0 +EventScript_FollowerGeneric:: @ same as Std_MsgboxDefault + message 0x0 + waitmessage + waitbuttonpress + return + +EventScript_FollowerLove:: + applymovement 0xFE ContestHall_Movement_Heart + waitmovement 0xFE + goto EventScript_FollowerGeneric + EnterPokeballMovement:: .byte 0x9F @ EnterPokeball step_end diff --git a/emotions.txt b/emotions.txt new file mode 100644 index 000000000..b8e43e08d --- /dev/null +++ b/emotions.txt @@ -0,0 +1,191 @@ +Happy (Special): +{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} is very composed and sure of itself (in a gym with a type advantage). +{STR_VAR_1} greeted Amphy! +{STR_VAR_1} greeted your mom. +Your pokemon is staring intently at the mountain peak. +{STR_VAR_1} is staring straight at the pokemon league. +{STR_VAR_1} is staring at the sea. +{STR_VAR_1} greeted everyone! +Your pokemon seems happy about the great weather. +Neutral (Special): +(CELEBI) danced happily ( Pokemon Exclusive ). +(CELEBI) danced beautiful ( Pokemon Exclusive ). +Sniff sniff, something smells good! ( Day care center ). +{STR_VAR_1} seems dazzled after seeing the sky. +Your pokemon is surveying the shelves restlessly ( In pokemart ). +Your pokemon is smelling the scent of the flowers. (When next to flowers in Cherrygrove City). +Your pokemon is staring intently at the sea! (On the beach). +Why is it doing warm-up exercises? (Cerulean Gym). +{STR_VAR_1} is running along the side of the pool! (Cerulean Gym). +{STR_VAR_1} is vigorously producing fire (must be a fire type). +{STR_VAR_1} spat fire (must be a fire type). +{STR_VAR_1} is staring intently at the shelves. +(TYPHLOSION) emitted fire and shouted ( Pokemon Exclusive ). +{STR_VAR_1} is vigorously breathing fire ( must be fire type). +(MAGIKARP) is leaping around more than usual (lake of rage, During team rockets broadcast) ( Pokemon Exclusive ). +{STR_VAR_1} Greeted Slowbro (Cerulean city, in front of Slowbro). +{STR_VAR_1} seems happy to have taken a shower! (Celadon gym) (Grass,Water type). +{STR_VAR_1} is fidgeting in front of everyone (maybe baby pokemon). +{STR_VAR_1} roared! +Your pokemon is staring intently at the sea! +{STR_VAR_1} is looking at the surging sea. +{STR_VAR_1} is playing on the sand. +{STR_VAR_1} is staring fixedly at the sea. +{STR_VAR_1} Cried out, looking at the tall mountain! +{STR_VAR_1} is stomping on the grass! +{STR_VAR_1} seems highly interested in the tree. +{STR_VAR_1} is playing around, Picking bits of grass. +{STR_VAR_1} is looking outside and frolicking! +{STR_VAR_1} spun around in a circle! +Sad (Special): +{STR_VAR_1} is going to fall down! (when HP is red). +{STR_VAR_1} is not happy. (During rain if the pokemon is a fire type). +{STR_VAR_1} seems to be about to fall over! (When HP is red.). +{STR_VAR_1} is trying very hard to keep up with you... (When HP is yellow or paralyzed). +{STR_VAR_1}'s burn looks painful! (when burnt). +Upset (Special): +{STR_VAR_1} is taking shelter in the grass from the rain. +{STR_VAR_1} is splashing around in the wet grass. +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 ). +{STR_VAR_1} seems to feel a little claustrophobic. +{STR_VAR_1} is a bit nervous about the narrow space! +{STR_VAR_1} is splashing around in the grass (must be fire type). +Your pokemon doesn't like splashing around on the ground (must be fire type). +{STR_VAR_1} is taking shelter in the grass from the rain (must be fire type). +{STR_VAR_1} seems very cold (when frozen). +{STR_VAR_1} seems uneasy and is poking (PLAYER). +{STR_VAR_1} is trembling with fear (Cemetery). +{STR_VAR_1} seems somehow sad... (Cemetery). +{STR_VAR_1} is growling softly (Dragon type in Dragons Den). +Angry (Special): +{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): +{STR_VAR_1} is staring intently at the goods on display! +{STR_VAR_1} is staring at its reflection in the water. +{STR_VAR_1} is staring intently at the reflection of its face. +{STR_VAR_1} is gnawing at the ice. +{STR_VAR_1} seems interested in Amphy... +{STR_VAR_1} has a sleepy look on its face... (Near Jigglypuff in Radio Tower.). +{STR_VAR_1} seems to relax as it hears the sound of rustling leaves... +{STR_VAR_1} seems to be listening to the sound of rustling leaves. +Your pokemon turned to face the other way, showing a defiant expression. +{STR_VAR_1} is preoccupied by the ceiling, which seems like it may collapse (burnt tower). +{STR_VAR_1} focused with a sharp gaze! (On the way to Victory Road.). +{STR_VAR_1} emitted fire and shouted! (must be a fire type). +{STR_VAR_1} is concerned about the swaying pillar (sprout tower). +Your pokemon is drooling a little (Olivine Cafe). +{STR_VAR_1} seems very interested in the bicycles (bike shop). +{STR_VAR_1} is preoccupied by the floor, which seems like it may collapse (burnt tower). +{STR_VAR_1} is nervous ( in a gym before beating gym leader ) ( must have type disadvantage ). +Music: +{STR_VAR_1} is showing off its agility! +{STR_VAR_1} is moving around happily! +Woah! {STR_VAR_1} suddenly started dancing in happiness! +{STR_VAR_1} is steadily keeping up with you! +{STR_VAR_1} is very happy about the rain. +{STR_VAR_1} seems to want to play with (Player). +{STR_VAR_1} is pulling out the grass. +{STR_VAR_1} is happy skipping about. +{STR_VAR_1} is playing in the puddle. +{STR_VAR_1} is gazing restlessly at the building ( in goldenrod). +{STR_VAR_1} is singing and humming. +{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 nipping at your feet! +{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 happily looking at (Player)'s footprints! (Sandy area). +Your Pokemon is playing around and splashing in the water! (Water's edge). +Your Pokemon is blowing sand in the air! (Sandy area). +{STR_VAR_1} is looking up at the sky. +{STR_VAR_1} is poking at garbage (Goldenrods underground path). +Your pokemon is rolling a screw from a bicycle around. +{STR_VAR_1} is looking up at the sky. +{STR_VAR_1} seems to be happy about the rain! ( during rain, must not have type disadvantage to water). +{STR_VAR_1} is clawing the grass! +{STR_VAR_1} turns around and looks at you. +{STR_VAR_1} is listening to the sound of the waterfall ( Mt. Mortar). +{STR_VAR_1} is looking up the tall mountain... (Mt. Mortar). +{STR_VAR_1} seems concerned about the waterfall. +{STR_VAR_1} is working hard to show off its mighty power! +{STR_VAR_1} pulled back to run! +Whoa! {STR_VAR_1} suddenly danced in happiness! +{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 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. +Your pokemon is happily gazing at the beautiful, starry sky! +{STR_VAR_1} is pulling out the grass. +{STR_VAR_1} seems to be enjoying this a little bit! +{STR_VAR_1} is looking up at the ceiling. +{STR_VAR_1} is cheerful! +{STR_VAR_1} is swaying with the boat! +{STR_VAR_1} is dancing along with the rolling of the ship. +{STR_VAR_1} doesn't want to get off the boat yet! +{STR_VAR_1} is listening to the sound of the machine. +{STR_VAR_1} seems happy at the sight of water on the window! +Your pokemon is blowing sand in the air! +Your pokemon is staring spellbound at the night sky! +Your pokemon seems to be enjoying sliding around! +{STR_VAR_1} is touching the ice. +{STR_VAR_1} is steadily observing the flow of the river. +{STR_VAR_1} is noticing the scent of the grass. +{STR_VAR_1} is playing around, plucking bits of grass. +{STR_VAR_1} is happy to see what's out doors! +{STR_VAR_1} seems to want to touch the machine! (Power plant). +{STR_VAR_1} is listening intently to the sound of the waves. +{STR_VAR_1} is jumping around in a carefree way! +Waah! your pokemon suddenly splashed water! (on a shore). +Your pokemon seems to be smelling a nostalgically familiar scent... +Surprised (Special): +Your pokemon has a flower petal on its face! (Newbark Town). +{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} is cautious about the confined area! +{STR_VAR_1} seems to be very surprised that it is raining! +{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} is feeling nervous and a touch claustrophobic. (while inside an elevator). +{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). +Your pokemon almost slipped and fell over! (on ice). +A cold wind suddenly blew by! +Your pokemon seems surprised to touch ice. (TODO: Regice) +{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). +Poisoned: +{STR_VAR_1} is shivering with the effects of being poisoned. diff --git a/follower_emotions.py b/follower_emotions.py new file mode 100644 index 000000000..1d0fc10e5 --- /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=2): + 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'(const char []) _("{prepare_string(s)}"),' for s in 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=7) diff --git a/include/data.h b/include/data.h index 2f8c44746..a706986ce 100644 --- a/include/data.h +++ b/include/data.h @@ -4,6 +4,15 @@ #include "constants/moves.h" #define SPECIES_SHINY_TAG 500 +#define N_FOLLOWER_HAPPY_MESSAGES 31 +#define N_FOLLOWER_NEUTRAL_MESSAGES 15 +#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 struct MonCoords { @@ -69,6 +78,13 @@ struct Trainer #define TRAINER_ENCOUNTER_MUSIC(trainer)((gTrainers[trainer].encounterMusic_gender & 0x7F)) +struct FollowerMessagePool +{ + const char * const * messages; + const u8 * script; + u16 length; +}; + extern const u16 gMinigameDigits_Pal[]; extern const u32 gMinigameDigits_Gfx[]; @@ -115,4 +131,15 @@ 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 char * const gFollowerHappyMessages[]; +extern const char * const gFollowerNeutralMessages[]; +extern const char * const gFollowerSadMessages[]; +extern const char * const gFollowerUpsetMessages[]; +extern const char * const gFollowerAngryMessages[]; +extern const char * const gFollowerPensiveMessages[]; +extern const char * const gFollowerLoveMessages[]; +extern const char * const gFollowerSurpriseMessages[]; +extern const char * const gFollowerCuriousMessages[]; + #endif // GUARD_DATA_H diff --git a/include/event_scripts.h b/include/event_scripts.h index 0f12c689b..5adb830e6 100644 --- a/include/event_scripts.h +++ b/include/event_scripts.h @@ -16,6 +16,8 @@ extern const u8 EventScript_FollowerAboutToFall[]; extern const u8 EventScript_FollowerTryingToKeepUp[]; extern const u8 EventScript_FollowerIsShivering[]; extern const u8 EventScript_FollowerBurnPainful[]; +extern const u8 EventScript_FollowerGeneric[]; +extern const u8 EventScript_FollowerLove[]; extern const u8 EnterPokeballMovement[]; extern const u8 EventScript_TestSignpostMsg[]; diff --git a/src/data.c b/src/data.c index 6a4295440..56add9c93 100644 --- a/src/data.c +++ b/src/data.c @@ -431,3 +431,4 @@ static const u32 sUnused[] = #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/text/follower_messages.h b/src/data/text/follower_messages.h new file mode 100644 index 000000000..517e48662 --- /dev/null +++ b/src/data/text/follower_messages.h @@ -0,0 +1,149 @@ +// 'Generic', unconditional happy messages +const char * const gFollowerHappyMessages[] = { + (const char []) _("{STR_VAR_1} began poking you in the\nstomach."), + (const char []) _("{STR_VAR_1} is happy but shy."), + (const char []) _("{STR_VAR_1} is coming along happily."), + (const char []) _("{STR_VAR_1} is composed."), + (const char []) _("{STR_VAR_1} seems to be feeling\ngreat about walking with you!"), + (const char []) _("{STR_VAR_1} is glowing with health."), + (const char []) _("{STR_VAR_1} looks very happy."), + (const char []) _("{STR_VAR_1} put in extra effort."), + (const char []) _("{STR_VAR_1} is smelling the scents\nof the surrounding air."), + (const char []) _("{STR_VAR_1} is jumping for joy!"), + (const char []) _("{STR_VAR_1} is still feeling great!"), + (const char []) _("Your pokemon has caught the scent of\nsmoke."), + (const char []) _("{STR_VAR_1} is poking at your belly."), + (const char []) _("Your pokemon stretched out its body\nand is relaxing."), + (const char []) _("{STR_VAR_1} looks like it wants to\nlead!"), + (const char []) _("{STR_VAR_1} is doing it's best to\nkeep up with you."), + (const char []) _("{STR_VAR_1} is happily cuddling up\nto you!"), + (const char []) _("{STR_VAR_1} is full of life!"), + (const char []) _("{STR_VAR_1} seems to be very happy!"), + (const char []) _("{STR_VAR_1} is so happy that it\ncan't stand still!"), + (const char []) _("{STR_VAR_1} nodded slowly."), + (const char []) _("{STR_VAR_1} is very eager!"), + (const char []) _("{STR_VAR_1} is wandering around and\nlistening to the different sounds."), + (const char []) _("{STR_VAR_1} looks very interested."), + (const char []) _("{STR_VAR_1} is somehow forcing\nitself to keep going."), + (const char []) _("{STR_VAR_1} gave you a sunny look!"), + (const char []) _("{STR_VAR_1} gives you a happy look\nand a smile."), + (const char []) _("Your pokemon is smelling the scent\nof flowers."), + (const char []) _("{STR_VAR_1} seems very happy to see\nyou!"), + (const char []) _("{STR_VAR_1} faced this way and\ngrinned."), + (const char []) _("{STR_VAR_1} happily cuddled up to\nyou!"), +}; + +// Unconditional neutral messages +const char * const gFollowerNeutralMessages[] = { + (const char []) _("{STR_VAR_1} is steadily poking at\nthe ground."), + (const char []) _("{STR_VAR_1} is standing guard."), + (const char []) _("{STR_VAR_1} is staring patiently at\nnothing at all."), + (const char []) _("{STR_VAR_1} is wandering around."), + (const char []) _("Your pokemon yawned loudly!"), + (const char []) _("Your pokemon is looking around\nrestlessly."), + (const char []) _("{STR_VAR_1} is steadily poking at\nthe ground."), + (const char []) _("{STR_VAR_1} is looking this way and\nsmiling."), + (const char []) _("{STR_VAR_1} is gazing around\nrestlessly."), + (const char []) _("{STR_VAR_1} let out a battle cry."), + (const char []) _("{STR_VAR_1} danced a wonderful\ndance!"), + (const char []) _("{STR_VAR_1} is very eager."), + (const char []) _("{STR_VAR_1} is staring intently into\nthe distance."), + (const char []) _("{STR_VAR_1} is on the lookout!"), + (const char []) _("{STR_VAR_1} looked off into the\ndistance and barked!"), +}; + +// Unconditional sad messages +const char * const gFollowerSadMessages[] = { + (const char []) _("{STR_VAR_1} is dizzy."), + (const char []) _("{STR_VAR_1} is stepping on your\nfeet!"), + (const char []) _("{STR_VAR_1} seems a little tired."), +}; + +// Unconditional upset messages +const char * const gFollowerUpsetMessages[] = { + (const char []) _("{STR_VAR_1} seems unhappy somehow..."), + (const char []) _("{STR_VAR_1} is making an unhappy\nface."), + (const char []) _(".....Your pokemon seems a little\ncold."), +}; + +// Unconditional angry messages +const char * const gFollowerAngryMessages[] = { + (const char []) _("{STR_VAR_1} let out a roar!"), + (const char []) _("{STR_VAR_1} is making a face like\nits angry!"), + (const char []) _("{STR_VAR_1} seems to be angry for\nsome reason."), + (const char []) _("Your pokemon turned to face the\nother way, showing a defiant\pexpression."), + (const char []) _("{STR_VAR_1} cried out."), +}; + +// Unconditional pensive messages +const char * const gFollowerPensiveMessages[] = { + (const char []) _("{STR_VAR_1} is looking down\nsteadily."), + (const char []) _("{STR_VAR_1} is surveying the area."), + (const char []) _("{STR_VAR_1} is peering down."), + (const char []) _("{STR_VAR_1} is somehow fighting off\nsleep..."), + (const char []) _("{STR_VAR_1} seems to be wandering\naround."), + (const char []) _("{STR_VAR_1} is looking around\nabsentmindedly."), + (const char []) _("{STR_VAR_1} yawned very loudly!"), + (const char []) _("{STR_VAR_1} is relaxing comfortably."), + (const char []) _("{STR_VAR_1} is staring steadfastly\nat your face."), + (const char []) _("{STR_VAR_1} is staring intently at\nyour face."), + (const char []) _("{STR_VAR_1} is focusing its\nattention on you."), + (const char []) _("{STR_VAR_1} is staring into the\ndepths."), + (const char []) _("{STR_VAR_1} is sniffing at the\nground."), + (const char []) _("Your pokemon is staring intently at\nnothing."), + (const char []) _("{STR_VAR_1} focused with a sharp\ngaze!"), + (const char []) _("{STR_VAR_1} is concentrating."), + (const char []) _("{STR_VAR_1} faced this way and\nnodded."), + (const char []) _("{STR_VAR_1} seems a bit nervous..."), + (const char []) _("{STR_VAR_1} is looking at your\nfootprints."), + (const char []) _("{STR_VAR_1} is staring straight into\nyour eyes."), +}; + +// All 'love' messages are unconditional +const char * const gFollowerLoveMessages[] = { + (const char []) _("{STR_VAR_1} suddenly started walking\ncloser!"), + (const char []) _("{STR_VAR_1} cheeks are becoming\nrosy!"), + (const char []) _("Woah! {STR_VAR_1} suddenly hugged\nyou!"), + (const char []) _("Woah! {STR_VAR_1} is suddenly\nplayful!"), + (const char []) _("{STR_VAR_1} is rubbing against your\nlegs!"), + (const char []) _("{STR_VAR_1} blushes."), + (const char []) _("Ah! {STR_VAR_1} cuddles you!"), + (const char []) _("{STR_VAR_1} is regarding you with\nadoration!"), + (const char []) _("{STR_VAR_1} got closer to you."), + (const char []) _("{STR_VAR_1} is keeping close to your\nfeet."), +}; + +// Unconditional surprised messages +const char * const gFollowerSurpriseMessages[] = { + (const char []) _("{STR_VAR_1} is in danger of falling\nover!"), + (const char []) _("{STR_VAR_1} bumped into you!"), + (const char []) _("{STR_VAR_1} doesn't seem to be used\nto its own name yet."), + (const char []) _("{STR_VAR_1} is peering down."), + (const char []) _("Your pokemon stumbled and nearly\nfell!"), + (const char []) _("{STR_VAR_1} feels something and is\nhowling!"), + (const char []) _("{STR_VAR_1} seems refreshed!"), + (const char []) _("{STR_VAR_1} suddenly turned around\nand started barking!"), + (const char []) _("{STR_VAR_1} suddenly turned around!"), + (const char []) _("Your pokemon was surprised that you\nsuddenly spoke to it!"), + (const char []) _("Sniff sniff, something smells really\ngood!"), + (const char []) _("{STR_VAR_1} feels refreshed."), + (const char []) _("{STR_VAR_1} is wobbling and seems\nabout to fall over."), + (const char []) _("{STR_VAR_1} is in danger of falling\nover."), + (const char []) _("{STR_VAR_1} is walking along\ncautiously."), + (const char []) _("{STR_VAR_1} is getting tense with\nnervous energy."), + (const char []) _("{STR_VAR_1} sensed something strange\nand was surprised!"), + (const char []) _("{STR_VAR_1} is scared and snuggled\nup to you!"), + (const char []) _("{STR_VAR_1} is feeling an unusual\npresence..."), + (const char []) _("{STR_VAR_1} is getting tense with\nnervous energy."), +}; + +// Unconditional curious messages +const char * const gFollowerCuriousMessages[] = { + (const char []) _("Your pokemon is looking around\nrestlessly for something."), + (const char []) _("Your pokemon wasn't watching where\nit was going and ran into you!"), + (const char []) _("Sniff, sniff! Is there something\nnearby?"), + (const char []) _("{STR_VAR_1} is rolling a pebble\naround playfully."), + (const char []) _("{STR_VAR_1} is wandering around and\nsearching for something."), + (const char []) _("{STR_VAR_1} is sniffing at you."), + (const char []) _("{STR_VAR_1} seems to be a little\nhesitant..."), +}; diff --git a/src/event_object_movement.c b/src/event_object_movement.c index 78db0c4c3..a054279c8 100644 --- a/src/event_object_movement.c +++ b/src/event_object_movement.c @@ -1705,6 +1705,49 @@ static bool8 SpeciesHasType(u16 species, u8 type) { return gBaseStats[species].type1 == type || gBaseStats[species].type2 == 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; + } +} + +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_LENGTH, +}; + +// 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_FollowerLove, N_FOLLOWER_LOVE_MESSAGES}, + [FOLLOWER_EMOTION_SURPRISE] = {gFollowerSurpriseMessages, EventScript_FollowerGeneric, N_FOLLOWER_SURPRISE_MESSAGES}, + [FOLLOWER_EMOTION_CURIOUS] = {gFollowerCuriousMessages, EventScript_FollowerGeneric, N_FOLLOWER_CURIOUS_MESSAGES}, +}; + +// Call an applicable follower message script bool8 ScrFunc_getfolloweraction(struct ScriptContext *ctx) // Essentially a big switch for follower messages { u16 value; @@ -1717,6 +1760,8 @@ bool8 ScrFunc_getfolloweraction(struct ScriptContext *ctx) // Essentially a big u8 n_choices = 0; struct ObjectEvent *objEvent = GetFollowerObject(); struct Pokemon *mon = GetFirstLiveMon(); + u8 emotion; + u8 emotion_weight[FOLLOWER_EMOTION_LENGTH] = {0}; if (mon == NULL) { ScriptCall(ctx, EventScript_FollowerLovesYou); return FALSE; @@ -1751,24 +1796,46 @@ bool8 ScrFunc_getfolloweraction(struct ScriptContext *ctx) // Essentially a big message_choices[n_choices++] = EventScript_FollowerIsShivering; else if (mon->status & 0x10) // STATUS1_BURN message_choices[n_choices++] = EventScript_FollowerBurnPainful; - // 5. Location-based messages - map_region = GetCurrentRegionMapSectionId(); // defined in region_map_sections.h - if (GetMonData(mon, MON_DATA_MET_LOCATION) == map_region) - message_choices[n_choices++] = EventScript_FollowerMetLocation; - // 6. Friendship-based messages + // TODO: What influences a follower's emotion ? + // Happy, neutral, sad, upset, angry, daydream, love, surprise, quizzical + // Friendship: boost to 'happy' and 'love' + // Weather: Based on type + // Status/low health: boost to unhappy, poisoned + // Happy weights + // TODO: Add sprites from https://www.spriters-resource.com/ds_dsi/pokemonheartgoldsoulsilver/sheet/30497/ ? friendship = GetMonData(mon, MON_DATA_FRIENDSHIP); - if (friendship <= 80) - message_choices[n_choices++] = EventScript_FollowerSkeptical; - else if (friendship <= 170) - message_choices[n_choices++] = EventScript_FollowerAppraising; - else if (friendship < 255) - message_choices[n_choices++] = EventScript_FollowerHappyWalk; - else // Max friendship - message_choices[n_choices++] = EventScript_FollowerLovesYou; - if (!n_choices) - ScriptCall(ctx, EventScript_FollowerLovesYou); // Default in case of no choices - else - ScriptCall(ctx, message_choices[Random() % min(n_choices, ARRAY_COUNT(message_choices))]); + emotion_weight[FOLLOWER_EMOTION_HAPPY] = 10; + if (friendship > 170) + emotion_weight[FOLLOWER_EMOTION_HAPPY] = 30; + else if (friendship > 80) + emotion_weight[FOLLOWER_EMOTION_HAPPY] = 20; + // Neutral weights + emotion_weight[FOLLOWER_EMOTION_NEUTRAL] = 15; + // Sad weights + emotion_weight[FOLLOWER_EMOTION_SAD] = 5; + health_percent = mon->hp * 100 / mon->maxHP; + if (health_percent < 50 || mon->status & 0x40) // STATUS1_PARALYSIS + emotion_weight[FOLLOWER_EMOTION_SAD] = 30; + // Upset weights + emotion_weight[FOLLOWER_EMOTION_UPSET] = friendship < 80 ? 15 : 5; + // Angry weights + emotion_weight[FOLLOWER_EMOTION_ANGRY] = friendship < 80 ? 15 : 5; + // Pensive weights + emotion_weight[FOLLOWER_EMOTION_PENSIVE] = 15; + // Love weights + if (friendship > 170) + emotion_weight[FOLLOWER_EMOTION_LOVE] = 30; + else if (friendship > 80) + emotion_weight[FOLLOWER_EMOTION_LOVE] = 20; + // Surprise weights + // TODO: Scale this with how long the follower has been out + emotion_weight[FOLLOWER_EMOTION_SURPRISE] = 10; + // Curious weights + // TODO: Increase this if there is an item nearby, or if the pokemon has pickup + emotion_weight[FOLLOWER_EMOTION_CURIOUS] = 5; + emotion = RandomWeightedIndex(emotion_weight, FOLLOWER_EMOTION_LENGTH); + ctx->data[0] = (u32) followerBasicMessages[emotion].messages[Random() % followerBasicMessages[emotion].length]; + ScriptCall(ctx, followerBasicMessages[emotion].script); return FALSE; } From 875c4edd50399a507ea92d43cc2cbbee93c75a0b Mon Sep 17 00:00:00 2001 From: Ariel Antonitis Date: Sun, 18 Apr 2021 01:38:08 -0400 Subject: [PATCH 058/241] Added some conditional messages. Added emote graphics. --- data/scripts/follower.inc | 15 +- emotions.txt | 11 +- follower_emotions.py | 2 +- graphics/misc/emotes.pal | 19 +++ graphics/misc/emotes.png | Bin 0 -> 4058 bytes include/constants/field_effects.h | 1 + include/data.h | 2 + spritesheet_rules.mk | 4 + .../object_events/object_event_graphics.h | 1 + src/data/text/follower_messages.h | 6 + src/event_object_movement.c | 107 ++++++++----- src/trainer_see.c | 149 +++++++++++++++++- 12 files changed, 260 insertions(+), 57 deletions(-) create mode 100644 graphics/misc/emotes.pal create mode 100644 graphics/misc/emotes.png diff --git a/data/scripts/follower.inc b/data/scripts/follower.inc index 4907eb0c5..cf8c063c1 100644 --- a/data/scripts/follower.inc +++ b/data/scripts/follower.inc @@ -55,6 +55,12 @@ callfunc ScrFunc_bufferlivemonspeciesname .byte \out .endm +.macro emote obj:req id:req +callfunc ScrFunc_emote +.byte \obj +.byte \id +.endm + EventScript_Follower:: lock faceplayer @@ -73,6 +79,7 @@ EventScript_Follower:: EventScript_FollowerFly:: callfunc ScrFunc_followerfly EventScript_FollowerEnd:: + waitfieldeffect FLDEFF_EMOTE release end @@ -147,17 +154,13 @@ EventScript_FollowerBurnPainful:: return @ Message address must be loaded into bank 0 -EventScript_FollowerGeneric:: @ same as Std_MsgboxDefault +EventScript_FollowerGeneric:: @ similar to Std_MsgboxDefault + waitfieldeffect FLDEFF_EMOTE message 0x0 waitmessage waitbuttonpress return -EventScript_FollowerLove:: - applymovement 0xFE ContestHall_Movement_Heart - waitmovement 0xFE - goto EventScript_FollowerGeneric - EnterPokeballMovement:: .byte 0x9F @ EnterPokeball step_end diff --git a/emotions.txt b/emotions.txt index b8e43e08d..dad46cf11 100644 --- a/emotions.txt +++ b/emotions.txt @@ -1,14 +1,13 @@ Happy (Special): -{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} is very composed and sure of itself (in a gym with a type advantage). -{STR_VAR_1} greeted Amphy! {STR_VAR_1} greeted your mom. Your pokemon is staring intently at the mountain peak. {STR_VAR_1} is staring straight at the pokemon league. {STR_VAR_1} is staring at the sea. {STR_VAR_1} greeted everyone! -Your pokemon seems happy about the great weather. +{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} is very composed and sure of itself (in a gym with a type advantage). +{STR_VAR_1} greeted Amphy! Neutral (Special): (CELEBI) danced happily ( Pokemon Exclusive ). (CELEBI) danced beautiful ( Pokemon Exclusive ). @@ -187,5 +186,3 @@ Curious (Special): {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). -Poisoned: -{STR_VAR_1} is shivering with the effects of being poisoned. diff --git a/follower_emotions.py b/follower_emotions.py index 1d0fc10e5..6b8393019 100644 --- a/follower_emotions.py +++ b/follower_emotions.py @@ -47,4 +47,4 @@ def export_messages(infile, outfile, n=None, indent=2): if __name__ == '__main__': - export_messages('emotions.txt', 'emotions.h', n=7) + export_messages('emotions.txt', 'emotions.h', n=1) diff --git a/graphics/misc/emotes.pal b/graphics/misc/emotes.pal new file mode 100644 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 100644 index 0000000000000000000000000000000000000000..2460eaf999a8c1b67178882dce8d51853c6104a8 GIT binary patch literal 4058 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.x, objEvent->currentCoords.y); species = GetMonData(mon, MON_DATA_SPECIES); - // 1. Puddle splash or wet feet - if (MetatileBehavior_IsPuddle(behavior) || MetatileBehavior_IsShallowFlowingWater(behavior)) { - if (SpeciesHasType(species, TYPE_FIRE)) - message_choices[n_choices++] = EventScript_FollowerUnhappyToBeWet; - else if (SpeciesToGraphicsInfo(species, 0)->tracks) // if follower is grounded - message_choices[n_choices++] = EventScript_FollowerSplashesAbout; - } - // 2. Weather-based messages - if (GetCurrentWeather() == WEATHER_RAIN || GetCurrentWeather() == WEATHER_RAIN_THUNDERSTORM) { - if (SpeciesHasType(species, TYPE_FIRE)) - message_choices[n_choices++] = EventScript_FollowerUnhappyFace; - else if (SpeciesHasType(species, TYPE_WATER) || SpeciesHasType(species, TYPE_GRASS)) - message_choices[n_choices++] = EventScript_FollowerHappyRain; - } - // 3. Health & status-based messages - health_percent = mon->hp * 100 / mon->maxHP; - if (health_percent <= 20) - message_choices[n_choices++] = EventScript_FollowerAboutToFall; - else if (health_percent < 50 || mon->status & 0x40) // STATUS1_PARALYSIS - message_choices[n_choices++] = EventScript_FollowerTryingToKeepUp; - // 4. More status messages - if (mon->status & (0x20 | 0x8)) // STATUS1_FREEZE | STATUS1_POISON - message_choices[n_choices++] = EventScript_FollowerIsShivering; - else if (mon->status & 0x10) // STATUS1_BURN - message_choices[n_choices++] = EventScript_FollowerBurnPainful; - // TODO: What influences a follower's emotion ? - // Happy, neutral, sad, upset, angry, daydream, love, surprise, quizzical - // Friendship: boost to 'happy' and 'love' - // Weather: Based on type - // Status/low health: boost to unhappy, poisoned - // Happy weights - // TODO: Add sprites from https://www.spriters-resource.com/ds_dsi/pokemonheartgoldsoulsilver/sheet/30497/ ? friendship = GetMonData(mon, MON_DATA_FRIENDSHIP); + // // 1. Puddle splash or wet feet + // if (MetatileBehavior_IsPuddle(behavior) || MetatileBehavior_IsShallowFlowingWater(behavior)) { + // if (SpeciesHasType(species, TYPE_FIRE)) + // message_choices[n_choices++] = EventScript_FollowerUnhappyToBeWet; + // else if (SpeciesToGraphicsInfo(species, 0)->tracks) // if follower is grounded + // message_choices[n_choices++] = EventScript_FollowerSplashesAbout; + // } + // Happy weights emotion_weight[FOLLOWER_EMOTION_HAPPY] = 10; if (friendship > 170) emotion_weight[FOLLOWER_EMOTION_HAPPY] = 30; else if (friendship > 80) emotion_weight[FOLLOWER_EMOTION_HAPPY] = 20; + if (GetCurrentWeather() == WEATHER_SUNNY || GetCurrentWeather() == WEATHER_SUNNY_CLOUDS) + cond_emotes[n_choices++] = (struct SpecialEmote) {.emotion=FOLLOWER_EMOTION_HAPPY, .index=31}; // Neutral weights emotion_weight[FOLLOWER_EMOTION_NEUTRAL] = 15; // Sad weights @@ -1834,6 +1840,28 @@ bool8 ScrFunc_getfolloweraction(struct ScriptContext *ctx) // Essentially a big // TODO: Increase this if there is an item nearby, or if the pokemon has pickup emotion_weight[FOLLOWER_EMOTION_CURIOUS] = 5; emotion = RandomWeightedIndex(emotion_weight, FOLLOWER_EMOTION_LENGTH); + if (mon->status & 0x8) // STATUS1_POISON + emotion = FOLLOWER_EMOTION_POISONED; + ObjectEventEmote(objEvent, emotion); + if (Random() & 1) { // With 50% chance, select special message using reservoir sampling + u8 i, j = 1; + struct SpecialEmote *choice = 0; + for (i = 0; i < n_choices; i++) { + if (cond_emotes[i].emotion == emotion) { + if (Random() < 0x10000 / (j++)) // Replace item with 1/j chance + choice = &cond_emotes[i]; + } + } + if (choice) { // Only continue if a script was actually chosen + if (choice->script) + ScriptCall(ctx, choice->script); + else { + ctx->data[0] = (u32) followerBasicMessages[emotion].messages[choice->index]; + ScriptCall(ctx, followerBasicMessages[emotion].script); + } + return FALSE; + } + } ctx->data[0] = (u32) followerBasicMessages[emotion].messages[Random() % followerBasicMessages[emotion].length]; ScriptCall(ctx, followerBasicMessages[emotion].script); return FALSE; @@ -2119,7 +2147,7 @@ static u8 UpdateSpritePalette(const struct SpritePalette * spritePalette, struct } // Find and update based on template's paletteTag -// TODO: Should this logic happen in CreateSpriteAt? +// 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) @@ -7260,6 +7288,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->data[2] = 1; return TRUE; diff --git a/src/trainer_see.c b/src/trainer_see.c index 082b92f2c..ec4c8e461 100644 --- a/src/trainer_see.c +++ b/src/trainer_see.c @@ -62,6 +62,9 @@ EWRAM_DATA u8 gApproachingTrainerId = 0; static const u8 sEmotion_ExclamationMarkGfx[] = INCBIN_U8("graphics/misc/emotion_exclamation.4bpp"); static const u8 sEmotion_QuestionMarkGfx[] = INCBIN_U8("graphics/misc/emotion_question.4bpp"); static const u8 sEmotion_HeartGfx[] = INCBIN_U8("graphics/misc/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) = { @@ -147,6 +150,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, 30), + ANIMCMD_FRAME(0*2, 30), + ANIMCMD_END +}; + +static const union AnimCmd sSpriteAnim_Emotes1[] = { + ANIMCMD_FRAME(1*2, 30), + ANIMCMD_FRAME(1*2+1, 30), + ANIMCMD_FRAME(1*2, 30), + ANIMCMD_END +}; + +static const union AnimCmd sSpriteAnim_Emotes2[] = { + ANIMCMD_FRAME(2*2, 30), + ANIMCMD_FRAME(2*2+1, 30), + ANIMCMD_FRAME(2*2, 30), + ANIMCMD_END +}; + +static const union AnimCmd sSpriteAnim_Emotes3[] = { + ANIMCMD_FRAME(3*2, 30), + ANIMCMD_FRAME(3*2+1, 30), + ANIMCMD_FRAME(3*2, 30), + ANIMCMD_END +}; + +static const union AnimCmd sSpriteAnim_Emotes4[] = { + ANIMCMD_FRAME(4*2, 30), + ANIMCMD_FRAME(4*2+1, 30), + ANIMCMD_FRAME(4*2, 30), + ANIMCMD_END +}; + +static const union AnimCmd sSpriteAnim_Emotes5[] = { + ANIMCMD_FRAME(5*2, 30), + ANIMCMD_FRAME(5*2+1, 30), + ANIMCMD_FRAME(5*2, 30), + ANIMCMD_END +}; + +static const union AnimCmd sSpriteAnim_Emotes6[] = { + ANIMCMD_FRAME(6*2, 30), + ANIMCMD_FRAME(6*2+1, 30), + ANIMCMD_FRAME(6*2, 30), + ANIMCMD_END +}; + +static const union AnimCmd sSpriteAnim_Emotes7[] = { + ANIMCMD_FRAME(7*2, 30), + ANIMCMD_FRAME(7*2+1, 30), + ANIMCMD_FRAME(7*2, 30), + ANIMCMD_END +}; + +static const union AnimCmd sSpriteAnim_Emotes8[] = { + ANIMCMD_FRAME(8*2, 30), + ANIMCMD_FRAME(8*2+1, 30), + ANIMCMD_FRAME(8*2, 30), + ANIMCMD_END +}; + +static const union AnimCmd sSpriteAnim_Emotes9[] = { + ANIMCMD_FRAME(9*2, 30), + ANIMCMD_FRAME(9*2+1, 30), + ANIMCMD_FRAME(9*2, 30), + ANIMCMD_END +}; + +static const union AnimCmd sSpriteAnim_Emotes10[] = { + ANIMCMD_FRAME(10*2, 30), + ANIMCMD_FRAME(10*2+1, 30), + ANIMCMD_FRAME(10*2, 30), + ANIMCMD_END +}; + static const union AnimCmd sSpriteAnim_Icons1[] = { ANIMCMD_FRAME(0, 60), @@ -165,12 +271,28 @@ static const union AnimCmd *const sSpriteAnimTable_Icons[] = sSpriteAnim_Icons2 }; -#define OBJ_EVENT_PAL_TAG_17 0x1110 // TODO: Move this into event_object_movement.h +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 0x1125 static const struct SpriteTemplate sSpriteTemplate_ExclamationQuestionMark = { .tileTag = 0xffff, - .paletteTag = OBJ_EVENT_PAL_TAG_17, + .paletteTag = OBJ_EVENT_PAL_TAG_MAY, .oam = &sOamData_Icons, .anims = sSpriteAnimTable_Icons, .images = sSpriteImageTable_ExclamationQuestionMark, @@ -189,6 +311,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) { @@ -710,7 +842,17 @@ u8 FldEff_ExclamationMarkIcon(void) 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); @@ -723,7 +865,6 @@ 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]; From fbbd58a823878980cf61bfcfbf577aa7fea60e48 Mon Sep 17 00:00:00 2001 From: Ariel Antonitis Date: Sun, 18 Apr 2021 20:45:19 -0400 Subject: [PATCH 059/241] Added music messages. --- data/scripts/follower.inc | 9 +++ emotions.txt | 106 ++++++++++++------------------ follower_emotions.py | 2 +- include/data.h | 2 + src/data/text/follower_messages.h | 28 ++++++++ src/event_object_movement.c | 46 +++++++++---- src/trainer_see.c | 22 +++---- 7 files changed, 127 insertions(+), 88 deletions(-) diff --git a/data/scripts/follower.inc b/data/scripts/follower.inc index cf8c063c1..6e2b8ee3a 100644 --- a/data/scripts/follower.inc +++ b/data/scripts/follower.inc @@ -161,6 +161,15 @@ EventScript_FollowerGeneric:: @ similar to Std_MsgboxDefault waitbuttonpress return +EventScript_FollowerJump:: + applymovement 0xFE FollowerSplashMovement + waitmovement 0xFE + waitfieldeffect FLDEFF_EMOTE + message 0x0 + waitmessage + waitbuttonpress + return + EnterPokeballMovement:: .byte 0x9F @ EnterPokeball step_end diff --git a/emotions.txt b/emotions.txt index dad46cf11..42beb1d59 100644 --- a/emotions.txt +++ b/emotions.txt @@ -39,10 +39,6 @@ Your pokemon is staring intently at the sea! {STR_VAR_1} is looking outside and frolicking! {STR_VAR_1} spun around in a circle! Sad (Special): -{STR_VAR_1} is going to fall down! (when HP is red). -{STR_VAR_1} is not happy. (During rain if the pokemon is a fire type). -{STR_VAR_1} seems to be about to fall over! (When HP is red.). -{STR_VAR_1} is trying very hard to keep up with you... (When HP is yellow or paralyzed). {STR_VAR_1}'s burn looks painful! (when burnt). Upset (Special): {STR_VAR_1} is taking shelter in the grass from the rain. @@ -54,7 +50,7 @@ It seems to have eaten something strange. It's making an odd face... (Olivine Ca {STR_VAR_1} is a bit nervous about the narrow space! {STR_VAR_1} is splashing around in the grass (must be fire type). Your pokemon doesn't like splashing around on the ground (must be fire type). -{STR_VAR_1} is taking shelter in the grass from the rain (must be fire type). + {STR_VAR_1} seems very cold (when frozen). {STR_VAR_1} seems uneasy and is poking (PLAYER). {STR_VAR_1} is trembling with fear (Cemetery). @@ -83,27 +79,38 @@ Your pokemon is drooling a little (Olivine Cafe). {STR_VAR_1} seems very interested in the bicycles (bike shop). {STR_VAR_1} is preoccupied by the floor, which seems like it may collapse (burnt tower). {STR_VAR_1} is nervous ( in a gym before beating gym leader ) ( must have type disadvantage ). -Music: -{STR_VAR_1} is showing off its agility! -{STR_VAR_1} is moving around happily! -Woah! {STR_VAR_1} suddenly started dancing in happiness! -{STR_VAR_1} is steadily keeping up with you! -{STR_VAR_1} is very happy about the rain. -{STR_VAR_1} seems to want to play with (Player). +Music (Special): {STR_VAR_1} is pulling out the grass. -{STR_VAR_1} is happy skipping about. -{STR_VAR_1} is playing in the puddle. -{STR_VAR_1} is gazing restlessly at the building ( in goldenrod). -{STR_VAR_1} is singing and humming. -{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 nipping at your feet! +Waah! your pokemon suddenly splashed water! (on a shore). +{STR_VAR_1} is happy to see what's out doors! +{STR_VAR_1} seems to want to touch the machine! (Power plant). +{STR_VAR_1} is listening intently to the sound of the waves. +{STR_VAR_1} is swaying with the boat! +{STR_VAR_1} is dancing along with the rolling of the ship. +{STR_VAR_1} doesn't want to get off the boat yet! +{STR_VAR_1} is listening to the sound of the machine. +{STR_VAR_1} seems happy at the sight of water on the window! +Your pokemon is blowing sand in the air! +Your pokemon is staring spellbound at the night sky! +Your pokemon seems to be enjoying sliding around! +{STR_VAR_1} is touching the ice. +{STR_VAR_1} is steadily observing the flow of the river. +{STR_VAR_1} is noticing the scent of the grass. +{STR_VAR_1} is playing around, plucking bits of grass. +{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. +Your pokemon is happily gazing at the beautiful, starry sky! +{STR_VAR_1} is pulling out the grass. +{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 listening to the sound of the waterfall ( Mt. Mortar). +{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). @@ -117,43 +124,17 @@ Your pokemon is rolling a screw from a bicycle around. {STR_VAR_1} is looking up at the sky. {STR_VAR_1} seems to be happy about the rain! ( during rain, must not have type disadvantage to water). {STR_VAR_1} is clawing the grass! -{STR_VAR_1} turns around and looks at you. -{STR_VAR_1} is listening to the sound of the waterfall ( Mt. Mortar). -{STR_VAR_1} is looking up the tall mountain... (Mt. Mortar). -{STR_VAR_1} seems concerned about the waterfall. -{STR_VAR_1} is working hard to show off its mighty power! -{STR_VAR_1} pulled back to run! -Whoa! {STR_VAR_1} suddenly danced in happiness! -{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 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. -Your pokemon is happily gazing at the beautiful, starry sky! -{STR_VAR_1} is pulling out the grass. -{STR_VAR_1} seems to be enjoying this a little bit! -{STR_VAR_1} is looking up at the ceiling. -{STR_VAR_1} is cheerful! -{STR_VAR_1} is swaying with the boat! -{STR_VAR_1} is dancing along with the rolling of the ship. -{STR_VAR_1} doesn't want to get off the boat yet! -{STR_VAR_1} is listening to the sound of the machine. -{STR_VAR_1} seems happy at the sight of water on the window! -Your pokemon is blowing sand in the air! -Your pokemon is staring spellbound at the night sky! -Your pokemon seems to be enjoying sliding around! -{STR_VAR_1} is touching the ice. -{STR_VAR_1} is steadily observing the flow of the river. -{STR_VAR_1} is noticing the scent of the grass. -{STR_VAR_1} is playing around, plucking bits of grass. -{STR_VAR_1} is happy to see what's out doors! -{STR_VAR_1} seems to want to touch the machine! (Power plant). -{STR_VAR_1} is listening intently to the sound of the waves. -{STR_VAR_1} is jumping around in a carefree way! -Waah! your pokemon suddenly splashed water! (on a shore). -Your pokemon seems to be smelling a nostalgically familiar scent... +{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): Your pokemon has a flower petal on its face! (Newbark Town). {STR_VAR_1} seems to have gotten caught in the clumps of grass. @@ -164,7 +145,6 @@ Careful! seems like the floor could collapse, and it might fall. {STR_VAR_1} gazed surprisingly at the rock! Huh? your pokemon found something in top of the mountain ( outside Mt. Mortar) (!). {STR_VAR_1} is cautious about the confined area! -{STR_VAR_1} seems to be very surprised that it is raining! {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! diff --git a/follower_emotions.py b/follower_emotions.py index 6b8393019..b16409c10 100644 --- a/follower_emotions.py +++ b/follower_emotions.py @@ -47,4 +47,4 @@ def export_messages(infile, outfile, n=None, indent=2): if __name__ == '__main__': - export_messages('emotions.txt', 'emotions.h', n=1) + export_messages('emotions.txt', 'emotions.h', n=15) diff --git a/include/data.h b/include/data.h index 1c258dce1..2fbec8ec0 100644 --- a/include/data.h +++ b/include/data.h @@ -13,6 +13,7 @@ #define N_FOLLOWER_LOVE_MESSAGES 10 #define N_FOLLOWER_SURPRISE_MESSAGES 20 #define N_FOLLOWER_CURIOUS_MESSAGES 7 +#define N_FOLLOWER_MUSIC_MESSAGES 15 #define N_FOLLOWER_POISONED_MESSAGES 1 struct MonCoords @@ -142,6 +143,7 @@ extern const char * const gFollowerPensiveMessages[]; extern const char * const gFollowerLoveMessages[]; extern const char * const gFollowerSurpriseMessages[]; extern const char * const gFollowerCuriousMessages[]; +extern const char * const gFollowerMusicMessages[]; extern const char * const gFollowerPoisonedMessages[]; #endif // GUARD_DATA_H diff --git a/src/data/text/follower_messages.h b/src/data/text/follower_messages.h index ea3c14043..5339a79ba 100644 --- a/src/data/text/follower_messages.h +++ b/src/data/text/follower_messages.h @@ -59,6 +59,11 @@ const char * const gFollowerSadMessages[] = { (const char []) _("{STR_VAR_1} is dizzy."), (const char []) _("{STR_VAR_1} is stepping on your\nfeet!"), (const char []) _("{STR_VAR_1} seems a little tired."), + // Conditional messages begin, index 3 + (const char []) _("{STR_VAR_1} is not happy."), + (const char []) _("{STR_VAR_1} is going to fall down!\n"), + (const char []) _("{STR_VAR_1} seems to be about to\nfall over!"), + (const char []) _("{STR_VAR_1} is trying very hard to\nkeep up with you..."), }; // Unconditional upset messages @@ -66,6 +71,8 @@ const char * const gFollowerUpsetMessages[] = { (const char []) _("{STR_VAR_1} seems unhappy somehow..."), (const char []) _("{STR_VAR_1} is making an unhappy\nface."), (const char []) _(".....Your pokemon seems a little\ncold."), + // Conditional messages, index 3 + (const char []) _("{STR_VAR_1} is taking shelter in the\ngrass from the rain."), }; // Unconditional angry messages @@ -137,6 +144,8 @@ const char * const gFollowerSurpriseMessages[] = { (const char []) _("{STR_VAR_1} is scared and snuggled\nup to you!"), (const char []) _("{STR_VAR_1} is feeling an unusual\npresence..."), (const char []) _("{STR_VAR_1} is getting tense with\nnervous energy."), + // Conditional messages, index 20 + (const char []) _("{STR_VAR_1} seems to be very\nsurprised that it is raining!"), }; // Unconditional curious messages @@ -150,6 +159,25 @@ const char * const gFollowerCuriousMessages[] = { (const char []) _("{STR_VAR_1} seems to be a little\nhesitant..."), }; +// Unconditional music messages +const char * const gFollowerMusicMessages[] = { + (const char []) _("{STR_VAR_1} is showing off its\nagility!"), + (const char []) _("{STR_VAR_1} is moving around\nhappily!"), + (const char []) _("Woah! {STR_VAR_1} suddenly started\ndancing in happiness!"), + (const char []) _("{STR_VAR_1} is steadily keeping up\nwith you!"), + (const char []) _("{STR_VAR_1} is very happy about the\nrain."), + (const char []) _("{STR_VAR_1} seems to want to play\nwith you."), + (const char []) _("{STR_VAR_1} is happy skipping about."), + (const char []) _("{STR_VAR_1} is singing and humming."), + (const char []) _("{STR_VAR_1} is nipping at your feet!"), + (const char []) _("{STR_VAR_1} turns around and looks\nat you."), + (const char []) _("{STR_VAR_1} is working hard to show\noff its mighty power!"), + (const char []) _("Whoa! {STR_VAR_1} suddenly danced in\nhappiness!"), + (const char []) _("{STR_VAR_1} is cheerful!"), + (const char []) _("{STR_VAR_1} is jumping around in a\ncarefree way!"), + (const char []) _("Your pokemon seems to be smelling a\nnostalgically familiar scent..."), +}; + const char * const gFollowerPoisonedMessages[] = { (const char []) _("{STR_VAR_1} is shivering with the\neffects of being poisoned."), }; diff --git a/src/event_object_movement.c b/src/event_object_movement.c index b27f988d5..f143353d1 100644 --- a/src/event_object_movement.c +++ b/src/event_object_movement.c @@ -1749,6 +1749,7 @@ static const struct FollowerMessagePool followerBasicMessages[] = { [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}, }; @@ -1813,15 +1814,10 @@ bool8 ScrFunc_getfolloweraction(struct ScriptContext *ctx) // Essentially a big emotion_weight[FOLLOWER_EMOTION_HAPPY] = 30; else if (friendship > 80) emotion_weight[FOLLOWER_EMOTION_HAPPY] = 20; - if (GetCurrentWeather() == WEATHER_SUNNY || GetCurrentWeather() == WEATHER_SUNNY_CLOUDS) - cond_emotes[n_choices++] = (struct SpecialEmote) {.emotion=FOLLOWER_EMOTION_HAPPY, .index=31}; // Neutral weights emotion_weight[FOLLOWER_EMOTION_NEUTRAL] = 15; // Sad weights emotion_weight[FOLLOWER_EMOTION_SAD] = 5; - health_percent = mon->hp * 100 / mon->maxHP; - if (health_percent < 50 || mon->status & 0x40) // STATUS1_PARALYSIS - emotion_weight[FOLLOWER_EMOTION_SAD] = 30; // Upset weights emotion_weight[FOLLOWER_EMOTION_UPSET] = friendship < 80 ? 15 : 5; // Angry weights @@ -1833,12 +1829,37 @@ bool8 ScrFunc_getfolloweraction(struct ScriptContext *ctx) // Essentially a big emotion_weight[FOLLOWER_EMOTION_LOVE] = 30; else if (friendship > 80) emotion_weight[FOLLOWER_EMOTION_LOVE] = 20; - // Surprise weights - // TODO: Scale this with how long the follower has been out + // Surprise weights TODO: Scale this with how long the follower has been out emotion_weight[FOLLOWER_EMOTION_SURPRISE] = 10; - // Curious weights - // TODO: Increase this if there is an item nearby, or if the pokemon has pickup - emotion_weight[FOLLOWER_EMOTION_CURIOUS] = 5; + // Curious weights TODO: Increase this if there is an item nearby, or if the pokemon has pickup + emotion_weight[FOLLOWER_EMOTION_CURIOUS] = 10; + // Music weights TODO: Change this depending on music ? + emotion_weight[FOLLOWER_EMOTION_MUSIC] = friendship > 80 ? 20 : 15; + + // Conditional messages follow + // Weather-related + if (GetCurrentWeather() == WEATHER_SUNNY || GetCurrentWeather() == WEATHER_SUNNY_CLOUDS) + cond_emotes[n_choices++] = (struct SpecialEmote) {.emotion=FOLLOWER_EMOTION_HAPPY, .index=31}; + else if (GetCurrentWeather() == WEATHER_RAIN || GetCurrentWeather() == WEATHER_RAIN_THUNDERSTORM) { + if (SpeciesHasType(species, TYPE_FIRE)) { + emotion_weight[FOLLOWER_EMOTION_SAD] = 30; + cond_emotes[n_choices++] = (struct SpecialEmote) {.emotion=FOLLOWER_EMOTION_SAD, .index=3}; + cond_emotes[n_choices++] = (struct SpecialEmote) {.emotion=FOLLOWER_EMOTION_UPSET, .index=3}; + } + cond_emotes[n_choices++] = (struct SpecialEmote) {.emotion=FOLLOWER_EMOTION_SURPRISE, .index=20}; + } + // Health & status-related + health_percent = mon->hp * 100 / mon->maxHP; + if (health_percent < 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 (health_percent < 50 || mon->status & 0x40) { // STATUS1_PARALYSIS + emotion_weight[FOLLOWER_EMOTION_SAD] = 30; + cond_emotes[n_choices++] = (struct SpecialEmote) {.emotion=FOLLOWER_EMOTION_SAD, .index=6}; + } + emotion = RandomWeightedIndex(emotion_weight, FOLLOWER_EMOTION_LENGTH); if (mon->status & 0x8) // STATUS1_POISON emotion = FOLLOWER_EMOTION_POISONED; @@ -1853,12 +1874,11 @@ bool8 ScrFunc_getfolloweraction(struct ScriptContext *ctx) // Essentially a big } } if (choice) { // Only continue if a script was actually chosen + ctx->data[0] = (u32) followerBasicMessages[emotion].messages[choice->index]; if (choice->script) ScriptCall(ctx, choice->script); - else { - ctx->data[0] = (u32) followerBasicMessages[emotion].messages[choice->index]; + else ScriptCall(ctx, followerBasicMessages[emotion].script); - } return FALSE; } } diff --git a/src/trainer_see.c b/src/trainer_see.c index ec4c8e461..eb0cef473 100644 --- a/src/trainer_see.c +++ b/src/trainer_see.c @@ -178,77 +178,77 @@ static const struct SpriteFrameImage sSpriteImageTable_Emotes[] = static const union AnimCmd sSpriteAnim_Emotes0[] = { ANIMCMD_FRAME(0*2, 30), - ANIMCMD_FRAME(0*2+1, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 30), + ANIMCMD_FRAME(10*2+1, 25), ANIMCMD_FRAME(10*2, 30), ANIMCMD_END }; From a36d6c3c2c6e54fa131a3f48c4d92935ba751f20 Mon Sep 17 00:00:00 2001 From: Ariel Antonitis Date: Sun, 18 Apr 2021 22:24:34 -0400 Subject: [PATCH 060/241] Renamed OAM tables to match master. Fixed renamed functions, etc. --- .../object_event_graphics_info.h | 1320 ++++++++--------- .../object_events/object_event_pic_tables.h | 862 +++++------ src/event_object_movement.c | 11 +- src/pokemon_summary_screen.c | 2 +- 4 files changed, 1097 insertions(+), 1098 deletions(-) diff --git a/src/data/object_events/object_event_graphics_info.h b/src/data/object_events/object_event_graphics_info.h index 4aed7cbf0..dc9676260 100755 --- a/src/data/object_events/object_event_graphics_info.h +++ b/src/data/object_events/object_event_graphics_info.h @@ -1,664 +1,664 @@ -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_BrendanNormal = {0xFFFF, OBJ_EVENT_PAL_TAG_BRENDAN, OBJ_EVENT_PAL_TAG_BRIDGE_REFLECTION, 512, 16, 32, 0, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, sAnimTable_BrendanMayNormal, gObjectEventPicTable_BrendanNormal, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_BrendanMachBike = {0xFFFF, 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, gObjectEventSpriteOamTables_32x32, sAnimTable_Standard, gObjectEventPicTable_BrendanMachBike, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_BrendanAcroBike = {0xFFFF, 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, gObjectEventSpriteOamTables_32x32, sAnimTable_AcroBike, gObjectEventPicTable_BrendanAcroBike, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_BrendanSurfing = {0xFFFF, OBJ_EVENT_PAL_TAG_BRENDAN, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 0, SHADOW_SIZE_M, FALSE, TRUE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, sAnimTable_Surfing, gObjectEventPicTable_BrendanSurfing, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_BrendanFieldMove = {0xFFFF, OBJ_EVENT_PAL_TAG_BRENDAN, OBJ_EVENT_PAL_TAG_BRIDGE_REFLECTION, 512, 32, 32, 0, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, sAnimTable_FieldMove, gObjectEventPicTable_BrendanFieldMove, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_QuintyPlump = {0xFFFF, OBJ_EVENT_PAL_TAG_QUINTY_PLUMP, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_L, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, sAnimTable_QuintyPlump, gObjectEventPicTable_QuintyPlump, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_NinjaBoy = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_1, OBJ_EVENT_PAL_TAG_NONE, 128, 16, 16, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x16, gObjectEventSpriteOamTables_16x16, sAnimTable_Standard, gObjectEventPicTable_NinjaBoy, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Twin = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_2, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 3, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, sAnimTable_Standard, gObjectEventPicTable_Twin, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Boy1 = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_3, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 4, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, sAnimTable_Standard, gObjectEventPicTable_Boy1, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Girl1 = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_2, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 3, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, sAnimTable_Standard, gObjectEventPicTable_Girl1, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Boy2 = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_1, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, sAnimTable_Standard, gObjectEventPicTable_Boy2, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Girl2 = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_3, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 4, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, sAnimTable_Standard, gObjectEventPicTable_Girl2, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_LittleBoy = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_4, OBJ_EVENT_PAL_TAG_NONE, 128, 16, 16, 5, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x16, gObjectEventSpriteOamTables_16x16, sAnimTable_Standard, gObjectEventPicTable_LittleBoy, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_LittleGirl = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_2, OBJ_EVENT_PAL_TAG_NONE, 128, 16, 16, 3, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x16, gObjectEventSpriteOamTables_16x16, sAnimTable_Standard, gObjectEventPicTable_LittleGirl, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Boy3 = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_4, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 5, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, sAnimTable_Standard, gObjectEventPicTable_Boy3, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Girl3 = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_2, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 3, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, sAnimTable_Standard, gObjectEventPicTable_Girl3, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_RichBoy = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_3, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 4, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, sAnimTable_Standard, gObjectEventPicTable_RichBoy, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Woman1 = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_1, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, sAnimTable_Standard, gObjectEventPicTable_Woman1, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_FatMan = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_1, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, sAnimTable_Standard, gObjectEventPicTable_FatMan, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_PokefanF = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_2, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 3, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, sAnimTable_Standard, gObjectEventPicTable_PokefanF, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Man1 = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_3, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 4, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, sAnimTable_Standard, gObjectEventPicTable_Man1, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Woman2 = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_3, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 4, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, sAnimTable_Standard, gObjectEventPicTable_Woman2, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_ExpertM = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_4, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 5, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, sAnimTable_Standard, gObjectEventPicTable_ExpertM, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_ExpertF = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_4, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 5, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, sAnimTable_Standard, gObjectEventPicTable_ExpertF, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Man2 = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_3, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 4, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, sAnimTable_Standard, gObjectEventPicTable_Man2, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Woman3 = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_2, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 3, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, sAnimTable_Standard, gObjectEventPicTable_Woman3, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_PokefanM = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_2, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 3, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, sAnimTable_Standard, gObjectEventPicTable_PokefanM, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Woman4 = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_1, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, sAnimTable_Standard, gObjectEventPicTable_Woman4, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Cook = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_3, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 4, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, sAnimTable_Standard, gObjectEventPicTable_Cook, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_LinkReceptionist = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_3, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 4, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, sAnimTable_Standard, gObjectEventPicTable_LinkReceptionist, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_OldMan = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_4, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 5, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, sAnimTable_Standard, gObjectEventPicTable_OldMan, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_OldWoman = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_3, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 4, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, sAnimTable_Standard, gObjectEventPicTable_OldWoman, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Camper = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_3, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 4, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, sAnimTable_Standard, gObjectEventPicTable_Camper, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Picnicker = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_3, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 4, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, sAnimTable_Standard, gObjectEventPicTable_Picnicker, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Man3 = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_2, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 3, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, sAnimTable_Standard, gObjectEventPicTable_Man3, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Woman5 = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_2, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 3, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, sAnimTable_Standard, gObjectEventPicTable_Woman5, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Youngster = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_1, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, sAnimTable_Standard, gObjectEventPicTable_Youngster, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_BugCatcher = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_1, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, sAnimTable_Standard, gObjectEventPicTable_BugCatcher, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_PsychicM = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_4, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 5, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, sAnimTable_Standard, gObjectEventPicTable_PsychicM, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_SchoolKidM = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_1, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, sAnimTable_Standard, gObjectEventPicTable_SchoolKidM, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Maniac = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_4, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 5, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, sAnimTable_Standard, gObjectEventPicTable_Maniac, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_HexManiac = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_4, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 5, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, sAnimTable_Standard, gObjectEventPicTable_HexManiac, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Rayquaza1 = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_3, OBJ_EVENT_PAL_TAG_NONE, 2048, 64, 64, 4, SHADOW_SIZE_M, FALSE, TRUE, TRACKS_FOOT, &gObjectEventBaseOam_64x64, gObjectEventSpriteOamTables_64x64, sAnimTable_Standard, sPicTable_RayquazaStill, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_SwimmerM = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_1, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, sAnimTable_Standard, gObjectEventPicTable_SwimmerM, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_SwimmerF = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_2, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 3, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, sAnimTable_Standard, gObjectEventPicTable_SwimmerF, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_BlackBelt = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_3, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 4, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, sAnimTable_Standard, gObjectEventPicTable_BlackBelt, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Beauty = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_3, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 4, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, sAnimTable_Standard, gObjectEventPicTable_Beauty, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Scientist1 = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_3, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 4, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, sAnimTable_Standard, gObjectEventPicTable_Scientist1, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Lass = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_4, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 5, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, sAnimTable_Standard, gObjectEventPicTable_Lass, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Gentleman = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_3, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 4, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, sAnimTable_Standard, gObjectEventPicTable_Gentleman, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Sailor = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_1, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, sAnimTable_Standard, gObjectEventPicTable_Sailor, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Fisherman = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_2, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 3, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, sAnimTable_Standard, gObjectEventPicTable_Fisherman, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_RunningTriathleteM = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_4, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 5, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, sAnimTable_Standard, gObjectEventPicTable_RunningTriathleteM, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_RunningTriathleteF = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_2, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 3, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, sAnimTable_Standard, gObjectEventPicTable_RunningTriathleteF, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_TuberF = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_1, OBJ_EVENT_PAL_TAG_NONE, 128, 16, 16, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x16, gObjectEventSpriteOamTables_16x16, sAnimTable_Standard, gObjectEventPicTable_TuberF, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_TuberM = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_2, OBJ_EVENT_PAL_TAG_NONE, 128, 16, 16, 3, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x16, gObjectEventSpriteOamTables_16x16, sAnimTable_Standard, gObjectEventPicTable_TuberM, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Hiker = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_1, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, sAnimTable_Standard, gObjectEventPicTable_Hiker, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_CyclingTriathleteM = {0xFFFF, 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, gObjectEventSpriteOamTables_32x32, sAnimTable_AcroBike, gObjectEventPicTable_CyclingTriathleteM, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_CyclingTriathleteF = {0xFFFF, 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, gObjectEventSpriteOamTables_32x32, sAnimTable_AcroBike, gObjectEventPicTable_CyclingTriathleteF, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Nurse = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_1, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, sAnimTable_Nurse, gObjectEventPicTable_Nurse, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_ItemBall = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_3, OBJ_EVENT_PAL_TAG_NONE, 128, 16, 16, 4, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_16x16, gObjectEventSpriteOamTables_16x16, sAnimTable_Inanimate, gObjectEventPicTable_ItemBall, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_BerryTree = {0xFFFF, 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, gObjectEventPicTable_PechaBerryTree, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_BerryTreeEarlyStages = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_1, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 16, 2, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_16x16, gObjectEventSpriteOamTables_16x16, sAnimTable_BerryTree, gObjectEventPicTable_PechaBerryTree, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_BerryTreeLateStages = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_1, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 2, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, sAnimTable_BerryTree, gObjectEventPicTable_PechaBerryTree, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_ProfBirch = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_3, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 4, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, sAnimTable_Standard, gObjectEventPicTable_ProfBirch, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Man4 = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_4, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 5, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, sAnimTable_Standard, gObjectEventPicTable_Man4, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Man5 = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_2, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 3, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, sAnimTable_Standard, gObjectEventPicTable_Man5, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_ReporterM = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_4, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 5, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, sAnimTable_Standard, gObjectEventPicTable_ReporterM, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_ReporterF = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_4, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 5, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, sAnimTable_Standard, gObjectEventPicTable_ReporterF, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Bard = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_1, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, sAnimTable_Standard, gObjectEventPicTable_MauvilleOldMan1, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Hipster = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_2, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 3, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, sAnimTable_Standard, gObjectEventPicTable_MauvilleOldMan1, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Trader = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_3, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 4, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, sAnimTable_Standard, gObjectEventPicTable_MauvilleOldMan1, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Storyteller = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_1, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, sAnimTable_Standard, gObjectEventPicTable_MauvilleOldMan2, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Giddy = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_2, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 3, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, sAnimTable_Standard, gObjectEventPicTable_MauvilleOldMan2, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_UnusedMauvilleOldMan1 = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_3, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 4, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, sAnimTable_Standard, gObjectEventPicTable_MauvilleOldMan2, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_UnusedMauvilleOldMan2 = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_4, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 5, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, sAnimTable_Standard, gObjectEventPicTable_MauvilleOldMan2, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_UnusedNatuDoll = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_3, OBJ_EVENT_PAL_TAG_NONE, 128, 16, 16, 4, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_16x16, gObjectEventSpriteOamTables_16x16, sAnimTable_Inanimate, gObjectEventPicTable_UnusedNatuDoll, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_UnusedMagnemiteDoll = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_3, OBJ_EVENT_PAL_TAG_NONE, 128, 16, 16, 4, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_16x16, gObjectEventSpriteOamTables_16x16, sAnimTable_Inanimate, gObjectEventPicTable_UnusedMagnemiteDoll, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_UnusedSquirtleDoll = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_1, OBJ_EVENT_PAL_TAG_NONE, 128, 16, 16, 2, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_16x16, gObjectEventSpriteOamTables_16x16, sAnimTable_Inanimate, gObjectEventPicTable_UnusedSquirtleDoll, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_UnusedWooperDoll = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_3, OBJ_EVENT_PAL_TAG_NONE, 128, 16, 16, 4, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_16x16, gObjectEventSpriteOamTables_16x16, sAnimTable_Inanimate, gObjectEventPicTable_UnusedWooperDoll, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_UnusedPikachuDoll = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_2, OBJ_EVENT_PAL_TAG_NONE, 128, 16, 16, 3, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_16x16, gObjectEventSpriteOamTables_16x16, sAnimTable_Inanimate, gObjectEventPicTable_UnusedPikachuDoll, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_UnusedPorygon2Doll = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_1, OBJ_EVENT_PAL_TAG_NONE, 128, 16, 16, 2, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_16x16, gObjectEventSpriteOamTables_16x16, sAnimTable_Inanimate, gObjectEventPicTable_UnusedPorygon2Doll, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_CuttableTree = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_3, OBJ_EVENT_PAL_TAG_NONE, 128, 16, 16, 4, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_16x16, gObjectEventSpriteOamTables_16x16, sAnimTable_CuttableTree, gObjectEventPicTable_CuttableTree, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_MartEmployee = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_1, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, sAnimTable_Standard, gObjectEventPicTable_MartEmployee, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_RooftopSaleWoman = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_1, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, sAnimTable_Standard, gObjectEventPicTable_RooftopSaleWoman, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Teala = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_1, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, sAnimTable_Standard, gObjectEventPicTable_Teala, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_BreakableRock = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_1, OBJ_EVENT_PAL_TAG_NONE, 128, 16, 16, 2, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_16x16, gObjectEventSpriteOamTables_16x16, sAnimTable_BreakableRock, gObjectEventPicTable_BreakableRock, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_PushableBoulder = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_1, OBJ_EVENT_PAL_TAG_NONE, 128, 16, 16, 2, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_16x16, gObjectEventSpriteOamTables_16x16, sAnimTable_Inanimate, gObjectEventPicTable_PushableBoulder, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_MrBrineysBoat = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_3, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 4, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, sAnimTable_Standard, gObjectEventPicTable_MrBrineysBoat, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_MayNormal = {0xFFFF, OBJ_EVENT_PAL_TAG_MAY, OBJ_EVENT_PAL_TAG_BRIDGE_REFLECTION, 512, 16, 32, 0, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, sAnimTable_BrendanMayNormal, gObjectEventPicTable_MayNormal, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_MayMachBike = {0xFFFF, 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, gObjectEventSpriteOamTables_32x32, sAnimTable_Standard, gObjectEventPicTable_MayMachBike, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_MayAcroBike = {0xFFFF, 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, gObjectEventSpriteOamTables_32x32, sAnimTable_AcroBike, gObjectEventPicTable_MayAcroBike, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_MaySurfing = {0xFFFF, OBJ_EVENT_PAL_TAG_MAY, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 0, SHADOW_SIZE_M, FALSE, TRUE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, sAnimTable_Surfing, gObjectEventPicTable_MaySurfing, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_MayFieldMove = {0xFFFF, OBJ_EVENT_PAL_TAG_MAY, OBJ_EVENT_PAL_TAG_BRIDGE_REFLECTION, 512, 32, 32, 0, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, sAnimTable_FieldMove, gObjectEventPicTable_MayFieldMove, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Truck = {0xFFFF, OBJ_EVENT_PAL_TAG_TRUCK, OBJ_EVENT_PAL_TAG_NONE, 1152, 48, 48, 10, SHADOW_SIZE_M, TRUE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_48x48, sAnimTable_Inanimate, gObjectEventPicTable_Truck, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_VigorothCarryingBox = {0xFFFF, OBJ_EVENT_PAL_TAG_VIGOROTH, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, sAnimTable_Standard, sPicTable_VigorothCarryingBox, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_VigorothFacingAway = {0xFFFF, OBJ_EVENT_PAL_TAG_VIGOROTH, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, sAnimTable_Standard, sPicTable_VigorothFacingAway, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_BirchsBag = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_2, OBJ_EVENT_PAL_TAG_NONE, 128, 16, 16, 3, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_16x16, gObjectEventSpriteOamTables_16x16, sAnimTable_Inanimate, gObjectEventPicTable_BirchsBag, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_EnemyZigzagoon = {0xFFFF, OBJ_EVENT_PAL_TAG_ZIGZAGOON, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, sAnimTable_Standard, gObjectEventPicTable_EnemyZigzagoon, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Poochyena = {0xFFFF, OBJ_EVENT_PAL_TAG_POOCHYENA, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, sAnimTable_Standard, gObjectEventPicTable_PoochyenaOld, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Artist = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_4, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 5, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, sAnimTable_Standard, sPicTable_Artist, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_RivalBrendanNormal = {0xFFFF, OBJ_EVENT_PAL_TAG_BRENDAN, OBJ_EVENT_PAL_TAG_BRIDGE_REFLECTION, 256, 16, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, sAnimTable_BrendanMayNormal, gObjectEventPicTable_BrendanNormal, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_RivalBrendanMachBike = {0xFFFF, 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, gObjectEventSpriteOamTables_32x32, sAnimTable_Standard, gObjectEventPicTable_BrendanMachBike, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_RivalBrendanAcroBike = {0xFFFF, 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, gObjectEventSpriteOamTables_32x32, sAnimTable_AcroBike, gObjectEventPicTable_BrendanAcroBike, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_RivalBrendanSurfing = {0xFFFF, OBJ_EVENT_PAL_TAG_BRENDAN, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, TRUE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, sAnimTable_Surfing, gObjectEventPicTable_BrendanSurfing, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_RivalBrendanFieldMove = {0xFFFF, OBJ_EVENT_PAL_TAG_BRENDAN, OBJ_EVENT_PAL_TAG_BRIDGE_REFLECTION, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, sAnimTable_FieldMove, gObjectEventPicTable_BrendanFieldMove, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_RivalMayNormal = {0xFFFF, OBJ_EVENT_PAL_TAG_MAY, OBJ_EVENT_PAL_TAG_BRIDGE_REFLECTION, 256, 16, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, sAnimTable_BrendanMayNormal, gObjectEventPicTable_MayNormal, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_RivalMayMachBike = {0xFFFF, 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, gObjectEventSpriteOamTables_32x32, sAnimTable_Standard, gObjectEventPicTable_MayMachBike, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_RivalMayAcroBike = {0xFFFF, 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, gObjectEventSpriteOamTables_32x32, sAnimTable_AcroBike, gObjectEventPicTable_MayAcroBike, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_RivalMaySurfing = {0xFFFF, OBJ_EVENT_PAL_TAG_MAY, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, TRUE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, sAnimTable_Surfing, gObjectEventPicTable_MaySurfing, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_RivalMayFieldMove = {0xFFFF, OBJ_EVENT_PAL_TAG_MAY, OBJ_EVENT_PAL_TAG_BRIDGE_REFLECTION, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, sAnimTable_FieldMove, gObjectEventPicTable_MayFieldMove, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Cameraman = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_4, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 5, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, sAnimTable_Standard, gObjectEventPicTable_Cameraman, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_BrendanUnderwater = {0xFFFF, OBJ_EVENT_PAL_TAG_PLAYER_UNDERWATER, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 0, SHADOW_SIZE_M, FALSE, TRUE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, sAnimTable_Standard, gObjectEventPicTable_BrendanUnderwater, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_MayUnderwater = {0xFFFF, OBJ_EVENT_PAL_TAG_PLAYER_UNDERWATER, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, TRUE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, sAnimTable_Standard, gObjectEventPicTable_MayUnderwater, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_MovingBox = {0xFFFF, OBJ_EVENT_PAL_TAG_MOVING_BOX, OBJ_EVENT_PAL_TAG_NONE, 128, 16, 16, 10, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_16x16, gObjectEventSpriteOamTables_16x16, sAnimTable_Inanimate, gObjectEventPicTable_MovingBox, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_CableCar = {0xFFFF, OBJ_EVENT_PAL_TAG_CABLE_CAR, OBJ_EVENT_PAL_TAG_NONE, 2048, 64, 64, 10, SHADOW_SIZE_M, TRUE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_64x64, gObjectEventSpriteOamTables_64x64, sAnimTable_Inanimate, gObjectEventPicTable_CableCar, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Scientist2 = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_1, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, sAnimTable_Standard, gObjectEventPicTable_Scientist2, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_DevonEmployee = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_2, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 3, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, sAnimTable_Standard, gObjectEventPicTable_DevonEmployee, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_AquaMemberM = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_4, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 5, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, sAnimTable_Standard, gObjectEventPicTable_AquaMemberM, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_AquaMemberF = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_4, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 5, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, sAnimTable_Standard, gObjectEventPicTable_AquaMemberF, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_MagmaMemberM = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_2, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 3, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, sAnimTable_Standard, gObjectEventPicTable_MagmaMemberM, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_MagmaMemberF = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_2, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 3, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, sAnimTable_Standard, gObjectEventPicTable_MagmaMemberF, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Sidney = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_2, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 3, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, sAnimTable_Standard, gObjectEventPicTable_Sidney, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Phoebe = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_1, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, sAnimTable_Standard, gObjectEventPicTable_Phoebe, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Glacia = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_2, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 3, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, sAnimTable_Standard, gObjectEventPicTable_Glacia, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Drake = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_3, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 4, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, sAnimTable_Standard, gObjectEventPicTable_Drake, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Roxanne = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_1, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, sAnimTable_Standard, gObjectEventPicTable_Roxanne, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Brawly = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_3, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 4, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, sAnimTable_Standard, gObjectEventPicTable_Brawly, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Wattson = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_2, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 3, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, sAnimTable_Standard, gObjectEventPicTable_Wattson, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Flannery = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_1, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, sAnimTable_Standard, gObjectEventPicTable_Flannery, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Norman = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_4, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 5, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, sAnimTable_Standard, gObjectEventPicTable_Norman, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Winona = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_4, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 5, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, sAnimTable_Standard, gObjectEventPicTable_Winona, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Liza = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_1, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, sAnimTable_Standard, gObjectEventPicTable_Liza, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Tate = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_1, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, sAnimTable_Standard, gObjectEventPicTable_Tate, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Wallace = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_4, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 5, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, sAnimTable_Standard, gObjectEventPicTable_Wallace, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Steven = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_4, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 5, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, sAnimTable_Standard, gObjectEventPicTable_Steven, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Wally = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_1, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, sAnimTable_Standard, gObjectEventPicTable_Wally, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_RubySapphireLittleBoy = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_1, OBJ_EVENT_PAL_TAG_NONE, 128, 16, 16, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x16, gObjectEventSpriteOamTables_16x16, sAnimTable_Standard, gObjectEventPicTable_RubySapphireLittleBoy, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_BrendanFishing = {0xFFFF, OBJ_EVENT_PAL_TAG_BRENDAN, OBJ_EVENT_PAL_TAG_BRIDGE_REFLECTION, 512, 32, 32, 0, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, sAnimTable_Fishing, gObjectEventPicTable_BrendanFishing, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_MayFishing = {0xFFFF, OBJ_EVENT_PAL_TAG_MAY, OBJ_EVENT_PAL_TAG_BRIDGE_REFLECTION, 512, 32, 32, 0, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, sAnimTable_Fishing, gObjectEventPicTable_MayFishing, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_HotSpringsOldWoman = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_4, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 5, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, sAnimTable_Standard, gObjectEventPicTable_HotSpringsOldWoman, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_SSTidal = {0xFFFF, OBJ_EVENT_PAL_TAG_SSTIDAL, OBJ_EVENT_PAL_TAG_NONE, 1920, 96, 40, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_8x8, gObjectEventSpriteOamTables_96x40, sAnimTable_Standard, gObjectEventPicTable_SSTidal, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_SubmarineShadow = {0xFFFF, OBJ_EVENT_PAL_TAG_SUBMARINE_SHADOW, OBJ_EVENT_PAL_TAG_NONE, 1408, 88, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_8x8, gObjectEventSpriteOamTables_88x32, sAnimTable_Standard, gObjectEventPicTable_SubmarineShadow, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_PichuDoll = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_2, OBJ_EVENT_PAL_TAG_NONE, 128, 16, 16, 3, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_16x16, gObjectEventSpriteOamTables_16x16, sAnimTable_Inanimate, gObjectEventPicTable_PichuDoll, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_PikachuDoll = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_2, OBJ_EVENT_PAL_TAG_NONE, 128, 16, 16, 3, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_16x16, gObjectEventSpriteOamTables_16x16, sAnimTable_Inanimate, gObjectEventPicTable_PikachuDoll, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_MarillDoll = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_1, OBJ_EVENT_PAL_TAG_NONE, 128, 16, 16, 2, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_16x16, gObjectEventSpriteOamTables_16x16, sAnimTable_Inanimate, gObjectEventPicTable_MarillDoll, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_TogepiDoll = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_3, OBJ_EVENT_PAL_TAG_NONE, 128, 16, 16, 4, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_16x16, gObjectEventSpriteOamTables_16x16, sAnimTable_Inanimate, gObjectEventPicTable_TogepiDoll, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_CyndaquilDoll = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_4, OBJ_EVENT_PAL_TAG_NONE, 128, 16, 16, 5, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_16x16, gObjectEventSpriteOamTables_16x16, sAnimTable_Inanimate, gObjectEventPicTable_CyndaquilDoll, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_ChikoritaDoll = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_3, OBJ_EVENT_PAL_TAG_NONE, 128, 16, 16, 4, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_16x16, gObjectEventSpriteOamTables_16x16, sAnimTable_Inanimate, gObjectEventPicTable_ChikoritaDoll, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_TotodileDoll = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_1, OBJ_EVENT_PAL_TAG_NONE, 128, 16, 16, 2, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_16x16, gObjectEventSpriteOamTables_16x16, sAnimTable_Inanimate, gObjectEventPicTable_TotodileDoll, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_JigglypuffDoll = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_1, OBJ_EVENT_PAL_TAG_NONE, 128, 16, 16, 2, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_16x16, gObjectEventSpriteOamTables_16x16, sAnimTable_Inanimate, gObjectEventPicTable_JigglypuffDoll, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_MeowthDoll = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_2, OBJ_EVENT_PAL_TAG_NONE, 128, 16, 16, 3, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_16x16, gObjectEventSpriteOamTables_16x16, sAnimTable_Inanimate, gObjectEventPicTable_MeowthDoll, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_ClefairyDoll = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_1, OBJ_EVENT_PAL_TAG_NONE, 128, 16, 16, 2, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_16x16, gObjectEventSpriteOamTables_16x16, sAnimTable_Inanimate, gObjectEventPicTable_ClefairyDoll, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_DittoDoll = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_4, OBJ_EVENT_PAL_TAG_NONE, 128, 16, 16, 5, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_16x16, gObjectEventSpriteOamTables_16x16, sAnimTable_Inanimate, gObjectEventPicTable_DittoDoll, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_SmoochumDoll = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_4, OBJ_EVENT_PAL_TAG_NONE, 128, 16, 16, 5, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_16x16, gObjectEventSpriteOamTables_16x16, sAnimTable_Inanimate, gObjectEventPicTable_SmoochumDoll, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_TreeckoDoll = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_3, OBJ_EVENT_PAL_TAG_NONE, 128, 16, 16, 4, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_16x16, gObjectEventSpriteOamTables_16x16, sAnimTable_Inanimate, gObjectEventPicTable_TreeckoDoll, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_TorchicDoll = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_2, OBJ_EVENT_PAL_TAG_NONE, 128, 16, 16, 3, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_16x16, gObjectEventSpriteOamTables_16x16, sAnimTable_Inanimate, gObjectEventPicTable_TorchicDoll, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_MudkipDoll = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_1, OBJ_EVENT_PAL_TAG_NONE, 128, 16, 16, 2, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_16x16, gObjectEventSpriteOamTables_16x16, sAnimTable_Inanimate, gObjectEventPicTable_MudkipDoll, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_DuskullDoll = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_4, OBJ_EVENT_PAL_TAG_NONE, 128, 16, 16, 5, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_16x16, gObjectEventSpriteOamTables_16x16, sAnimTable_Inanimate, gObjectEventPicTable_DuskullDoll, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_WynautDoll = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_1, OBJ_EVENT_PAL_TAG_NONE, 128, 16, 16, 2, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_16x16, gObjectEventSpriteOamTables_16x16, sAnimTable_Inanimate, gObjectEventPicTable_WynautDoll, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_BaltoyDoll = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_1, OBJ_EVENT_PAL_TAG_NONE, 128, 16, 16, 2, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_16x16, gObjectEventSpriteOamTables_16x16, sAnimTable_Inanimate, gObjectEventPicTable_BaltoyDoll, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_KecleonDoll = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_3, OBJ_EVENT_PAL_TAG_NONE, 128, 16, 16, 4, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_16x16, gObjectEventSpriteOamTables_16x16, sAnimTable_Inanimate, gObjectEventPicTable_KecleonDoll, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_AzurillDoll = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_1, OBJ_EVENT_PAL_TAG_NONE, 128, 16, 16, 2, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_16x16, gObjectEventSpriteOamTables_16x16, sAnimTable_Inanimate, gObjectEventPicTable_AzurillDoll, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_SkittyDoll = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_1, OBJ_EVENT_PAL_TAG_NONE, 128, 16, 16, 2, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_16x16, gObjectEventSpriteOamTables_16x16, sAnimTable_Inanimate, gObjectEventPicTable_SkittyDoll, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_SwabluDoll = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_1, OBJ_EVENT_PAL_TAG_NONE, 128, 16, 16, 2, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_16x16, gObjectEventSpriteOamTables_16x16, sAnimTable_Inanimate, gObjectEventPicTable_SwabluDoll, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_GulpinDoll = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_3, OBJ_EVENT_PAL_TAG_NONE, 128, 16, 16, 4, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_16x16, gObjectEventSpriteOamTables_16x16, sAnimTable_Inanimate, gObjectEventPicTable_GulpinDoll, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_LotadDoll = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_3, OBJ_EVENT_PAL_TAG_NONE, 128, 16, 16, 4, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_16x16, gObjectEventSpriteOamTables_16x16, sAnimTable_Inanimate, gObjectEventPicTable_LotadDoll, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_SeedotDoll = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_3, OBJ_EVENT_PAL_TAG_NONE, 128, 16, 16, 4, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_16x16, gObjectEventSpriteOamTables_16x16, sAnimTable_Inanimate, gObjectEventPicTable_SeedotDoll, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_PikaCushion = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_2, OBJ_EVENT_PAL_TAG_NONE, 128, 16, 16, 3, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_16x16, gObjectEventSpriteOamTables_16x16, sAnimTable_Inanimate, gObjectEventPicTable_PikaCushion, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_RoundCushion = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_1, OBJ_EVENT_PAL_TAG_NONE, 128, 16, 16, 2, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_16x16, gObjectEventSpriteOamTables_16x16, sAnimTable_Inanimate, gObjectEventPicTable_RoundCushion, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_KissCushion = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_4, OBJ_EVENT_PAL_TAG_NONE, 128, 16, 16, 5, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_16x16, gObjectEventSpriteOamTables_16x16, sAnimTable_Inanimate, gObjectEventPicTable_KissCushion, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_ZigzagCushion = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_1, OBJ_EVENT_PAL_TAG_NONE, 128, 16, 16, 2, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_16x16, gObjectEventSpriteOamTables_16x16, sAnimTable_Inanimate, gObjectEventPicTable_ZigzagCushion, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_SpinCushion = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_1, OBJ_EVENT_PAL_TAG_NONE, 128, 16, 16, 2, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_16x16, gObjectEventSpriteOamTables_16x16, sAnimTable_Inanimate, gObjectEventPicTable_SpinCushion, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_DiamondCushion = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_4, OBJ_EVENT_PAL_TAG_NONE, 128, 16, 16, 5, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_16x16, gObjectEventSpriteOamTables_16x16, sAnimTable_Inanimate, gObjectEventPicTable_DiamondCushion, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_BallCushion = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_3, OBJ_EVENT_PAL_TAG_NONE, 128, 16, 16, 4, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_16x16, gObjectEventSpriteOamTables_16x16, sAnimTable_Inanimate, gObjectEventPicTable_BallCushion, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_GrassCushion = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_3, OBJ_EVENT_PAL_TAG_NONE, 128, 16, 16, 4, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_16x16, gObjectEventSpriteOamTables_16x16, sAnimTable_Inanimate, gObjectEventPicTable_GrassCushion, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_FireCushion = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_2, OBJ_EVENT_PAL_TAG_NONE, 128, 16, 16, 3, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_16x16, gObjectEventSpriteOamTables_16x16, sAnimTable_Inanimate, gObjectEventPicTable_FireCushion, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_WaterCushion = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_1, OBJ_EVENT_PAL_TAG_NONE, 128, 16, 16, 2, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_16x16, gObjectEventSpriteOamTables_16x16, sAnimTable_Inanimate, gObjectEventPicTable_WaterCushion, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_BigSnorlaxDoll = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_4, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 5, SHADOW_SIZE_M, TRUE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, sAnimTable_Inanimate, gObjectEventPicTable_BigSnorlaxDoll, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_BigRhydonDoll = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_4, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 5, SHADOW_SIZE_M, TRUE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, sAnimTable_Inanimate, gObjectEventPicTable_BigRhydonDoll, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_BigLaprasDoll = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_1, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 2, SHADOW_SIZE_M, TRUE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, sAnimTable_Inanimate, gObjectEventPicTable_BigLaprasDoll, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_BigVenusaurDoll = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_3, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 4, SHADOW_SIZE_M, TRUE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, sAnimTable_Inanimate, gObjectEventPicTable_BigVenusaurDoll, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_BigCharizardDoll = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_2, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 3, SHADOW_SIZE_M, TRUE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, sAnimTable_Inanimate, gObjectEventPicTable_BigCharizardDoll, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_BigBlastoiseDoll = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_1, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 2, SHADOW_SIZE_M, TRUE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, sAnimTable_Inanimate, gObjectEventPicTable_BigBlastoiseDoll, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_BigWailmerDoll = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_4, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 5, SHADOW_SIZE_M, TRUE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, sAnimTable_Inanimate, gObjectEventPicTable_BigWailmerDoll, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_BigRegirockDoll = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_1, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 2, SHADOW_SIZE_M, TRUE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, sAnimTable_Inanimate, gObjectEventPicTable_BigRegirockDoll, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_BigRegiceDoll = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_3, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 4, SHADOW_SIZE_M, TRUE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, sAnimTable_Inanimate, gObjectEventPicTable_BigRegiceDoll, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_BigRegisteelDoll = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_4, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 5, SHADOW_SIZE_M, TRUE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, sAnimTable_Inanimate, gObjectEventPicTable_BigRegisteelDoll, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Latias = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_2, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 3, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, sAnimTable_Standard, gObjectEventPicTable_LatiasLatios, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Latios = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_1, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, sAnimTable_Standard, gObjectEventPicTable_LatiasLatios, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_GameboyKid = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_3, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 4, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, sAnimTable_Standard, gObjectEventPicTable_GameboyKid, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_ContestJudge = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_3, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 4, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, sAnimTable_Standard, gObjectEventPicTable_ContestJudge, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_BrendanWatering = {0xFFFF, OBJ_EVENT_PAL_TAG_BRENDAN, OBJ_EVENT_PAL_TAG_BRIDGE_REFLECTION, 512, 32, 32, 0, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, sAnimTable_Standard, gObjectEventPicTable_BrendanWatering, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_MayWatering = {0xFFFF, OBJ_EVENT_PAL_TAG_MAY, OBJ_EVENT_PAL_TAG_BRIDGE_REFLECTION, 512, 32, 32, 0, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, sAnimTable_Standard, gObjectEventPicTable_MayWatering, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_BrendanDecorating = {0xFFFF, OBJ_EVENT_PAL_TAG_BRENDAN, OBJ_EVENT_PAL_TAG_BRIDGE_REFLECTION, 256, 16, 32, 10, SHADOW_SIZE_M, TRUE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, sAnimTable_Inanimate, gObjectEventPicTable_BrendanDecorating, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_MayDecorating = {0xFFFF, OBJ_EVENT_PAL_TAG_MAY, OBJ_EVENT_PAL_TAG_BRIDGE_REFLECTION, 256, 16, 32, 10, SHADOW_SIZE_M, TRUE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, sAnimTable_Inanimate, gObjectEventPicTable_MayDecorating, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Archie = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_1, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, sAnimTable_Standard, gObjectEventPicTable_Archie, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Maxie = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_2, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 3, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, sAnimTable_Standard, gObjectEventPicTable_Maxie, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_KyogreAsleep = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_4, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 5, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, sAnimTable_Standard, sPicTable_KyogreFront, gObjectEventRotScalAnimTable_KyogreGroudon}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_GroudonAsleep = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_3, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 4, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, sAnimTable_Standard, sPicTable_GroudonFront, gObjectEventRotScalAnimTable_KyogreGroudon}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_KyogreSide = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_4, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 5, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, sAnimTable_Standard, sPicTable_KyogreSide, gObjectEventRotScalAnimTable_KyogreGroudon}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_GroudonSide = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_3, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 4, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, sAnimTable_GroudonSide, sPicTable_GroudonSide, gObjectEventRotScalAnimTable_KyogreGroudon}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Fossil = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_1, OBJ_EVENT_PAL_TAG_NONE, 128, 16, 16, 2, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_16x16, gObjectEventSpriteOamTables_16x16, sAnimTable_Inanimate, gObjectEventPicTable_Fossil, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Regirock = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_2, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 3, SHADOW_SIZE_M, TRUE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, sAnimTable_Standard, gObjectEventPicTable_Regi, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Regice = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_3, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 4, SHADOW_SIZE_M, TRUE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, sAnimTable_Standard, gObjectEventPicTable_Regi, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Registeel = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_4, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 5, SHADOW_SIZE_M, TRUE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, sAnimTable_Standard, gObjectEventPicTable_Regi, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Skitty = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_1, OBJ_EVENT_PAL_TAG_NONE, 128, 16, 16, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x16, gObjectEventSpriteOamTables_16x16, sAnimTable_Standard, gObjectEventPicTable_SkittyOld, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Kecleon = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_3, OBJ_EVENT_PAL_TAG_NONE, 128, 16, 16, 4, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x16, gObjectEventSpriteOamTables_16x16, sAnimTable_Standard, gObjectEventPicTable_KecleonOld, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Kyogre2 = {0xFFFF, OBJ_EVENT_PAL_TAG_KYOGRE, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, sAnimTable_Standard, sPicTable_KyogreFront, gObjectEventRotScalAnimTable_KyogreGroudon}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Groudon2 = {0xFFFF, OBJ_EVENT_PAL_TAG_GROUDON, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, sAnimTable_Standard, sPicTable_GroudonFront, gObjectEventRotScalAnimTable_KyogreGroudon}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Rayquaza2 = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_3, OBJ_EVENT_PAL_TAG_NONE, 2048, 64, 64, 4, SHADOW_SIZE_M, FALSE, TRUE, TRACKS_FOOT, &gObjectEventBaseOam_64x64, gObjectEventSpriteOamTables_64x64, sAnimTable_Rayquaza2, gObjectEventPicTable_Rayquaza, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Zigzagoon = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_1, OBJ_EVENT_PAL_TAG_NONE, 128, 16, 16, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x16, gObjectEventSpriteOamTables_16x16, sAnimTable_Standard, gObjectEventPicTable_ZigzagoonOld, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Pikachu = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_2, OBJ_EVENT_PAL_TAG_NONE, 128, 16, 16, 3, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x16, gObjectEventSpriteOamTables_16x16, sAnimTable_Standard, gObjectEventPicTable_PikachuOld, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Azumarill = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_1, OBJ_EVENT_PAL_TAG_NONE, 128, 16, 16, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x16, gObjectEventSpriteOamTables_16x16, sAnimTable_Standard, gObjectEventPicTable_AzumarillOld, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Wingull = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_1, OBJ_EVENT_PAL_TAG_NONE, 128, 16, 16, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x16, gObjectEventSpriteOamTables_16x16, sAnimTable_Standard, gObjectEventPicTable_WingullOld, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_KecleonBridgeShadow = {0xFFFF, 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, gObjectEventSpriteOamTables_16x16, sAnimTable_Standard, gObjectEventPicTable_Kecleon, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_TuberMSwimming = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_2, OBJ_EVENT_PAL_TAG_NONE, 128, 16, 16, 3, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x16, gObjectEventSpriteOamTables_16x16, sAnimTable_Standard, sPicTable_TuberMSwimming, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Azurill = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_1, OBJ_EVENT_PAL_TAG_NONE, 128, 16, 16, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x16, gObjectEventSpriteOamTables_16x16, sAnimTable_Standard, gObjectEventPicTable_AzurillOld, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Mom = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_4, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 5, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, sAnimTable_Standard, sPicTable_Mom, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_LinkBrendan = {0xFFFF, OBJ_EVENT_PAL_TAG_MAY, OBJ_EVENT_PAL_TAG_BRIDGE_REFLECTION, 256, 16, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, sAnimTable_BrendanMayNormal, gObjectEventPicTable_BrendanNormal, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_LinkMay = {0xFFFF, OBJ_EVENT_PAL_TAG_MAY, OBJ_EVENT_PAL_TAG_BRIDGE_REFLECTION, 256, 16, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, sAnimTable_BrendanMayNormal, gObjectEventPicTable_MayNormal, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Juan = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_4, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 5, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, sAnimTable_Standard, gObjectEventPicTable_Juan, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Scott = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_1, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, sAnimTable_Standard, gObjectEventPicTable_Scott, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_MysteryEventDeliveryman = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_1, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, sAnimTable_Standard, gObjectEventPicTable_MysteryEventDeliveryman, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Statue = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_4, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 5, SHADOW_SIZE_M, TRUE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, sAnimTable_Inanimate, gObjectEventPicTable_Statue, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Kirlia = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_3, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 4, SHADOW_SIZE_S, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, sAnimTable_Standard, gObjectEventPicTable_KirliaOld, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Dusclops = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_4, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 5, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, sAnimTable_Standard, gObjectEventPicTable_DusclopsOld, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_UnionRoomAttendant = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_3, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 4, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, sAnimTable_Standard, sPicTable_UnionRoomAttendant, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Red = {0xFFFF, OBJ_EVENT_PAL_TAG_RED_LEAF, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, sAnimTable_Standard, sPicTable_Red, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Leaf = {0xFFFF, OBJ_EVENT_PAL_TAG_RED_LEAF, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, sAnimTable_Standard, gObjectEventPicTable_Leaf, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Sudowoodo = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_3, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 4, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, sAnimTable_Standard, gObjectEventPicTable_SudowoodoTree, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Mew = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_1, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, sAnimTable_Standard, gObjectEventPicTable_MewOld, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Deoxys = {0xFFFF, OBJ_EVENT_PAL_TAG_DEOXYS, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, sAnimTable_Standard, gObjectEventPicTable_DeoxysOld, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_BirthIslandStone = {0xFFFF, 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, gObjectEventSpriteOamTables_32x32, sAnimTable_Inanimate, gObjectEventPicTable_BirthIslandStone, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Anabel = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_4, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 5, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, sAnimTable_Standard, gObjectEventPicTable_Anabel, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Tucker = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_1, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, sAnimTable_Standard, gObjectEventPicTable_Tucker, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Greta = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_1, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, sAnimTable_Standard, gObjectEventPicTable_Greta, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Spenser = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_1, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, sAnimTable_Standard, gObjectEventPicTable_Spenser, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Noland = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_3, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 4, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, sAnimTable_Standard, gObjectEventPicTable_Noland, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Lucy = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_4, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 5, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, sAnimTable_Standard, gObjectEventPicTable_Lucy, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Brandon = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_3, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 4, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, sAnimTable_Standard, gObjectEventPicTable_Brandon, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_RubySapphireBrendan = {0xFFFF, OBJ_EVENT_PAL_TAG_RS_BRENDAN, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, sAnimTable_Standard, gObjectEventPicTable_RubySapphireBrendan, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_RubySapphireMay = {0xFFFF, OBJ_EVENT_PAL_TAG_RS_MAY, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, sAnimTable_Standard, gObjectEventPicTable_RubySapphireMay, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Lugia = {0xFFFF, OBJ_EVENT_PAL_TAG_LUGIA, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, sAnimTable_Standard, gObjectEventPicTable_LugiaOld, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_HoOh = {0xFFFF, OBJ_EVENT_PAL_TAG_HO_OH, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, sAnimTable_HoOh, gObjectEventPicTable_HoOhOld, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_AnimatedBall = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_3, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, sAnimTable_Following, gObjectEventPicTable_AnimatedBall, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Follower = {0xFFFF, OBJ_EVENT_PAL_TAG_DYNAMIC, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, sAnimTable_Following, gObjectEventPicTable_Togetic, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_BrendanNormal = {0xFFFF, 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 = {0xFFFF, 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 = {0xFFFF, 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 = {0xFFFF, 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 = {0xFFFF, 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 = {0xFFFF, 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 = {0xFFFF, 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 = {0xFFFF, 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 = {0xFFFF, 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 = {0xFFFF, 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 = {0xFFFF, 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 = {0xFFFF, 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 = {0xFFFF, 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 = {0xFFFF, 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 = {0xFFFF, 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 = {0xFFFF, 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 = {0xFFFF, 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 = {0xFFFF, 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 = {0xFFFF, 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 = {0xFFFF, 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 = {0xFFFF, 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 = {0xFFFF, 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 = {0xFFFF, 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 = {0xFFFF, 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 = {0xFFFF, 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 = {0xFFFF, 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 = {0xFFFF, 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 = {0xFFFF, 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 = {0xFFFF, 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 = {0xFFFF, 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 = {0xFFFF, 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 = {0xFFFF, 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 = {0xFFFF, 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 = {0xFFFF, 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 = {0xFFFF, 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 = {0xFFFF, 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 = {0xFFFF, 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 = {0xFFFF, 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 = {0xFFFF, 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 = {0xFFFF, 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 = {0xFFFF, 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 = {0xFFFF, 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 = {0xFFFF, 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 = {0xFFFF, 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 = {0xFFFF, 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 = {0xFFFF, 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 = {0xFFFF, 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 = {0xFFFF, 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 = {0xFFFF, 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 = {0xFFFF, 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 = {0xFFFF, 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 = {0xFFFF, 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 = {0xFFFF, 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 = {0xFFFF, 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 = {0xFFFF, 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 = {0xFFFF, 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 = {0xFFFF, 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 = {0xFFFF, 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 = {0xFFFF, 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 = {0xFFFF, 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 = {0xFFFF, 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 = {0xFFFF, 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 = {0xFFFF, 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 = {0xFFFF, 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 = {0xFFFF, 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 = {0xFFFF, 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 = {0xFFFF, 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 = {0xFFFF, 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 = {0xFFFF, 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 = {0xFFFF, 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 = {0xFFFF, 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 = {0xFFFF, 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 = {0xFFFF, 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 = {0xFFFF, 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 = {0xFFFF, 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 = {0xFFFF, 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 = {0xFFFF, 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 = {0xFFFF, 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 = {0xFFFF, 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 = {0xFFFF, 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 = {0xFFFF, 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 = {0xFFFF, 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 = {0xFFFF, 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_CuttableTree, sPicTable_CuttableTree, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_MartEmployee = {0xFFFF, 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 = {0xFFFF, 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 = {0xFFFF, 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 = {0xFFFF, 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 = {0xFFFF, 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 = {0xFFFF, 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 = {0xFFFF, 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 = {0xFFFF, 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 = {0xFFFF, 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 = {0xFFFF, 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 = {0xFFFF, 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 = {0xFFFF, OBJ_EVENT_PAL_TAG_TRUCK, OBJ_EVENT_PAL_TAG_NONE, 1152, 48, 48, 10, SHADOW_SIZE_M, TRUE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_48x48, sAnimTable_Inanimate, sPicTable_Truck, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_VigorothCarryingBox = {0xFFFF, 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 = {0xFFFF, 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 = {0xFFFF, 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 = {0xFFFF, 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 = {0xFFFF, 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 = {0xFFFF, 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 = {0xFFFF, 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 = {0xFFFF, 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 = {0xFFFF, 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 = {0xFFFF, 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 = {0xFFFF, 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 = {0xFFFF, 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 = {0xFFFF, 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 = {0xFFFF, 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 = {0xFFFF, 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 = {0xFFFF, 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 = {0xFFFF, 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 = {0xFFFF, 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 = {0xFFFF, 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 = {0xFFFF, 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 = {0xFFFF, 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 = {0xFFFF, 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 = {0xFFFF, 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 = {0xFFFF, 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 = {0xFFFF, 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 = {0xFFFF, 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 = {0xFFFF, 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 = {0xFFFF, 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 = {0xFFFF, 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 = {0xFFFF, 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 = {0xFFFF, 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 = {0xFFFF, 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 = {0xFFFF, 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 = {0xFFFF, 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 = {0xFFFF, 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 = {0xFFFF, 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 = {0xFFFF, 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 = {0xFFFF, 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 = {0xFFFF, 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 = {0xFFFF, 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 = {0xFFFF, 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 = {0xFFFF, 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 = {0xFFFF, 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 = {0xFFFF, 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 = {0xFFFF, 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 = {0xFFFF, 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 = {0xFFFF, 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 = {0xFFFF, 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 = {0xFFFF, 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 = {0xFFFF, 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 = {0xFFFF, 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 = {0xFFFF, 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 = {0xFFFF, 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 = {0xFFFF, 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 = {0xFFFF, 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 = {0xFFFF, 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 = {0xFFFF, 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 = {0xFFFF, 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 = {0xFFFF, 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 = {0xFFFF, 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 = {0xFFFF, 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 = {0xFFFF, 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 = {0xFFFF, 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 = {0xFFFF, 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 = {0xFFFF, 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 = {0xFFFF, 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 = {0xFFFF, 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 = {0xFFFF, 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 = {0xFFFF, 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 = {0xFFFF, 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 = {0xFFFF, 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 = {0xFFFF, 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 = {0xFFFF, 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 = {0xFFFF, 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 = {0xFFFF, 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 = {0xFFFF, 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 = {0xFFFF, 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 = {0xFFFF, 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 = {0xFFFF, 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 = {0xFFFF, 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 = {0xFFFF, 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 = {0xFFFF, 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 = {0xFFFF, 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 = {0xFFFF, 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 = {0xFFFF, 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 = {0xFFFF, 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 = {0xFFFF, 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 = {0xFFFF, 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 = {0xFFFF, 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 = {0xFFFF, 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 = {0xFFFF, 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 = {0xFFFF, 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 = {0xFFFF, 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 = {0xFFFF, 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 = {0xFFFF, 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 = {0xFFFF, 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 = {0xFFFF, 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 = {0xFFFF, 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 = {0xFFFF, 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 = {0xFFFF, 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 = {0xFFFF, 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 = {0xFFFF, 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 = {0xFFFF, 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 = {0xFFFF, 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 = {0xFFFF, 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 = {0xFFFF, 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 = {0xFFFF, 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 = {0xFFFF, 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 = {0xFFFF, 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 = {0xFFFF, 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 = {0xFFFF, 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 = {0xFFFF, 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 = {0xFFFF, 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 = {0xFFFF, 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 = {0xFFFF, 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 = {0xFFFF, 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_Rayquaza, sPicTable_Rayquaza, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Zigzagoon = {0xFFFF, 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 = {0xFFFF, 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 = {0xFFFF, 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 = {0xFFFF, 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 = {0xFFFF, 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_Kecleon, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_TuberMSwimming = {0xFFFF, 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 = {0xFFFF, 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 = {0xFFFF, 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 = {0xFFFF, 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 = {0xFFFF, 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 = {0xFFFF, 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 = {0xFFFF, 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 = {0xFFFF, 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 = {0xFFFF, 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 = {0xFFFF, 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 = {0xFFFF, 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 = {0xFFFF, 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 = {0xFFFF, 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 = {0xFFFF, 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 = {0xFFFF, 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 = {0xFFFF, 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 = {0xFFFF, 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 = {0xFFFF, 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 = {0xFFFF, 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 = {0xFFFF, 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 = {0xFFFF, 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 = {0xFFFF, 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 = {0xFFFF, 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 = {0xFFFF, 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 = {0xFFFF, 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 = {0xFFFF, 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 = {0xFFFF, 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 = {0xFFFF, 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 = {0xFFFF, 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 = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_3, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_16x32, sOamTables_16x32, sAnimTable_Following, sPicTable_AnimatedBall, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Follower = {0xFFFF, OBJ_EVENT_PAL_TAG_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}; // 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, gObjectEventSpriteOamTables_32x32, sAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, sAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, sAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, sAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, sAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, sAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, sAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, sAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, sAnimTable_Following, gObjectEventPicTable_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_FOOT, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, sAnimTable_Following, gObjectEventPicTable_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_FOOT, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, sAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, sAnimTable_Following, gObjectEventPicTable_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_FOOT, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, sAnimTable_Following, gObjectEventPicTable_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_FOOT, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, sAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, sAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, sAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, sAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, sAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, sAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, sAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, sAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, sAnimTable_Following, gObjectEventPicTable_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_FOOT, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, sAnimTable_Following, gObjectEventPicTable_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_FOOT, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, sAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, sAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, sAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, sAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, sAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, sAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, sAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, sAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, sAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, sAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, sAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, sAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, sAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, sAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, sAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, sAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, sAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, sAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, sAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, sAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, sAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, sAnimTable_Following, gObjectEventPicTable_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_FOOT, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, sAnimTable_Following, gObjectEventPicTable_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_FOOT, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, sAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, sAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, sAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, sAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, sAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, sAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, sAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, sAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, sAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, sAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, sAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, sAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, sAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, sAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, sAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, sAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, sAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, sAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, sAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, sAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, sAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, sAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, sAnimTable_Following, gObjectEventPicTable_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_FOOT, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, sAnimTable_Following, gObjectEventPicTable_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_FOOT, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, sAnimTable_Following, gObjectEventPicTable_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_FOOT, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, sAnimTable_Following, gObjectEventPicTable_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_FOOT, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, sAnimTable_Following, gObjectEventPicTable_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_FOOT, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, sAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, sAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, sAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, sAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, sAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, sAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, sAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, sAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, sAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, sAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, sAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, sAnimTable_Following, gObjectEventPicTable_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_FOOT, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, sAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, sAnimTable_Following, gObjectEventPicTable_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_FOOT, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, sAnimTable_Following, gObjectEventPicTable_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_FOOT, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, sAnimTable_Following, gObjectEventPicTable_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_FOOT, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, sAnimTable_Following, gObjectEventPicTable_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_FOOT, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, sAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, sAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, sAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, sAnimTable_Following, gObjectEventPicTable_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_FOOT, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, sAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, sAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, sAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, sAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, sAnimTable_Following, gObjectEventPicTable_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_FOOT, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, sAnimTable_Following, gObjectEventPicTable_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_FOOT, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, sAnimTable_Following, gObjectEventPicTable_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_FOOT, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, sAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, sAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, sAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, sAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, sAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, sAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, sAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, sAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, sAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, sAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, sAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, sAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, sAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, sAnimTable_Following, gObjectEventPicTable_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_FOOT, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, sAnimTable_Following, gObjectEventPicTable_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_FOOT, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, sAnimTable_Following, gObjectEventPicTable_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_FOOT, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, sAnimTable_Following, gObjectEventPicTable_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_FOOT, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, sAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, sAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, sAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, sAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, sAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, sAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, sAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, sAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, sAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, sAnimTable_Following, gObjectEventPicTable_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_FOOT, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, sAnimTable_Following, gObjectEventPicTable_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_NONE, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, sAnimTable_Following, gObjectEventPicTable_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_FOOT, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, sAnimTable_Following, gObjectEventPicTable_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_FOOT, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, sAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, sAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, sAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, sAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, sAnimTable_Following, gObjectEventPicTable_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_FOOT, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, sAnimTable_Following, gObjectEventPicTable_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_FOOT, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, sAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, sAnimTable_Following, gObjectEventPicTable_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_FOOT, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, sAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, sAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, sAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, sAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, sAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, sAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, sAnimTable_Following, gObjectEventPicTable_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_FOOT, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, sAnimTable_Following, gObjectEventPicTable_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_FOOT, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, sAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, sAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, sAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, sAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, sAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, sAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, sAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, sAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, sAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, sAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, sAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, sAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, sAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, sAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, sAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, sAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, sAnimTable_Following, gObjectEventPicTable_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_FOOT, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, sAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, sAnimTable_Following, gObjectEventPicTable_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_FOOT, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, sAnimTable_Following, gObjectEventPicTable_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_FOOT, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, sAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, sAnimTable_Following, gObjectEventPicTable_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_FOOT, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, sAnimTable_Following, gObjectEventPicTable_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_FOOT, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, sAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, sAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, sAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, sAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, sAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, sAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, sAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, sAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, sAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, sAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, sAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, sAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, sAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, sAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, sAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, sAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, sAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, sAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, sAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, sAnimTable_Following, gObjectEventPicTable_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_FOOT, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, sAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, sAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, sAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, sAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, sAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, sAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, sAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, sAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, sAnimTable_Following, gObjectEventPicTable_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_FOOT, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, sAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, sAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, sAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, sAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, sAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, sAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, sAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, sAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, sAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, sAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, sAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, sAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, sAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, sAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, sAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, sAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, sAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, sAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, sAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, sAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, sAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, sAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, sAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, sAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, sAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, sAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, sAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, sAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, sAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, sAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, sAnimTable_Following, gObjectEventPicTable_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_FOOT, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, sAnimTable_Following, gObjectEventPicTable_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_FOOT, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, sAnimTable_Following, gObjectEventPicTable_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_FOOT, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, sAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, sAnimTable_Following, gObjectEventPicTable_Gligar, gDummySpriteAffineAnimTable}, - [SPECIES_STEELIX] = {0xFFFF, OBJ_EVENT_PAL_TAG_DYNAMIC, OBJ_EVENT_PAL_TAG_NONE, 2048, 64, 64, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_64x64, gObjectEventSpriteOamTables_64x64, sAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, sAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, sAnimTable_Following, gObjectEventPicTable_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_FOOT, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, sAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, sAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, sAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, sAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, sAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, sAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, sAnimTable_Following, gObjectEventPicTable_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_FOOT, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, sAnimTable_Following, gObjectEventPicTable_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_FOOT, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, sAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, sAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, sAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, sAnimTable_Following, gObjectEventPicTable_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_FOOT, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, sAnimTable_Following, gObjectEventPicTable_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_FOOT, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, sAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, sAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, sAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, sAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, sAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, sAnimTable_Following, gObjectEventPicTable_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_FOOT, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, sAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, sAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, sAnimTable_Following, gObjectEventPicTable_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_FOOT, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, sAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, sAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, sAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, sAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, sAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, sAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, sAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, sAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, sAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, sAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, sAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, sAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, sAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, sAnimTable_Following, gObjectEventPicTable_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_FOOT, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, sAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, sAnimTable_Following, gObjectEventPicTable_Tyranitar, gDummySpriteAffineAnimTable}, - [SPECIES_LUGIA] = {0xFFFF, OBJ_EVENT_PAL_TAG_DYNAMIC, OBJ_EVENT_PAL_TAG_NONE, 2048, 64, 64, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_64x64, gObjectEventSpriteOamTables_64x64, sAnimTable_Following, gObjectEventPicTable_Lugia, gDummySpriteAffineAnimTable}, - [SPECIES_HO_OH] = {0xFFFF, OBJ_EVENT_PAL_TAG_DYNAMIC, OBJ_EVENT_PAL_TAG_NONE, 2048, 64, 64, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_64x64, gObjectEventSpriteOamTables_64x64, sAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, sAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, sAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, sAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, sAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, sAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, sAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, sAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, sAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, sAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, sAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, sAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, sAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, sAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, sAnimTable_Following, gObjectEventPicTable_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_FOOT, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, sAnimTable_Following, gObjectEventPicTable_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_FOOT, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, sAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, sAnimTable_Following, gObjectEventPicTable_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_FOOT, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, sAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, sAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, sAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, sAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, sAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, sAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, sAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, sAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, sAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, sAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, sAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, sAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, sAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, sAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, sAnimTable_Following, gObjectEventPicTable_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_FOOT, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, sAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, sAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, sAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, sAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, sAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, sAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, sAnimTable_Following, gObjectEventPicTable_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_FOOT, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, sAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, sAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, sAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, sAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, sAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, sAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, sAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, sAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, sAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, sAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, sAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, sAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, sAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, sAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, sAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, sAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, sAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, sAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, sAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, sAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, sAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, sAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, sAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, sAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, sAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, sAnimTable_Following, gObjectEventPicTable_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_FOOT, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, sAnimTable_Following, gObjectEventPicTable_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_FOOT, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, sAnimTable_Following, gObjectEventPicTable_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_FOOT, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, sAnimTable_Following, gObjectEventPicTable_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_FOOT, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, sAnimTable_Following, gObjectEventPicTable_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_FOOT, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, sAnimTable_Following, gObjectEventPicTable_Wailmer, gDummySpriteAffineAnimTable}, - [SPECIES_WAILORD] = {0xFFFF, OBJ_EVENT_PAL_TAG_DYNAMIC, OBJ_EVENT_PAL_TAG_NONE, 2048, 64, 64, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_64x64, gObjectEventSpriteOamTables_64x64, sAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, sAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, sAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, sAnimTable_Following, gObjectEventPicTable_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_BIKE_TIRE, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, sAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, sAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, sAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, sAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, sAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, sAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, sAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, sAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, sAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, sAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, sAnimTable_Following, gObjectEventPicTable_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_FOOT, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, sAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, sAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, sAnimTable_Following, gObjectEventPicTable_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_FOOT, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, sAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, sAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, sAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, sAnimTable_Following, gObjectEventPicTable_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_BIKE_TIRE, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, sAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, sAnimTable_Following, gObjectEventPicTable_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_FOOT, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, sAnimTable_Following, gObjectEventPicTable_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_FOOT, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, sAnimTable_Following, gObjectEventPicTable_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_FOOT, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, sAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, sAnimTable_Following, gObjectEventPicTable_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_FOOT, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, sAnimTable_Following, gObjectEventPicTable_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_FOOT, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, sAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, sAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, sAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, sAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, sAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, sAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, sAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, sAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, sAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, sAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, sAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, sAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, sAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, sAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, sAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, sAnimTable_Following, gObjectEventPicTable_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_FOOT, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, sAnimTable_Following, gObjectEventPicTable_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_FOOT, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, sAnimTable_Following, gObjectEventPicTable_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_FOOT, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, sAnimTable_Following, gObjectEventPicTable_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_FOOT, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, sAnimTable_Following, gObjectEventPicTable_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_FOOT, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, sAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, sAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, sAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, sAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, sAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, sAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, sAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, sAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, sAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, sAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, sAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, sAnimTable_Following, gObjectEventPicTable_Latios, gDummySpriteAffineAnimTable}, - [SPECIES_KYOGRE] = {0xFFFF, OBJ_EVENT_PAL_TAG_DYNAMIC, OBJ_EVENT_PAL_TAG_NONE, 2048, 64, 64, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_64x64, gObjectEventSpriteOamTables_64x64, sAnimTable_Following, gObjectEventPicTable_Kyogre, gDummySpriteAffineAnimTable}, - [SPECIES_GROUDON] = {0xFFFF, OBJ_EVENT_PAL_TAG_DYNAMIC, OBJ_EVENT_PAL_TAG_NONE, 2048, 64, 64, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_64x64, gObjectEventSpriteOamTables_64x64, sAnimTable_Following, gObjectEventPicTable_Groudon, gDummySpriteAffineAnimTable}, - [SPECIES_RAYQUAZA] = {0xFFFF, OBJ_EVENT_PAL_TAG_DYNAMIC, OBJ_EVENT_PAL_TAG_NONE, 2048, 64, 64, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_64x64, gObjectEventSpriteOamTables_64x64, sAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, sAnimTable_Following, gObjectEventPicTable_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, gObjectEventSpriteOamTables_32x32, sAnimTable_Following, gObjectEventPicTable_Deoxys, gDummySpriteAffineAnimTable}, + [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_FOOT, &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_FOOT, &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_FOOT, &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_FOOT, &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_FOOT, &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_FOOT, &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_FOOT, &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_FOOT, &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_FOOT, &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_FOOT, &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_FOOT, &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_FOOT, &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_FOOT, &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_FOOT, &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_FOOT, &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_FOOT, &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_FOOT, &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_FOOT, &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_FOOT, &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_FOOT, &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_FOOT, &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_FOOT, &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_FOOT, &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_FOOT, &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_FOOT, &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_FOOT, &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_FOOT, &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_NONE, &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_FOOT, &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_FOOT, &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_FOOT, &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_FOOT, &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_FOOT, &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_FOOT, &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_FOOT, &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_FOOT, &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_FOOT, &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_FOOT, &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_FOOT, &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_FOOT, &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_FOOT, &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_FOOT, &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_FOOT, &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_FOOT, &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_FOOT, &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, 2048, 64, 64, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_64x64, sOamTables_64x64, 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_FOOT, &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_FOOT, &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_FOOT, &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_FOOT, &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_FOOT, &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_FOOT, &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_FOOT, &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_FOOT, &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_DYNAMIC, 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_DYNAMIC, 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_FOOT, &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_FOOT, &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_FOOT, &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_FOOT, &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_FOOT, &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_FOOT, &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_FOOT, &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_FOOT, &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_FOOT, &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_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_Following, sPicTable_Wailmer, gDummySpriteAffineAnimTable}, + [SPECIES_WAILORD] = {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_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_BIKE_TIRE, &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_FOOT, &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_FOOT, &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_BIKE_TIRE, &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_FOOT, &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_FOOT, &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_FOOT, &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_FOOT, &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_FOOT, &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_FOOT, &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_FOOT, &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_FOOT, &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_FOOT, &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_FOOT, &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_DYNAMIC, 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_DYNAMIC, OBJ_EVENT_PAL_TAG_NONE, 2048, 64, 64, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_64x64, sOamTables_64x64, sAnimTable_Following, sPicTable_Groudon, gDummySpriteAffineAnimTable}, + [SPECIES_RAYQUAZA] = {0xFFFF, OBJ_EVENT_PAL_TAG_DYNAMIC, 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}, }; diff --git a/src/data/object_events/object_event_pic_tables.h b/src/data/object_events/object_event_pic_tables.h index 7e1c83fcb..5f58c9135 100755 --- a/src/data/object_events/object_event_pic_tables.h +++ b/src/data/object_events/object_event_pic_tables.h @@ -1873,7 +1873,7 @@ static const struct SpriteFrameImage sPicTable_Leaf[] = { overworld_frame(gObjectEventPic_Leaf, 2, 4, 8), }; -const struct SpriteFrameImage gObjectEventPicTable_SudowoodoTree[] = { +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), @@ -1885,7 +1885,7 @@ const struct SpriteFrameImage gObjectEventPicTable_SudowoodoTree[] = { overworld_frame(gObjectEventPic_SudowoodoTree, 2, 4, 2), }; -const struct SpriteFrameImage gObjectEventPicTable_RayquazaCutscene[] = { +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), @@ -1981,7 +1981,7 @@ static const struct SpriteFrameImage sPicTable_Brandon[] = { overworld_frame(gObjectEventPic_Brandon, 2, 4, 8), }; -const struct SpriteFrameImage gObjectEventPicTable_AnimatedBall[] = { +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), @@ -1990,7 +1990,7 @@ const struct SpriteFrameImage gObjectEventPicTable_AnimatedBall[] = { overworld_frame(gObjectEventPic_AnimatedBall, 2, 4, 5), }; -const struct SpriteFrameImage gObjectEventPicTable_Bulbasaur[] = { +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), @@ -1998,7 +1998,7 @@ const struct SpriteFrameImage gObjectEventPicTable_Bulbasaur[] = { overworld_frame(gObjectEventPic_Bulbasaur, 4, 4, 4), overworld_frame(gObjectEventPic_Bulbasaur, 4, 4, 5), }; -const struct SpriteFrameImage gObjectEventPicTable_Ivysaur[] = { +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), @@ -2006,7 +2006,7 @@ const struct SpriteFrameImage gObjectEventPicTable_Ivysaur[] = { overworld_frame(gObjectEventPic_Ivysaur, 4, 4, 4), overworld_frame(gObjectEventPic_Ivysaur, 4, 4, 5), }; -const struct SpriteFrameImage gObjectEventPicTable_Venusaur[] = { +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), @@ -2014,7 +2014,7 @@ const struct SpriteFrameImage gObjectEventPicTable_Venusaur[] = { overworld_frame(gObjectEventPic_Venusaur, 4, 4, 4), overworld_frame(gObjectEventPic_Venusaur, 4, 4, 5), }; -const struct SpriteFrameImage gObjectEventPicTable_Charmander[] = { +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), @@ -2022,7 +2022,7 @@ const struct SpriteFrameImage gObjectEventPicTable_Charmander[] = { overworld_frame(gObjectEventPic_Charmander, 4, 4, 4), overworld_frame(gObjectEventPic_Charmander, 4, 4, 5), }; -const struct SpriteFrameImage gObjectEventPicTable_Charmeleon[] = { +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), @@ -2030,7 +2030,7 @@ const struct SpriteFrameImage gObjectEventPicTable_Charmeleon[] = { overworld_frame(gObjectEventPic_Charmeleon, 4, 4, 4), overworld_frame(gObjectEventPic_Charmeleon, 4, 4, 5), }; -const struct SpriteFrameImage gObjectEventPicTable_Charizard[] = { +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), @@ -2038,7 +2038,7 @@ const struct SpriteFrameImage gObjectEventPicTable_Charizard[] = { overworld_frame(gObjectEventPic_Charizard, 4, 4, 4), overworld_frame(gObjectEventPic_Charizard, 4, 4, 5), }; -const struct SpriteFrameImage gObjectEventPicTable_Squirtle[] = { +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), @@ -2046,7 +2046,7 @@ const struct SpriteFrameImage gObjectEventPicTable_Squirtle[] = { overworld_frame(gObjectEventPic_Squirtle, 4, 4, 4), overworld_frame(gObjectEventPic_Squirtle, 4, 4, 5), }; -const struct SpriteFrameImage gObjectEventPicTable_Wartortle[] = { +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), @@ -2054,7 +2054,7 @@ const struct SpriteFrameImage gObjectEventPicTable_Wartortle[] = { overworld_frame(gObjectEventPic_Wartortle, 4, 4, 4), overworld_frame(gObjectEventPic_Wartortle, 4, 4, 5), }; -const struct SpriteFrameImage gObjectEventPicTable_Blastoise[] = { +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), @@ -2062,7 +2062,7 @@ const struct SpriteFrameImage gObjectEventPicTable_Blastoise[] = { overworld_frame(gObjectEventPic_Blastoise, 4, 4, 4), overworld_frame(gObjectEventPic_Blastoise, 4, 4, 5), }; -const struct SpriteFrameImage gObjectEventPicTable_Caterpie[] = { +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), @@ -2070,7 +2070,7 @@ const struct SpriteFrameImage gObjectEventPicTable_Caterpie[] = { overworld_frame(gObjectEventPic_Caterpie, 4, 4, 4), overworld_frame(gObjectEventPic_Caterpie, 4, 4, 5), }; -const struct SpriteFrameImage gObjectEventPicTable_Metapod[] = { +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), @@ -2078,7 +2078,7 @@ const struct SpriteFrameImage gObjectEventPicTable_Metapod[] = { overworld_frame(gObjectEventPic_Metapod, 4, 4, 4), overworld_frame(gObjectEventPic_Metapod, 4, 4, 5), }; -const struct SpriteFrameImage gObjectEventPicTable_Butterfree[] = { +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), @@ -2086,7 +2086,7 @@ const struct SpriteFrameImage gObjectEventPicTable_Butterfree[] = { overworld_frame(gObjectEventPic_Butterfree, 4, 4, 4), overworld_frame(gObjectEventPic_Butterfree, 4, 4, 5), }; -const struct SpriteFrameImage gObjectEventPicTable_Weedle[] = { +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), @@ -2094,7 +2094,7 @@ const struct SpriteFrameImage gObjectEventPicTable_Weedle[] = { overworld_frame(gObjectEventPic_Weedle, 4, 4, 4), overworld_frame(gObjectEventPic_Weedle, 4, 4, 5), }; -const struct SpriteFrameImage gObjectEventPicTable_Kakuna[] = { +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), @@ -2102,7 +2102,7 @@ const struct SpriteFrameImage gObjectEventPicTable_Kakuna[] = { overworld_frame(gObjectEventPic_Kakuna, 4, 4, 4), overworld_frame(gObjectEventPic_Kakuna, 4, 4, 5), }; -const struct SpriteFrameImage gObjectEventPicTable_Beedrill[] = { +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), @@ -2110,7 +2110,7 @@ const struct SpriteFrameImage gObjectEventPicTable_Beedrill[] = { overworld_frame(gObjectEventPic_Beedrill, 4, 4, 4), overworld_frame(gObjectEventPic_Beedrill, 4, 4, 5), }; -const struct SpriteFrameImage gObjectEventPicTable_Pidgey[] = { +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), @@ -2118,7 +2118,7 @@ const struct SpriteFrameImage gObjectEventPicTable_Pidgey[] = { overworld_frame(gObjectEventPic_Pidgey, 4, 4, 4), overworld_frame(gObjectEventPic_Pidgey, 4, 4, 5), }; -const struct SpriteFrameImage gObjectEventPicTable_Pidgeotto[] = { +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), @@ -2126,7 +2126,7 @@ const struct SpriteFrameImage gObjectEventPicTable_Pidgeotto[] = { overworld_frame(gObjectEventPic_Pidgeotto, 4, 4, 4), overworld_frame(gObjectEventPic_Pidgeotto, 4, 4, 5), }; -const struct SpriteFrameImage gObjectEventPicTable_Pidgeot[] = { +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), @@ -2134,7 +2134,7 @@ const struct SpriteFrameImage gObjectEventPicTable_Pidgeot[] = { overworld_frame(gObjectEventPic_Pidgeot, 4, 4, 4), overworld_frame(gObjectEventPic_Pidgeot, 4, 4, 5), }; -const struct SpriteFrameImage gObjectEventPicTable_Rattata[] = { +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), @@ -2142,7 +2142,7 @@ const struct SpriteFrameImage gObjectEventPicTable_Rattata[] = { overworld_frame(gObjectEventPic_Rattata, 4, 4, 4), overworld_frame(gObjectEventPic_Rattata, 4, 4, 5), }; -const struct SpriteFrameImage gObjectEventPicTable_Raticate[] = { +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), @@ -2150,7 +2150,7 @@ const struct SpriteFrameImage gObjectEventPicTable_Raticate[] = { overworld_frame(gObjectEventPic_Raticate, 4, 4, 4), overworld_frame(gObjectEventPic_Raticate, 4, 4, 5), }; -const struct SpriteFrameImage gObjectEventPicTable_Spearow[] = { +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), @@ -2158,7 +2158,7 @@ const struct SpriteFrameImage gObjectEventPicTable_Spearow[] = { overworld_frame(gObjectEventPic_Spearow, 4, 4, 4), overworld_frame(gObjectEventPic_Spearow, 4, 4, 5), }; -const struct SpriteFrameImage gObjectEventPicTable_Fearow[] = { +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), @@ -2166,7 +2166,7 @@ const struct SpriteFrameImage gObjectEventPicTable_Fearow[] = { overworld_frame(gObjectEventPic_Fearow, 4, 4, 4), overworld_frame(gObjectEventPic_Fearow, 4, 4, 5), }; -const struct SpriteFrameImage gObjectEventPicTable_Ekans[] = { +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), @@ -2174,7 +2174,7 @@ const struct SpriteFrameImage gObjectEventPicTable_Ekans[] = { overworld_frame(gObjectEventPic_Ekans, 4, 4, 4), overworld_frame(gObjectEventPic_Ekans, 4, 4, 5), }; -const struct SpriteFrameImage gObjectEventPicTable_Arbok[] = { +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), @@ -2182,7 +2182,7 @@ const struct SpriteFrameImage gObjectEventPicTable_Arbok[] = { overworld_frame(gObjectEventPic_Arbok, 4, 4, 4), overworld_frame(gObjectEventPic_Arbok, 4, 4, 5), }; -const struct SpriteFrameImage gObjectEventPicTable_Pikachu[] = { +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), @@ -2190,7 +2190,7 @@ const struct SpriteFrameImage gObjectEventPicTable_Pikachu[] = { overworld_frame(gObjectEventPic_Pikachu, 4, 4, 4), overworld_frame(gObjectEventPic_Pikachu, 4, 4, 5), }; -const struct SpriteFrameImage gObjectEventPicTable_Raichu[] = { +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), @@ -2198,7 +2198,7 @@ const struct SpriteFrameImage gObjectEventPicTable_Raichu[] = { overworld_frame(gObjectEventPic_Raichu, 4, 4, 4), overworld_frame(gObjectEventPic_Raichu, 4, 4, 5), }; -const struct SpriteFrameImage gObjectEventPicTable_Sandshrew[] = { +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), @@ -2206,7 +2206,7 @@ const struct SpriteFrameImage gObjectEventPicTable_Sandshrew[] = { overworld_frame(gObjectEventPic_Sandshrew, 4, 4, 4), overworld_frame(gObjectEventPic_Sandshrew, 4, 4, 5), }; -const struct SpriteFrameImage gObjectEventPicTable_Sandslash[] = { +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), @@ -2214,7 +2214,7 @@ const struct SpriteFrameImage gObjectEventPicTable_Sandslash[] = { overworld_frame(gObjectEventPic_Sandslash, 4, 4, 4), overworld_frame(gObjectEventPic_Sandslash, 4, 4, 5), }; -const struct SpriteFrameImage gObjectEventPicTable_Nidoran_f[] = { +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), @@ -2222,7 +2222,7 @@ const struct SpriteFrameImage gObjectEventPicTable_Nidoran_f[] = { overworld_frame(gObjectEventPic_Nidoran_f, 4, 4, 4), overworld_frame(gObjectEventPic_Nidoran_f, 4, 4, 5), }; -const struct SpriteFrameImage gObjectEventPicTable_Nidorina[] = { +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), @@ -2230,7 +2230,7 @@ const struct SpriteFrameImage gObjectEventPicTable_Nidorina[] = { overworld_frame(gObjectEventPic_Nidorina, 4, 4, 4), overworld_frame(gObjectEventPic_Nidorina, 4, 4, 5), }; -const struct SpriteFrameImage gObjectEventPicTable_Nidoqueen[] = { +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), @@ -2238,7 +2238,7 @@ const struct SpriteFrameImage gObjectEventPicTable_Nidoqueen[] = { overworld_frame(gObjectEventPic_Nidoqueen, 4, 4, 4), overworld_frame(gObjectEventPic_Nidoqueen, 4, 4, 5), }; -const struct SpriteFrameImage gObjectEventPicTable_Nidoran_m[] = { +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), @@ -2246,7 +2246,7 @@ const struct SpriteFrameImage gObjectEventPicTable_Nidoran_m[] = { overworld_frame(gObjectEventPic_Nidoran_m, 4, 4, 4), overworld_frame(gObjectEventPic_Nidoran_m, 4, 4, 5), }; -const struct SpriteFrameImage gObjectEventPicTable_Nidorino[] = { +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), @@ -2254,7 +2254,7 @@ const struct SpriteFrameImage gObjectEventPicTable_Nidorino[] = { overworld_frame(gObjectEventPic_Nidorino, 4, 4, 4), overworld_frame(gObjectEventPic_Nidorino, 4, 4, 5), }; -const struct SpriteFrameImage gObjectEventPicTable_Nidoking[] = { +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), @@ -2262,7 +2262,7 @@ const struct SpriteFrameImage gObjectEventPicTable_Nidoking[] = { overworld_frame(gObjectEventPic_Nidoking, 4, 4, 4), overworld_frame(gObjectEventPic_Nidoking, 4, 4, 5), }; -const struct SpriteFrameImage gObjectEventPicTable_Clefairy[] = { +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), @@ -2270,7 +2270,7 @@ const struct SpriteFrameImage gObjectEventPicTable_Clefairy[] = { overworld_frame(gObjectEventPic_Clefairy, 4, 4, 4), overworld_frame(gObjectEventPic_Clefairy, 4, 4, 5), }; -const struct SpriteFrameImage gObjectEventPicTable_Clefable[] = { +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), @@ -2278,7 +2278,7 @@ const struct SpriteFrameImage gObjectEventPicTable_Clefable[] = { overworld_frame(gObjectEventPic_Clefable, 4, 4, 4), overworld_frame(gObjectEventPic_Clefable, 4, 4, 5), }; -const struct SpriteFrameImage gObjectEventPicTable_Vulpix[] = { +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), @@ -2286,7 +2286,7 @@ const struct SpriteFrameImage gObjectEventPicTable_Vulpix[] = { overworld_frame(gObjectEventPic_Vulpix, 4, 4, 4), overworld_frame(gObjectEventPic_Vulpix, 4, 4, 5), }; -const struct SpriteFrameImage gObjectEventPicTable_Ninetales[] = { +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), @@ -2294,7 +2294,7 @@ const struct SpriteFrameImage gObjectEventPicTable_Ninetales[] = { overworld_frame(gObjectEventPic_Ninetales, 4, 4, 4), overworld_frame(gObjectEventPic_Ninetales, 4, 4, 5), }; -const struct SpriteFrameImage gObjectEventPicTable_Jigglypuff[] = { +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), @@ -2302,7 +2302,7 @@ const struct SpriteFrameImage gObjectEventPicTable_Jigglypuff[] = { overworld_frame(gObjectEventPic_Jigglypuff, 4, 4, 4), overworld_frame(gObjectEventPic_Jigglypuff, 4, 4, 5), }; -const struct SpriteFrameImage gObjectEventPicTable_Wigglytuff[] = { +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), @@ -2310,7 +2310,7 @@ const struct SpriteFrameImage gObjectEventPicTable_Wigglytuff[] = { overworld_frame(gObjectEventPic_Wigglytuff, 4, 4, 4), overworld_frame(gObjectEventPic_Wigglytuff, 4, 4, 5), }; -const struct SpriteFrameImage gObjectEventPicTable_Zubat[] = { +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), @@ -2318,7 +2318,7 @@ const struct SpriteFrameImage gObjectEventPicTable_Zubat[] = { overworld_frame(gObjectEventPic_Zubat, 4, 4, 4), overworld_frame(gObjectEventPic_Zubat, 4, 4, 5), }; -const struct SpriteFrameImage gObjectEventPicTable_Golbat[] = { +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), @@ -2326,7 +2326,7 @@ const struct SpriteFrameImage gObjectEventPicTable_Golbat[] = { overworld_frame(gObjectEventPic_Golbat, 4, 4, 4), overworld_frame(gObjectEventPic_Golbat, 4, 4, 5), }; -const struct SpriteFrameImage gObjectEventPicTable_Oddish[] = { +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), @@ -2334,7 +2334,7 @@ const struct SpriteFrameImage gObjectEventPicTable_Oddish[] = { overworld_frame(gObjectEventPic_Oddish, 4, 4, 4), overworld_frame(gObjectEventPic_Oddish, 4, 4, 5), }; -const struct SpriteFrameImage gObjectEventPicTable_Gloom[] = { +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), @@ -2342,7 +2342,7 @@ const struct SpriteFrameImage gObjectEventPicTable_Gloom[] = { overworld_frame(gObjectEventPic_Gloom, 4, 4, 4), overworld_frame(gObjectEventPic_Gloom, 4, 4, 5), }; -const struct SpriteFrameImage gObjectEventPicTable_Vileplume[] = { +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), @@ -2350,7 +2350,7 @@ const struct SpriteFrameImage gObjectEventPicTable_Vileplume[] = { overworld_frame(gObjectEventPic_Vileplume, 4, 4, 4), overworld_frame(gObjectEventPic_Vileplume, 4, 4, 5), }; -const struct SpriteFrameImage gObjectEventPicTable_Paras[] = { +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), @@ -2358,7 +2358,7 @@ const struct SpriteFrameImage gObjectEventPicTable_Paras[] = { overworld_frame(gObjectEventPic_Paras, 4, 4, 4), overworld_frame(gObjectEventPic_Paras, 4, 4, 5), }; -const struct SpriteFrameImage gObjectEventPicTable_Parasect[] = { +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), @@ -2366,7 +2366,7 @@ const struct SpriteFrameImage gObjectEventPicTable_Parasect[] = { overworld_frame(gObjectEventPic_Parasect, 4, 4, 4), overworld_frame(gObjectEventPic_Parasect, 4, 4, 5), }; -const struct SpriteFrameImage gObjectEventPicTable_Venonat[] = { +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), @@ -2374,7 +2374,7 @@ const struct SpriteFrameImage gObjectEventPicTable_Venonat[] = { overworld_frame(gObjectEventPic_Venonat, 4, 4, 4), overworld_frame(gObjectEventPic_Venonat, 4, 4, 5), }; -const struct SpriteFrameImage gObjectEventPicTable_Venomoth[] = { +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), @@ -2382,7 +2382,7 @@ const struct SpriteFrameImage gObjectEventPicTable_Venomoth[] = { overworld_frame(gObjectEventPic_Venomoth, 4, 4, 4), overworld_frame(gObjectEventPic_Venomoth, 4, 4, 5), }; -const struct SpriteFrameImage gObjectEventPicTable_Diglett[] = { +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), @@ -2390,7 +2390,7 @@ const struct SpriteFrameImage gObjectEventPicTable_Diglett[] = { overworld_frame(gObjectEventPic_Diglett, 4, 4, 4), overworld_frame(gObjectEventPic_Diglett, 4, 4, 5), }; -const struct SpriteFrameImage gObjectEventPicTable_Dugtrio[] = { +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), @@ -2398,7 +2398,7 @@ const struct SpriteFrameImage gObjectEventPicTable_Dugtrio[] = { overworld_frame(gObjectEventPic_Dugtrio, 4, 4, 4), overworld_frame(gObjectEventPic_Dugtrio, 4, 4, 5), }; -const struct SpriteFrameImage gObjectEventPicTable_Meowth[] = { +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), @@ -2406,7 +2406,7 @@ const struct SpriteFrameImage gObjectEventPicTable_Meowth[] = { overworld_frame(gObjectEventPic_Meowth, 4, 4, 4), overworld_frame(gObjectEventPic_Meowth, 4, 4, 5), }; -const struct SpriteFrameImage gObjectEventPicTable_Persian[] = { +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), @@ -2414,7 +2414,7 @@ const struct SpriteFrameImage gObjectEventPicTable_Persian[] = { overworld_frame(gObjectEventPic_Persian, 4, 4, 4), overworld_frame(gObjectEventPic_Persian, 4, 4, 5), }; -const struct SpriteFrameImage gObjectEventPicTable_Psyduck[] = { +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), @@ -2422,7 +2422,7 @@ const struct SpriteFrameImage gObjectEventPicTable_Psyduck[] = { overworld_frame(gObjectEventPic_Psyduck, 4, 4, 4), overworld_frame(gObjectEventPic_Psyduck, 4, 4, 5), }; -const struct SpriteFrameImage gObjectEventPicTable_Golduck[] = { +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), @@ -2430,7 +2430,7 @@ const struct SpriteFrameImage gObjectEventPicTable_Golduck[] = { overworld_frame(gObjectEventPic_Golduck, 4, 4, 4), overworld_frame(gObjectEventPic_Golduck, 4, 4, 5), }; -const struct SpriteFrameImage gObjectEventPicTable_Mankey[] = { +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), @@ -2438,7 +2438,7 @@ const struct SpriteFrameImage gObjectEventPicTable_Mankey[] = { overworld_frame(gObjectEventPic_Mankey, 4, 4, 4), overworld_frame(gObjectEventPic_Mankey, 4, 4, 5), }; -const struct SpriteFrameImage gObjectEventPicTable_Primeape[] = { +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), @@ -2446,7 +2446,7 @@ const struct SpriteFrameImage gObjectEventPicTable_Primeape[] = { overworld_frame(gObjectEventPic_Primeape, 4, 4, 4), overworld_frame(gObjectEventPic_Primeape, 4, 4, 5), }; -const struct SpriteFrameImage gObjectEventPicTable_Growlithe[] = { +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), @@ -2454,7 +2454,7 @@ const struct SpriteFrameImage gObjectEventPicTable_Growlithe[] = { overworld_frame(gObjectEventPic_Growlithe, 4, 4, 4), overworld_frame(gObjectEventPic_Growlithe, 4, 4, 5), }; -const struct SpriteFrameImage gObjectEventPicTable_Arcanine[] = { +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), @@ -2462,7 +2462,7 @@ const struct SpriteFrameImage gObjectEventPicTable_Arcanine[] = { overworld_frame(gObjectEventPic_Arcanine, 4, 4, 4), overworld_frame(gObjectEventPic_Arcanine, 4, 4, 5), }; -const struct SpriteFrameImage gObjectEventPicTable_Poliwag[] = { +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), @@ -2470,7 +2470,7 @@ const struct SpriteFrameImage gObjectEventPicTable_Poliwag[] = { overworld_frame(gObjectEventPic_Poliwag, 4, 4, 4), overworld_frame(gObjectEventPic_Poliwag, 4, 4, 5), }; -const struct SpriteFrameImage gObjectEventPicTable_Poliwhirl[] = { +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), @@ -2478,7 +2478,7 @@ const struct SpriteFrameImage gObjectEventPicTable_Poliwhirl[] = { overworld_frame(gObjectEventPic_Poliwhirl, 4, 4, 4), overworld_frame(gObjectEventPic_Poliwhirl, 4, 4, 5), }; -const struct SpriteFrameImage gObjectEventPicTable_Poliwrath[] = { +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), @@ -2486,7 +2486,7 @@ const struct SpriteFrameImage gObjectEventPicTable_Poliwrath[] = { overworld_frame(gObjectEventPic_Poliwrath, 4, 4, 4), overworld_frame(gObjectEventPic_Poliwrath, 4, 4, 5), }; -const struct SpriteFrameImage gObjectEventPicTable_Abra[] = { +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), @@ -2494,7 +2494,7 @@ const struct SpriteFrameImage gObjectEventPicTable_Abra[] = { overworld_frame(gObjectEventPic_Abra, 4, 4, 4), overworld_frame(gObjectEventPic_Abra, 4, 4, 5), }; -const struct SpriteFrameImage gObjectEventPicTable_Kadabra[] = { +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), @@ -2502,7 +2502,7 @@ const struct SpriteFrameImage gObjectEventPicTable_Kadabra[] = { overworld_frame(gObjectEventPic_Kadabra, 4, 4, 4), overworld_frame(gObjectEventPic_Kadabra, 4, 4, 5), }; -const struct SpriteFrameImage gObjectEventPicTable_Alakazam[] = { +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), @@ -2510,7 +2510,7 @@ const struct SpriteFrameImage gObjectEventPicTable_Alakazam[] = { overworld_frame(gObjectEventPic_Alakazam, 4, 4, 4), overworld_frame(gObjectEventPic_Alakazam, 4, 4, 5), }; -const struct SpriteFrameImage gObjectEventPicTable_Machop[] = { +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), @@ -2518,7 +2518,7 @@ const struct SpriteFrameImage gObjectEventPicTable_Machop[] = { overworld_frame(gObjectEventPic_Machop, 4, 4, 4), overworld_frame(gObjectEventPic_Machop, 4, 4, 5), }; -const struct SpriteFrameImage gObjectEventPicTable_Machoke[] = { +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), @@ -2526,7 +2526,7 @@ const struct SpriteFrameImage gObjectEventPicTable_Machoke[] = { overworld_frame(gObjectEventPic_Machoke, 4, 4, 4), overworld_frame(gObjectEventPic_Machoke, 4, 4, 5), }; -const struct SpriteFrameImage gObjectEventPicTable_Machamp[] = { +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), @@ -2534,7 +2534,7 @@ const struct SpriteFrameImage gObjectEventPicTable_Machamp[] = { overworld_frame(gObjectEventPic_Machamp, 4, 4, 4), overworld_frame(gObjectEventPic_Machamp, 4, 4, 5), }; -const struct SpriteFrameImage gObjectEventPicTable_Bellsprout[] = { +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), @@ -2542,7 +2542,7 @@ const struct SpriteFrameImage gObjectEventPicTable_Bellsprout[] = { overworld_frame(gObjectEventPic_Bellsprout, 4, 4, 4), overworld_frame(gObjectEventPic_Bellsprout, 4, 4, 5), }; -const struct SpriteFrameImage gObjectEventPicTable_Weepinbell[] = { +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), @@ -2550,7 +2550,7 @@ const struct SpriteFrameImage gObjectEventPicTable_Weepinbell[] = { overworld_frame(gObjectEventPic_Weepinbell, 4, 4, 4), overworld_frame(gObjectEventPic_Weepinbell, 4, 4, 5), }; -const struct SpriteFrameImage gObjectEventPicTable_Victreebel[] = { +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), @@ -2558,7 +2558,7 @@ const struct SpriteFrameImage gObjectEventPicTable_Victreebel[] = { overworld_frame(gObjectEventPic_Victreebel, 4, 4, 4), overworld_frame(gObjectEventPic_Victreebel, 4, 4, 5), }; -const struct SpriteFrameImage gObjectEventPicTable_Tentacool[] = { +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), @@ -2566,7 +2566,7 @@ const struct SpriteFrameImage gObjectEventPicTable_Tentacool[] = { overworld_frame(gObjectEventPic_Tentacool, 4, 4, 4), overworld_frame(gObjectEventPic_Tentacool, 4, 4, 5), }; -const struct SpriteFrameImage gObjectEventPicTable_Tentacruel[] = { +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), @@ -2574,7 +2574,7 @@ const struct SpriteFrameImage gObjectEventPicTable_Tentacruel[] = { overworld_frame(gObjectEventPic_Tentacruel, 4, 4, 4), overworld_frame(gObjectEventPic_Tentacruel, 4, 4, 5), }; -const struct SpriteFrameImage gObjectEventPicTable_Geodude[] = { +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), @@ -2582,7 +2582,7 @@ const struct SpriteFrameImage gObjectEventPicTable_Geodude[] = { overworld_frame(gObjectEventPic_Geodude, 4, 4, 4), overworld_frame(gObjectEventPic_Geodude, 4, 4, 5), }; -const struct SpriteFrameImage gObjectEventPicTable_Graveler[] = { +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), @@ -2590,7 +2590,7 @@ const struct SpriteFrameImage gObjectEventPicTable_Graveler[] = { overworld_frame(gObjectEventPic_Graveler, 4, 4, 4), overworld_frame(gObjectEventPic_Graveler, 4, 4, 5), }; -const struct SpriteFrameImage gObjectEventPicTable_Golem[] = { +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), @@ -2598,7 +2598,7 @@ const struct SpriteFrameImage gObjectEventPicTable_Golem[] = { overworld_frame(gObjectEventPic_Golem, 4, 4, 4), overworld_frame(gObjectEventPic_Golem, 4, 4, 5), }; -const struct SpriteFrameImage gObjectEventPicTable_Ponyta[] = { +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), @@ -2606,7 +2606,7 @@ const struct SpriteFrameImage gObjectEventPicTable_Ponyta[] = { overworld_frame(gObjectEventPic_Ponyta, 4, 4, 4), overworld_frame(gObjectEventPic_Ponyta, 4, 4, 5), }; -const struct SpriteFrameImage gObjectEventPicTable_Rapidash[] = { +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), @@ -2614,7 +2614,7 @@ const struct SpriteFrameImage gObjectEventPicTable_Rapidash[] = { overworld_frame(gObjectEventPic_Rapidash, 4, 4, 4), overworld_frame(gObjectEventPic_Rapidash, 4, 4, 5), }; -const struct SpriteFrameImage gObjectEventPicTable_Slowpoke[] = { +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), @@ -2622,7 +2622,7 @@ const struct SpriteFrameImage gObjectEventPicTable_Slowpoke[] = { overworld_frame(gObjectEventPic_Slowpoke, 4, 4, 4), overworld_frame(gObjectEventPic_Slowpoke, 4, 4, 5), }; -const struct SpriteFrameImage gObjectEventPicTable_Slowbro[] = { +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), @@ -2630,7 +2630,7 @@ const struct SpriteFrameImage gObjectEventPicTable_Slowbro[] = { overworld_frame(gObjectEventPic_Slowbro, 4, 4, 4), overworld_frame(gObjectEventPic_Slowbro, 4, 4, 5), }; -const struct SpriteFrameImage gObjectEventPicTable_Magnemite[] = { +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), @@ -2638,7 +2638,7 @@ const struct SpriteFrameImage gObjectEventPicTable_Magnemite[] = { overworld_frame(gObjectEventPic_Magnemite, 4, 4, 4), overworld_frame(gObjectEventPic_Magnemite, 4, 4, 5), }; -const struct SpriteFrameImage gObjectEventPicTable_Magneton[] = { +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), @@ -2646,7 +2646,7 @@ const struct SpriteFrameImage gObjectEventPicTable_Magneton[] = { overworld_frame(gObjectEventPic_Magneton, 4, 4, 4), overworld_frame(gObjectEventPic_Magneton, 4, 4, 5), }; -const struct SpriteFrameImage gObjectEventPicTable_Farfetchd[] = { +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), @@ -2654,7 +2654,7 @@ const struct SpriteFrameImage gObjectEventPicTable_Farfetchd[] = { overworld_frame(gObjectEventPic_Farfetchd, 4, 4, 4), overworld_frame(gObjectEventPic_Farfetchd, 4, 4, 5), }; -const struct SpriteFrameImage gObjectEventPicTable_Doduo[] = { +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), @@ -2662,7 +2662,7 @@ const struct SpriteFrameImage gObjectEventPicTable_Doduo[] = { overworld_frame(gObjectEventPic_Doduo, 4, 4, 4), overworld_frame(gObjectEventPic_Doduo, 4, 4, 5), }; -const struct SpriteFrameImage gObjectEventPicTable_Dodrio[] = { +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), @@ -2670,7 +2670,7 @@ const struct SpriteFrameImage gObjectEventPicTable_Dodrio[] = { overworld_frame(gObjectEventPic_Dodrio, 4, 4, 4), overworld_frame(gObjectEventPic_Dodrio, 4, 4, 5), }; -const struct SpriteFrameImage gObjectEventPicTable_Seel[] = { +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), @@ -2678,7 +2678,7 @@ const struct SpriteFrameImage gObjectEventPicTable_Seel[] = { overworld_frame(gObjectEventPic_Seel, 4, 4, 4), overworld_frame(gObjectEventPic_Seel, 4, 4, 5), }; -const struct SpriteFrameImage gObjectEventPicTable_Dewgong[] = { +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), @@ -2686,7 +2686,7 @@ const struct SpriteFrameImage gObjectEventPicTable_Dewgong[] = { overworld_frame(gObjectEventPic_Dewgong, 4, 4, 4), overworld_frame(gObjectEventPic_Dewgong, 4, 4, 5), }; -const struct SpriteFrameImage gObjectEventPicTable_Grimer[] = { +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), @@ -2694,7 +2694,7 @@ const struct SpriteFrameImage gObjectEventPicTable_Grimer[] = { overworld_frame(gObjectEventPic_Grimer, 4, 4, 4), overworld_frame(gObjectEventPic_Grimer, 4, 4, 5), }; -const struct SpriteFrameImage gObjectEventPicTable_Muk[] = { +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), @@ -2702,7 +2702,7 @@ const struct SpriteFrameImage gObjectEventPicTable_Muk[] = { overworld_frame(gObjectEventPic_Muk, 4, 4, 4), overworld_frame(gObjectEventPic_Muk, 4, 4, 5), }; -const struct SpriteFrameImage gObjectEventPicTable_Shellder[] = { +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), @@ -2710,7 +2710,7 @@ const struct SpriteFrameImage gObjectEventPicTable_Shellder[] = { overworld_frame(gObjectEventPic_Shellder, 4, 4, 4), overworld_frame(gObjectEventPic_Shellder, 4, 4, 5), }; -const struct SpriteFrameImage gObjectEventPicTable_Cloyster[] = { +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), @@ -2718,7 +2718,7 @@ const struct SpriteFrameImage gObjectEventPicTable_Cloyster[] = { overworld_frame(gObjectEventPic_Cloyster, 4, 4, 4), overworld_frame(gObjectEventPic_Cloyster, 4, 4, 5), }; -const struct SpriteFrameImage gObjectEventPicTable_Gastly[] = { +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), @@ -2726,7 +2726,7 @@ const struct SpriteFrameImage gObjectEventPicTable_Gastly[] = { overworld_frame(gObjectEventPic_Gastly, 4, 4, 4), overworld_frame(gObjectEventPic_Gastly, 4, 4, 5), }; -const struct SpriteFrameImage gObjectEventPicTable_Haunter[] = { +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), @@ -2734,7 +2734,7 @@ const struct SpriteFrameImage gObjectEventPicTable_Haunter[] = { overworld_frame(gObjectEventPic_Haunter, 4, 4, 4), overworld_frame(gObjectEventPic_Haunter, 4, 4, 5), }; -const struct SpriteFrameImage gObjectEventPicTable_Gengar[] = { +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), @@ -2742,7 +2742,7 @@ const struct SpriteFrameImage gObjectEventPicTable_Gengar[] = { overworld_frame(gObjectEventPic_Gengar, 4, 4, 4), overworld_frame(gObjectEventPic_Gengar, 4, 4, 5), }; -const struct SpriteFrameImage gObjectEventPicTable_Onix[] = { +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), @@ -2750,7 +2750,7 @@ const struct SpriteFrameImage gObjectEventPicTable_Onix[] = { overworld_frame(gObjectEventPic_Onix, 4, 4, 4), overworld_frame(gObjectEventPic_Onix, 4, 4, 5), }; -const struct SpriteFrameImage gObjectEventPicTable_Drowzee[] = { +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), @@ -2758,7 +2758,7 @@ const struct SpriteFrameImage gObjectEventPicTable_Drowzee[] = { overworld_frame(gObjectEventPic_Drowzee, 4, 4, 4), overworld_frame(gObjectEventPic_Drowzee, 4, 4, 5), }; -const struct SpriteFrameImage gObjectEventPicTable_Hypno[] = { +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), @@ -2766,7 +2766,7 @@ const struct SpriteFrameImage gObjectEventPicTable_Hypno[] = { overworld_frame(gObjectEventPic_Hypno, 4, 4, 4), overworld_frame(gObjectEventPic_Hypno, 4, 4, 5), }; -const struct SpriteFrameImage gObjectEventPicTable_Krabby[] = { +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), @@ -2774,7 +2774,7 @@ const struct SpriteFrameImage gObjectEventPicTable_Krabby[] = { overworld_frame(gObjectEventPic_Krabby, 4, 4, 4), overworld_frame(gObjectEventPic_Krabby, 4, 4, 5), }; -const struct SpriteFrameImage gObjectEventPicTable_Kingler[] = { +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), @@ -2782,7 +2782,7 @@ const struct SpriteFrameImage gObjectEventPicTable_Kingler[] = { overworld_frame(gObjectEventPic_Kingler, 4, 4, 4), overworld_frame(gObjectEventPic_Kingler, 4, 4, 5), }; -const struct SpriteFrameImage gObjectEventPicTable_Voltorb[] = { +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), @@ -2790,7 +2790,7 @@ const struct SpriteFrameImage gObjectEventPicTable_Voltorb[] = { overworld_frame(gObjectEventPic_Voltorb, 4, 4, 4), overworld_frame(gObjectEventPic_Voltorb, 4, 4, 5), }; -const struct SpriteFrameImage gObjectEventPicTable_Electrode[] = { +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), @@ -2798,7 +2798,7 @@ const struct SpriteFrameImage gObjectEventPicTable_Electrode[] = { overworld_frame(gObjectEventPic_Electrode, 4, 4, 4), overworld_frame(gObjectEventPic_Electrode, 4, 4, 5), }; -const struct SpriteFrameImage gObjectEventPicTable_Exeggcute[] = { +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), @@ -2806,7 +2806,7 @@ const struct SpriteFrameImage gObjectEventPicTable_Exeggcute[] = { overworld_frame(gObjectEventPic_Exeggcute, 4, 4, 4), overworld_frame(gObjectEventPic_Exeggcute, 4, 4, 5), }; -const struct SpriteFrameImage gObjectEventPicTable_Exeggutor[] = { +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), @@ -2814,7 +2814,7 @@ const struct SpriteFrameImage gObjectEventPicTable_Exeggutor[] = { overworld_frame(gObjectEventPic_Exeggutor, 4, 4, 4), overworld_frame(gObjectEventPic_Exeggutor, 4, 4, 5), }; -const struct SpriteFrameImage gObjectEventPicTable_Cubone[] = { +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), @@ -2822,7 +2822,7 @@ const struct SpriteFrameImage gObjectEventPicTable_Cubone[] = { overworld_frame(gObjectEventPic_Cubone, 4, 4, 4), overworld_frame(gObjectEventPic_Cubone, 4, 4, 5), }; -const struct SpriteFrameImage gObjectEventPicTable_Marowak[] = { +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), @@ -2830,7 +2830,7 @@ const struct SpriteFrameImage gObjectEventPicTable_Marowak[] = { overworld_frame(gObjectEventPic_Marowak, 4, 4, 4), overworld_frame(gObjectEventPic_Marowak, 4, 4, 5), }; -const struct SpriteFrameImage gObjectEventPicTable_Hitmonlee[] = { +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), @@ -2838,7 +2838,7 @@ const struct SpriteFrameImage gObjectEventPicTable_Hitmonlee[] = { overworld_frame(gObjectEventPic_Hitmonlee, 4, 4, 4), overworld_frame(gObjectEventPic_Hitmonlee, 4, 4, 5), }; -const struct SpriteFrameImage gObjectEventPicTable_Hitmonchan[] = { +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), @@ -2846,7 +2846,7 @@ const struct SpriteFrameImage gObjectEventPicTable_Hitmonchan[] = { overworld_frame(gObjectEventPic_Hitmonchan, 4, 4, 4), overworld_frame(gObjectEventPic_Hitmonchan, 4, 4, 5), }; -const struct SpriteFrameImage gObjectEventPicTable_Lickitung[] = { +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), @@ -2854,7 +2854,7 @@ const struct SpriteFrameImage gObjectEventPicTable_Lickitung[] = { overworld_frame(gObjectEventPic_Lickitung, 4, 4, 4), overworld_frame(gObjectEventPic_Lickitung, 4, 4, 5), }; -const struct SpriteFrameImage gObjectEventPicTable_Koffing[] = { +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), @@ -2862,7 +2862,7 @@ const struct SpriteFrameImage gObjectEventPicTable_Koffing[] = { overworld_frame(gObjectEventPic_Koffing, 4, 4, 4), overworld_frame(gObjectEventPic_Koffing, 4, 4, 5), }; -const struct SpriteFrameImage gObjectEventPicTable_Weezing[] = { +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), @@ -2870,7 +2870,7 @@ const struct SpriteFrameImage gObjectEventPicTable_Weezing[] = { overworld_frame(gObjectEventPic_Weezing, 4, 4, 4), overworld_frame(gObjectEventPic_Weezing, 4, 4, 5), }; -const struct SpriteFrameImage gObjectEventPicTable_Rhyhorn[] = { +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), @@ -2878,7 +2878,7 @@ const struct SpriteFrameImage gObjectEventPicTable_Rhyhorn[] = { overworld_frame(gObjectEventPic_Rhyhorn, 4, 4, 4), overworld_frame(gObjectEventPic_Rhyhorn, 4, 4, 5), }; -const struct SpriteFrameImage gObjectEventPicTable_Rhydon[] = { +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), @@ -2886,7 +2886,7 @@ const struct SpriteFrameImage gObjectEventPicTable_Rhydon[] = { overworld_frame(gObjectEventPic_Rhydon, 4, 4, 4), overworld_frame(gObjectEventPic_Rhydon, 4, 4, 5), }; -const struct SpriteFrameImage gObjectEventPicTable_Chansey[] = { +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), @@ -2894,7 +2894,7 @@ const struct SpriteFrameImage gObjectEventPicTable_Chansey[] = { overworld_frame(gObjectEventPic_Chansey, 4, 4, 4), overworld_frame(gObjectEventPic_Chansey, 4, 4, 5), }; -const struct SpriteFrameImage gObjectEventPicTable_Tangela[] = { +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), @@ -2902,7 +2902,7 @@ const struct SpriteFrameImage gObjectEventPicTable_Tangela[] = { overworld_frame(gObjectEventPic_Tangela, 4, 4, 4), overworld_frame(gObjectEventPic_Tangela, 4, 4, 5), }; -const struct SpriteFrameImage gObjectEventPicTable_Kangaskhan[] = { +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), @@ -2910,7 +2910,7 @@ const struct SpriteFrameImage gObjectEventPicTable_Kangaskhan[] = { overworld_frame(gObjectEventPic_Kangaskhan, 4, 4, 4), overworld_frame(gObjectEventPic_Kangaskhan, 4, 4, 5), }; -const struct SpriteFrameImage gObjectEventPicTable_Horsea[] = { +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), @@ -2918,7 +2918,7 @@ const struct SpriteFrameImage gObjectEventPicTable_Horsea[] = { overworld_frame(gObjectEventPic_Horsea, 4, 4, 4), overworld_frame(gObjectEventPic_Horsea, 4, 4, 5), }; -const struct SpriteFrameImage gObjectEventPicTable_Seadra[] = { +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), @@ -2926,7 +2926,7 @@ const struct SpriteFrameImage gObjectEventPicTable_Seadra[] = { overworld_frame(gObjectEventPic_Seadra, 4, 4, 4), overworld_frame(gObjectEventPic_Seadra, 4, 4, 5), }; -const struct SpriteFrameImage gObjectEventPicTable_Goldeen[] = { +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), @@ -2934,7 +2934,7 @@ const struct SpriteFrameImage gObjectEventPicTable_Goldeen[] = { overworld_frame(gObjectEventPic_Goldeen, 4, 4, 4), overworld_frame(gObjectEventPic_Goldeen, 4, 4, 5), }; -const struct SpriteFrameImage gObjectEventPicTable_Seaking[] = { +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), @@ -2942,7 +2942,7 @@ const struct SpriteFrameImage gObjectEventPicTable_Seaking[] = { overworld_frame(gObjectEventPic_Seaking, 4, 4, 4), overworld_frame(gObjectEventPic_Seaking, 4, 4, 5), }; -const struct SpriteFrameImage gObjectEventPicTable_Staryu[] = { +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), @@ -2950,7 +2950,7 @@ const struct SpriteFrameImage gObjectEventPicTable_Staryu[] = { overworld_frame(gObjectEventPic_Staryu, 4, 4, 4), overworld_frame(gObjectEventPic_Staryu, 4, 4, 5), }; -const struct SpriteFrameImage gObjectEventPicTable_Starmie[] = { +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), @@ -2958,7 +2958,7 @@ const struct SpriteFrameImage gObjectEventPicTable_Starmie[] = { overworld_frame(gObjectEventPic_Starmie, 4, 4, 4), overworld_frame(gObjectEventPic_Starmie, 4, 4, 5), }; -const struct SpriteFrameImage gObjectEventPicTable_Mr_Mime[] = { +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), @@ -2966,7 +2966,7 @@ const struct SpriteFrameImage gObjectEventPicTable_Mr_Mime[] = { overworld_frame(gObjectEventPic_Mr_Mime, 4, 4, 4), overworld_frame(gObjectEventPic_Mr_Mime, 4, 4, 5), }; -const struct SpriteFrameImage gObjectEventPicTable_Scyther[] = { +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), @@ -2974,7 +2974,7 @@ const struct SpriteFrameImage gObjectEventPicTable_Scyther[] = { overworld_frame(gObjectEventPic_Scyther, 4, 4, 4), overworld_frame(gObjectEventPic_Scyther, 4, 4, 5), }; -const struct SpriteFrameImage gObjectEventPicTable_Jynx[] = { +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), @@ -2982,7 +2982,7 @@ const struct SpriteFrameImage gObjectEventPicTable_Jynx[] = { overworld_frame(gObjectEventPic_Jynx, 4, 4, 4), overworld_frame(gObjectEventPic_Jynx, 4, 4, 5), }; -const struct SpriteFrameImage gObjectEventPicTable_Electabuzz[] = { +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), @@ -2990,7 +2990,7 @@ const struct SpriteFrameImage gObjectEventPicTable_Electabuzz[] = { overworld_frame(gObjectEventPic_Electabuzz, 4, 4, 4), overworld_frame(gObjectEventPic_Electabuzz, 4, 4, 5), }; -const struct SpriteFrameImage gObjectEventPicTable_Magmar[] = { +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), @@ -2998,7 +2998,7 @@ const struct SpriteFrameImage gObjectEventPicTable_Magmar[] = { overworld_frame(gObjectEventPic_Magmar, 4, 4, 4), overworld_frame(gObjectEventPic_Magmar, 4, 4, 5), }; -const struct SpriteFrameImage gObjectEventPicTable_Pinsir[] = { +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), @@ -3006,7 +3006,7 @@ const struct SpriteFrameImage gObjectEventPicTable_Pinsir[] = { overworld_frame(gObjectEventPic_Pinsir, 4, 4, 4), overworld_frame(gObjectEventPic_Pinsir, 4, 4, 5), }; -const struct SpriteFrameImage gObjectEventPicTable_Tauros[] = { +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), @@ -3014,7 +3014,7 @@ const struct SpriteFrameImage gObjectEventPicTable_Tauros[] = { overworld_frame(gObjectEventPic_Tauros, 4, 4, 4), overworld_frame(gObjectEventPic_Tauros, 4, 4, 5), }; -const struct SpriteFrameImage gObjectEventPicTable_Magikarp[] = { +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), @@ -3022,7 +3022,7 @@ const struct SpriteFrameImage gObjectEventPicTable_Magikarp[] = { overworld_frame(gObjectEventPic_Magikarp, 4, 4, 4), overworld_frame(gObjectEventPic_Magikarp, 4, 4, 5), }; -const struct SpriteFrameImage gObjectEventPicTable_Gyarados[] = { +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), @@ -3030,7 +3030,7 @@ const struct SpriteFrameImage gObjectEventPicTable_Gyarados[] = { overworld_frame(gObjectEventPic_Gyarados, 4, 4, 4), overworld_frame(gObjectEventPic_Gyarados, 4, 4, 5), }; -const struct SpriteFrameImage gObjectEventPicTable_Lapras[] = { +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), @@ -3038,7 +3038,7 @@ const struct SpriteFrameImage gObjectEventPicTable_Lapras[] = { overworld_frame(gObjectEventPic_Lapras, 4, 4, 4), overworld_frame(gObjectEventPic_Lapras, 4, 4, 5), }; -const struct SpriteFrameImage gObjectEventPicTable_Ditto[] = { +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), @@ -3046,7 +3046,7 @@ const struct SpriteFrameImage gObjectEventPicTable_Ditto[] = { overworld_frame(gObjectEventPic_Ditto, 4, 4, 4), overworld_frame(gObjectEventPic_Ditto, 4, 4, 5), }; -const struct SpriteFrameImage gObjectEventPicTable_Eevee[] = { +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), @@ -3054,7 +3054,7 @@ const struct SpriteFrameImage gObjectEventPicTable_Eevee[] = { overworld_frame(gObjectEventPic_Eevee, 4, 4, 4), overworld_frame(gObjectEventPic_Eevee, 4, 4, 5), }; -const struct SpriteFrameImage gObjectEventPicTable_Vaporeon[] = { +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), @@ -3062,7 +3062,7 @@ const struct SpriteFrameImage gObjectEventPicTable_Vaporeon[] = { overworld_frame(gObjectEventPic_Vaporeon, 4, 4, 4), overworld_frame(gObjectEventPic_Vaporeon, 4, 4, 5), }; -const struct SpriteFrameImage gObjectEventPicTable_Jolteon[] = { +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), @@ -3070,7 +3070,7 @@ const struct SpriteFrameImage gObjectEventPicTable_Jolteon[] = { overworld_frame(gObjectEventPic_Jolteon, 4, 4, 4), overworld_frame(gObjectEventPic_Jolteon, 4, 4, 5), }; -const struct SpriteFrameImage gObjectEventPicTable_Flareon[] = { +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), @@ -3078,7 +3078,7 @@ const struct SpriteFrameImage gObjectEventPicTable_Flareon[] = { overworld_frame(gObjectEventPic_Flareon, 4, 4, 4), overworld_frame(gObjectEventPic_Flareon, 4, 4, 5), }; -const struct SpriteFrameImage gObjectEventPicTable_Porygon[] = { +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), @@ -3086,7 +3086,7 @@ const struct SpriteFrameImage gObjectEventPicTable_Porygon[] = { overworld_frame(gObjectEventPic_Porygon, 4, 4, 4), overworld_frame(gObjectEventPic_Porygon, 4, 4, 5), }; -const struct SpriteFrameImage gObjectEventPicTable_Omanyte[] = { +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), @@ -3094,7 +3094,7 @@ const struct SpriteFrameImage gObjectEventPicTable_Omanyte[] = { overworld_frame(gObjectEventPic_Omanyte, 4, 4, 4), overworld_frame(gObjectEventPic_Omanyte, 4, 4, 5), }; -const struct SpriteFrameImage gObjectEventPicTable_Omastar[] = { +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), @@ -3102,7 +3102,7 @@ const struct SpriteFrameImage gObjectEventPicTable_Omastar[] = { overworld_frame(gObjectEventPic_Omastar, 4, 4, 4), overworld_frame(gObjectEventPic_Omastar, 4, 4, 5), }; -const struct SpriteFrameImage gObjectEventPicTable_Kabuto[] = { +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), @@ -3110,7 +3110,7 @@ const struct SpriteFrameImage gObjectEventPicTable_Kabuto[] = { overworld_frame(gObjectEventPic_Kabuto, 4, 4, 4), overworld_frame(gObjectEventPic_Kabuto, 4, 4, 5), }; -const struct SpriteFrameImage gObjectEventPicTable_Kabutops[] = { +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), @@ -3118,7 +3118,7 @@ const struct SpriteFrameImage gObjectEventPicTable_Kabutops[] = { overworld_frame(gObjectEventPic_Kabutops, 4, 4, 4), overworld_frame(gObjectEventPic_Kabutops, 4, 4, 5), }; -const struct SpriteFrameImage gObjectEventPicTable_Aerodactyl[] = { +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), @@ -3126,7 +3126,7 @@ const struct SpriteFrameImage gObjectEventPicTable_Aerodactyl[] = { overworld_frame(gObjectEventPic_Aerodactyl, 4, 4, 4), overworld_frame(gObjectEventPic_Aerodactyl, 4, 4, 5), }; -const struct SpriteFrameImage gObjectEventPicTable_Snorlax[] = { +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), @@ -3134,7 +3134,7 @@ const struct SpriteFrameImage gObjectEventPicTable_Snorlax[] = { overworld_frame(gObjectEventPic_Snorlax, 4, 4, 4), overworld_frame(gObjectEventPic_Snorlax, 4, 4, 5), }; -const struct SpriteFrameImage gObjectEventPicTable_Articuno[] = { +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), @@ -3142,7 +3142,7 @@ const struct SpriteFrameImage gObjectEventPicTable_Articuno[] = { overworld_frame(gObjectEventPic_Articuno, 4, 4, 4), overworld_frame(gObjectEventPic_Articuno, 4, 4, 5), }; -const struct SpriteFrameImage gObjectEventPicTable_Zapdos[] = { +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), @@ -3150,7 +3150,7 @@ const struct SpriteFrameImage gObjectEventPicTable_Zapdos[] = { overworld_frame(gObjectEventPic_Zapdos, 4, 4, 4), overworld_frame(gObjectEventPic_Zapdos, 4, 4, 5), }; -const struct SpriteFrameImage gObjectEventPicTable_Moltres[] = { +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), @@ -3158,7 +3158,7 @@ const struct SpriteFrameImage gObjectEventPicTable_Moltres[] = { overworld_frame(gObjectEventPic_Moltres, 4, 4, 4), overworld_frame(gObjectEventPic_Moltres, 4, 4, 5), }; -const struct SpriteFrameImage gObjectEventPicTable_Dratini[] = { +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), @@ -3166,7 +3166,7 @@ const struct SpriteFrameImage gObjectEventPicTable_Dratini[] = { overworld_frame(gObjectEventPic_Dratini, 4, 4, 4), overworld_frame(gObjectEventPic_Dratini, 4, 4, 5), }; -const struct SpriteFrameImage gObjectEventPicTable_Dragonair[] = { +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), @@ -3174,7 +3174,7 @@ const struct SpriteFrameImage gObjectEventPicTable_Dragonair[] = { overworld_frame(gObjectEventPic_Dragonair, 4, 4, 4), overworld_frame(gObjectEventPic_Dragonair, 4, 4, 5), }; -const struct SpriteFrameImage gObjectEventPicTable_Dragonite[] = { +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), @@ -3182,7 +3182,7 @@ const struct SpriteFrameImage gObjectEventPicTable_Dragonite[] = { overworld_frame(gObjectEventPic_Dragonite, 4, 4, 4), overworld_frame(gObjectEventPic_Dragonite, 4, 4, 5), }; -const struct SpriteFrameImage gObjectEventPicTable_Mewtwo[] = { +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), @@ -3190,7 +3190,7 @@ const struct SpriteFrameImage gObjectEventPicTable_Mewtwo[] = { overworld_frame(gObjectEventPic_Mewtwo, 4, 4, 4), overworld_frame(gObjectEventPic_Mewtwo, 4, 4, 5), }; -const struct SpriteFrameImage gObjectEventPicTable_Mew[] = { +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), @@ -3198,7 +3198,7 @@ const struct SpriteFrameImage gObjectEventPicTable_Mew[] = { overworld_frame(gObjectEventPic_Mew, 4, 4, 4), overworld_frame(gObjectEventPic_Mew, 4, 4, 5), }; -const struct SpriteFrameImage gObjectEventPicTable_Chikorita[] = { +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), @@ -3206,7 +3206,7 @@ const struct SpriteFrameImage gObjectEventPicTable_Chikorita[] = { overworld_frame(gObjectEventPic_Chikorita, 4, 4, 4), overworld_frame(gObjectEventPic_Chikorita, 4, 4, 5), }; -const struct SpriteFrameImage gObjectEventPicTable_Bayleef[] = { +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), @@ -3214,7 +3214,7 @@ const struct SpriteFrameImage gObjectEventPicTable_Bayleef[] = { overworld_frame(gObjectEventPic_Bayleef, 4, 4, 4), overworld_frame(gObjectEventPic_Bayleef, 4, 4, 5), }; -const struct SpriteFrameImage gObjectEventPicTable_Meganium[] = { +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), @@ -3222,7 +3222,7 @@ const struct SpriteFrameImage gObjectEventPicTable_Meganium[] = { overworld_frame(gObjectEventPic_Meganium, 4, 4, 4), overworld_frame(gObjectEventPic_Meganium, 4, 4, 5), }; -const struct SpriteFrameImage gObjectEventPicTable_Cyndaquil[] = { +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), @@ -3230,7 +3230,7 @@ const struct SpriteFrameImage gObjectEventPicTable_Cyndaquil[] = { overworld_frame(gObjectEventPic_Cyndaquil, 4, 4, 4), overworld_frame(gObjectEventPic_Cyndaquil, 4, 4, 5), }; -const struct SpriteFrameImage gObjectEventPicTable_Quilava[] = { +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), @@ -3238,7 +3238,7 @@ const struct SpriteFrameImage gObjectEventPicTable_Quilava[] = { overworld_frame(gObjectEventPic_Quilava, 4, 4, 4), overworld_frame(gObjectEventPic_Quilava, 4, 4, 5), }; -const struct SpriteFrameImage gObjectEventPicTable_Typhlosion[] = { +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), @@ -3246,7 +3246,7 @@ const struct SpriteFrameImage gObjectEventPicTable_Typhlosion[] = { overworld_frame(gObjectEventPic_Typhlosion, 4, 4, 4), overworld_frame(gObjectEventPic_Typhlosion, 4, 4, 5), }; -const struct SpriteFrameImage gObjectEventPicTable_Totodile[] = { +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), @@ -3254,7 +3254,7 @@ const struct SpriteFrameImage gObjectEventPicTable_Totodile[] = { overworld_frame(gObjectEventPic_Totodile, 4, 4, 4), overworld_frame(gObjectEventPic_Totodile, 4, 4, 5), }; -const struct SpriteFrameImage gObjectEventPicTable_Croconaw[] = { +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), @@ -3262,7 +3262,7 @@ const struct SpriteFrameImage gObjectEventPicTable_Croconaw[] = { overworld_frame(gObjectEventPic_Croconaw, 4, 4, 4), overworld_frame(gObjectEventPic_Croconaw, 4, 4, 5), }; -const struct SpriteFrameImage gObjectEventPicTable_Feraligatr[] = { +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), @@ -3270,7 +3270,7 @@ const struct SpriteFrameImage gObjectEventPicTable_Feraligatr[] = { overworld_frame(gObjectEventPic_Feraligatr, 4, 4, 4), overworld_frame(gObjectEventPic_Feraligatr, 4, 4, 5), }; -const struct SpriteFrameImage gObjectEventPicTable_Sentret[] = { +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), @@ -3278,7 +3278,7 @@ const struct SpriteFrameImage gObjectEventPicTable_Sentret[] = { overworld_frame(gObjectEventPic_Sentret, 4, 4, 4), overworld_frame(gObjectEventPic_Sentret, 4, 4, 5), }; -const struct SpriteFrameImage gObjectEventPicTable_Furret[] = { +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), @@ -3286,7 +3286,7 @@ const struct SpriteFrameImage gObjectEventPicTable_Furret[] = { overworld_frame(gObjectEventPic_Furret, 4, 4, 4), overworld_frame(gObjectEventPic_Furret, 4, 4, 5), }; -const struct SpriteFrameImage gObjectEventPicTable_Hoothoot[] = { +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), @@ -3294,7 +3294,7 @@ const struct SpriteFrameImage gObjectEventPicTable_Hoothoot[] = { overworld_frame(gObjectEventPic_Hoothoot, 4, 4, 4), overworld_frame(gObjectEventPic_Hoothoot, 4, 4, 5), }; -const struct SpriteFrameImage gObjectEventPicTable_Noctowl[] = { +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), @@ -3302,7 +3302,7 @@ const struct SpriteFrameImage gObjectEventPicTable_Noctowl[] = { overworld_frame(gObjectEventPic_Noctowl, 4, 4, 4), overworld_frame(gObjectEventPic_Noctowl, 4, 4, 5), }; -const struct SpriteFrameImage gObjectEventPicTable_Ledyba[] = { +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), @@ -3310,7 +3310,7 @@ const struct SpriteFrameImage gObjectEventPicTable_Ledyba[] = { overworld_frame(gObjectEventPic_Ledyba, 4, 4, 4), overworld_frame(gObjectEventPic_Ledyba, 4, 4, 5), }; -const struct SpriteFrameImage gObjectEventPicTable_Ledian[] = { +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), @@ -3318,7 +3318,7 @@ const struct SpriteFrameImage gObjectEventPicTable_Ledian[] = { overworld_frame(gObjectEventPic_Ledian, 4, 4, 4), overworld_frame(gObjectEventPic_Ledian, 4, 4, 5), }; -const struct SpriteFrameImage gObjectEventPicTable_Spinarak[] = { +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), @@ -3326,7 +3326,7 @@ const struct SpriteFrameImage gObjectEventPicTable_Spinarak[] = { overworld_frame(gObjectEventPic_Spinarak, 4, 4, 4), overworld_frame(gObjectEventPic_Spinarak, 4, 4, 5), }; -const struct SpriteFrameImage gObjectEventPicTable_Ariados[] = { +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), @@ -3334,7 +3334,7 @@ const struct SpriteFrameImage gObjectEventPicTable_Ariados[] = { overworld_frame(gObjectEventPic_Ariados, 4, 4, 4), overworld_frame(gObjectEventPic_Ariados, 4, 4, 5), }; -const struct SpriteFrameImage gObjectEventPicTable_Crobat[] = { +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), @@ -3342,7 +3342,7 @@ const struct SpriteFrameImage gObjectEventPicTable_Crobat[] = { overworld_frame(gObjectEventPic_Crobat, 4, 4, 4), overworld_frame(gObjectEventPic_Crobat, 4, 4, 5), }; -const struct SpriteFrameImage gObjectEventPicTable_Chinchou[] = { +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), @@ -3350,7 +3350,7 @@ const struct SpriteFrameImage gObjectEventPicTable_Chinchou[] = { overworld_frame(gObjectEventPic_Chinchou, 4, 4, 4), overworld_frame(gObjectEventPic_Chinchou, 4, 4, 5), }; -const struct SpriteFrameImage gObjectEventPicTable_Lanturn[] = { +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), @@ -3358,7 +3358,7 @@ const struct SpriteFrameImage gObjectEventPicTable_Lanturn[] = { overworld_frame(gObjectEventPic_Lanturn, 4, 4, 4), overworld_frame(gObjectEventPic_Lanturn, 4, 4, 5), }; -const struct SpriteFrameImage gObjectEventPicTable_Pichu[] = { +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), @@ -3366,7 +3366,7 @@ const struct SpriteFrameImage gObjectEventPicTable_Pichu[] = { overworld_frame(gObjectEventPic_Pichu, 4, 4, 4), overworld_frame(gObjectEventPic_Pichu, 4, 4, 5), }; -const struct SpriteFrameImage gObjectEventPicTable_Cleffa[] = { +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), @@ -3374,7 +3374,7 @@ const struct SpriteFrameImage gObjectEventPicTable_Cleffa[] = { overworld_frame(gObjectEventPic_Cleffa, 4, 4, 4), overworld_frame(gObjectEventPic_Cleffa, 4, 4, 5), }; -const struct SpriteFrameImage gObjectEventPicTable_Igglybuff[] = { +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), @@ -3382,7 +3382,7 @@ const struct SpriteFrameImage gObjectEventPicTable_Igglybuff[] = { overworld_frame(gObjectEventPic_Igglybuff, 4, 4, 4), overworld_frame(gObjectEventPic_Igglybuff, 4, 4, 5), }; -const struct SpriteFrameImage gObjectEventPicTable_Togepi[] = { +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), @@ -3390,7 +3390,7 @@ const struct SpriteFrameImage gObjectEventPicTable_Togepi[] = { overworld_frame(gObjectEventPic_Togepi, 4, 4, 4), overworld_frame(gObjectEventPic_Togepi, 4, 4, 5), }; -const struct SpriteFrameImage gObjectEventPicTable_Togetic[] = { +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), @@ -3398,7 +3398,7 @@ const struct SpriteFrameImage gObjectEventPicTable_Togetic[] = { overworld_frame(gObjectEventPic_Togetic, 4, 4, 4), overworld_frame(gObjectEventPic_Togetic, 4, 4, 5), }; -const struct SpriteFrameImage gObjectEventPicTable_Natu[] = { +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), @@ -3406,7 +3406,7 @@ const struct SpriteFrameImage gObjectEventPicTable_Natu[] = { overworld_frame(gObjectEventPic_Natu, 4, 4, 4), overworld_frame(gObjectEventPic_Natu, 4, 4, 5), }; -const struct SpriteFrameImage gObjectEventPicTable_Xatu[] = { +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), @@ -3414,7 +3414,7 @@ const struct SpriteFrameImage gObjectEventPicTable_Xatu[] = { overworld_frame(gObjectEventPic_Xatu, 4, 4, 4), overworld_frame(gObjectEventPic_Xatu, 4, 4, 5), }; -const struct SpriteFrameImage gObjectEventPicTable_Mareep[] = { +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), @@ -3422,7 +3422,7 @@ const struct SpriteFrameImage gObjectEventPicTable_Mareep[] = { overworld_frame(gObjectEventPic_Mareep, 4, 4, 4), overworld_frame(gObjectEventPic_Mareep, 4, 4, 5), }; -const struct SpriteFrameImage gObjectEventPicTable_Flaaffy[] = { +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), @@ -3430,7 +3430,7 @@ const struct SpriteFrameImage gObjectEventPicTable_Flaaffy[] = { overworld_frame(gObjectEventPic_Flaaffy, 4, 4, 4), overworld_frame(gObjectEventPic_Flaaffy, 4, 4, 5), }; -const struct SpriteFrameImage gObjectEventPicTable_Ampharos[] = { +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), @@ -3438,7 +3438,7 @@ const struct SpriteFrameImage gObjectEventPicTable_Ampharos[] = { overworld_frame(gObjectEventPic_Ampharos, 4, 4, 4), overworld_frame(gObjectEventPic_Ampharos, 4, 4, 5), }; -const struct SpriteFrameImage gObjectEventPicTable_Bellossom[] = { +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), @@ -3446,7 +3446,7 @@ const struct SpriteFrameImage gObjectEventPicTable_Bellossom[] = { overworld_frame(gObjectEventPic_Bellossom, 4, 4, 4), overworld_frame(gObjectEventPic_Bellossom, 4, 4, 5), }; -const struct SpriteFrameImage gObjectEventPicTable_Marill[] = { +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), @@ -3454,7 +3454,7 @@ const struct SpriteFrameImage gObjectEventPicTable_Marill[] = { overworld_frame(gObjectEventPic_Marill, 4, 4, 4), overworld_frame(gObjectEventPic_Marill, 4, 4, 5), }; -const struct SpriteFrameImage gObjectEventPicTable_Azumarill[] = { +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), @@ -3462,7 +3462,7 @@ const struct SpriteFrameImage gObjectEventPicTable_Azumarill[] = { overworld_frame(gObjectEventPic_Azumarill, 4, 4, 4), overworld_frame(gObjectEventPic_Azumarill, 4, 4, 5), }; -const struct SpriteFrameImage gObjectEventPicTable_Sudowoodo[] = { +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), @@ -3470,7 +3470,7 @@ const struct SpriteFrameImage gObjectEventPicTable_Sudowoodo[] = { overworld_frame(gObjectEventPic_Sudowoodo, 4, 4, 4), overworld_frame(gObjectEventPic_Sudowoodo, 4, 4, 5), }; -const struct SpriteFrameImage gObjectEventPicTable_Politoed[] = { +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), @@ -3478,7 +3478,7 @@ const struct SpriteFrameImage gObjectEventPicTable_Politoed[] = { overworld_frame(gObjectEventPic_Politoed, 4, 4, 4), overworld_frame(gObjectEventPic_Politoed, 4, 4, 5), }; -const struct SpriteFrameImage gObjectEventPicTable_Hoppip[] = { +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), @@ -3486,7 +3486,7 @@ const struct SpriteFrameImage gObjectEventPicTable_Hoppip[] = { overworld_frame(gObjectEventPic_Hoppip, 4, 4, 4), overworld_frame(gObjectEventPic_Hoppip, 4, 4, 5), }; -const struct SpriteFrameImage gObjectEventPicTable_Skiploom[] = { +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), @@ -3494,7 +3494,7 @@ const struct SpriteFrameImage gObjectEventPicTable_Skiploom[] = { overworld_frame(gObjectEventPic_Skiploom, 4, 4, 4), overworld_frame(gObjectEventPic_Skiploom, 4, 4, 5), }; -const struct SpriteFrameImage gObjectEventPicTable_Jumpluff[] = { +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), @@ -3502,7 +3502,7 @@ const struct SpriteFrameImage gObjectEventPicTable_Jumpluff[] = { overworld_frame(gObjectEventPic_Jumpluff, 4, 4, 4), overworld_frame(gObjectEventPic_Jumpluff, 4, 4, 5), }; -const struct SpriteFrameImage gObjectEventPicTable_Aipom[] = { +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), @@ -3510,7 +3510,7 @@ const struct SpriteFrameImage gObjectEventPicTable_Aipom[] = { overworld_frame(gObjectEventPic_Aipom, 4, 4, 4), overworld_frame(gObjectEventPic_Aipom, 4, 4, 5), }; -const struct SpriteFrameImage gObjectEventPicTable_Sunkern[] = { +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), @@ -3518,7 +3518,7 @@ const struct SpriteFrameImage gObjectEventPicTable_Sunkern[] = { overworld_frame(gObjectEventPic_Sunkern, 4, 4, 4), overworld_frame(gObjectEventPic_Sunkern, 4, 4, 5), }; -const struct SpriteFrameImage gObjectEventPicTable_Sunflora[] = { +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), @@ -3526,7 +3526,7 @@ const struct SpriteFrameImage gObjectEventPicTable_Sunflora[] = { overworld_frame(gObjectEventPic_Sunflora, 4, 4, 4), overworld_frame(gObjectEventPic_Sunflora, 4, 4, 5), }; -const struct SpriteFrameImage gObjectEventPicTable_Yanma[] = { +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), @@ -3534,7 +3534,7 @@ const struct SpriteFrameImage gObjectEventPicTable_Yanma[] = { overworld_frame(gObjectEventPic_Yanma, 4, 4, 4), overworld_frame(gObjectEventPic_Yanma, 4, 4, 5), }; -const struct SpriteFrameImage gObjectEventPicTable_Wooper[] = { +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), @@ -3542,7 +3542,7 @@ const struct SpriteFrameImage gObjectEventPicTable_Wooper[] = { overworld_frame(gObjectEventPic_Wooper, 4, 4, 4), overworld_frame(gObjectEventPic_Wooper, 4, 4, 5), }; -const struct SpriteFrameImage gObjectEventPicTable_Quagsire[] = { +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), @@ -3550,7 +3550,7 @@ const struct SpriteFrameImage gObjectEventPicTable_Quagsire[] = { overworld_frame(gObjectEventPic_Quagsire, 4, 4, 4), overworld_frame(gObjectEventPic_Quagsire, 4, 4, 5), }; -const struct SpriteFrameImage gObjectEventPicTable_Espeon[] = { +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), @@ -3558,7 +3558,7 @@ const struct SpriteFrameImage gObjectEventPicTable_Espeon[] = { overworld_frame(gObjectEventPic_Espeon, 4, 4, 4), overworld_frame(gObjectEventPic_Espeon, 4, 4, 5), }; -const struct SpriteFrameImage gObjectEventPicTable_Umbreon[] = { +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), @@ -3566,7 +3566,7 @@ const struct SpriteFrameImage gObjectEventPicTable_Umbreon[] = { overworld_frame(gObjectEventPic_Umbreon, 4, 4, 4), overworld_frame(gObjectEventPic_Umbreon, 4, 4, 5), }; -const struct SpriteFrameImage gObjectEventPicTable_Murkrow[] = { +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), @@ -3574,7 +3574,7 @@ const struct SpriteFrameImage gObjectEventPicTable_Murkrow[] = { overworld_frame(gObjectEventPic_Murkrow, 4, 4, 4), overworld_frame(gObjectEventPic_Murkrow, 4, 4, 5), }; -const struct SpriteFrameImage gObjectEventPicTable_Slowking[] = { +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), @@ -3582,7 +3582,7 @@ const struct SpriteFrameImage gObjectEventPicTable_Slowking[] = { overworld_frame(gObjectEventPic_Slowking, 4, 4, 4), overworld_frame(gObjectEventPic_Slowking, 4, 4, 5), }; -const struct SpriteFrameImage gObjectEventPicTable_Misdreavus[] = { +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), @@ -3590,7 +3590,7 @@ const struct SpriteFrameImage gObjectEventPicTable_Misdreavus[] = { overworld_frame(gObjectEventPic_Misdreavus, 4, 4, 4), overworld_frame(gObjectEventPic_Misdreavus, 4, 4, 5), }; -const struct SpriteFrameImage gObjectEventPicTable_Unown_A[] = { +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), @@ -3598,7 +3598,7 @@ const struct SpriteFrameImage gObjectEventPicTable_Unown_A[] = { overworld_frame(gObjectEventPic_Unown_A, 4, 4, 4), overworld_frame(gObjectEventPic_Unown_A, 4, 4, 5), }; -const struct SpriteFrameImage gObjectEventPicTable_Unown_B[] = { +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), @@ -3606,7 +3606,7 @@ const struct SpriteFrameImage gObjectEventPicTable_Unown_B[] = { overworld_frame(gObjectEventPic_Unown_B, 4, 4, 4), overworld_frame(gObjectEventPic_Unown_B, 4, 4, 5), }; -const struct SpriteFrameImage gObjectEventPicTable_Unown_C[] = { +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), @@ -3614,7 +3614,7 @@ const struct SpriteFrameImage gObjectEventPicTable_Unown_C[] = { overworld_frame(gObjectEventPic_Unown_C, 4, 4, 4), overworld_frame(gObjectEventPic_Unown_C, 4, 4, 5), }; -const struct SpriteFrameImage gObjectEventPicTable_Unown_D[] = { +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), @@ -3622,7 +3622,7 @@ const struct SpriteFrameImage gObjectEventPicTable_Unown_D[] = { overworld_frame(gObjectEventPic_Unown_D, 4, 4, 4), overworld_frame(gObjectEventPic_Unown_D, 4, 4, 5), }; -const struct SpriteFrameImage gObjectEventPicTable_Unown_E[] = { +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), @@ -3630,7 +3630,7 @@ const struct SpriteFrameImage gObjectEventPicTable_Unown_E[] = { overworld_frame(gObjectEventPic_Unown_E, 4, 4, 4), overworld_frame(gObjectEventPic_Unown_E, 4, 4, 5), }; -const struct SpriteFrameImage gObjectEventPicTable_Unown_F[] = { +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), @@ -3638,7 +3638,7 @@ const struct SpriteFrameImage gObjectEventPicTable_Unown_F[] = { overworld_frame(gObjectEventPic_Unown_F, 4, 4, 4), overworld_frame(gObjectEventPic_Unown_F, 4, 4, 5), }; -const struct SpriteFrameImage gObjectEventPicTable_Unown_G[] = { +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), @@ -3646,7 +3646,7 @@ const struct SpriteFrameImage gObjectEventPicTable_Unown_G[] = { overworld_frame(gObjectEventPic_Unown_G, 4, 4, 4), overworld_frame(gObjectEventPic_Unown_G, 4, 4, 5), }; -const struct SpriteFrameImage gObjectEventPicTable_Unown_H[] = { +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), @@ -3654,7 +3654,7 @@ const struct SpriteFrameImage gObjectEventPicTable_Unown_H[] = { overworld_frame(gObjectEventPic_Unown_H, 4, 4, 4), overworld_frame(gObjectEventPic_Unown_H, 4, 4, 5), }; -const struct SpriteFrameImage gObjectEventPicTable_Unown_I[] = { +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), @@ -3662,7 +3662,7 @@ const struct SpriteFrameImage gObjectEventPicTable_Unown_I[] = { overworld_frame(gObjectEventPic_Unown_I, 4, 4, 4), overworld_frame(gObjectEventPic_Unown_I, 4, 4, 5), }; -const struct SpriteFrameImage gObjectEventPicTable_Unown_J[] = { +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), @@ -3670,7 +3670,7 @@ const struct SpriteFrameImage gObjectEventPicTable_Unown_J[] = { overworld_frame(gObjectEventPic_Unown_J, 4, 4, 4), overworld_frame(gObjectEventPic_Unown_J, 4, 4, 5), }; -const struct SpriteFrameImage gObjectEventPicTable_Unown_K[] = { +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), @@ -3678,7 +3678,7 @@ const struct SpriteFrameImage gObjectEventPicTable_Unown_K[] = { overworld_frame(gObjectEventPic_Unown_K, 4, 4, 4), overworld_frame(gObjectEventPic_Unown_K, 4, 4, 5), }; -const struct SpriteFrameImage gObjectEventPicTable_Unown_L[] = { +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), @@ -3686,7 +3686,7 @@ const struct SpriteFrameImage gObjectEventPicTable_Unown_L[] = { overworld_frame(gObjectEventPic_Unown_L, 4, 4, 4), overworld_frame(gObjectEventPic_Unown_L, 4, 4, 5), }; -const struct SpriteFrameImage gObjectEventPicTable_Unown_M[] = { +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), @@ -3694,7 +3694,7 @@ const struct SpriteFrameImage gObjectEventPicTable_Unown_M[] = { overworld_frame(gObjectEventPic_Unown_M, 4, 4, 4), overworld_frame(gObjectEventPic_Unown_M, 4, 4, 5), }; -const struct SpriteFrameImage gObjectEventPicTable_Unown_N[] = { +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), @@ -3702,7 +3702,7 @@ const struct SpriteFrameImage gObjectEventPicTable_Unown_N[] = { overworld_frame(gObjectEventPic_Unown_N, 4, 4, 4), overworld_frame(gObjectEventPic_Unown_N, 4, 4, 5), }; -const struct SpriteFrameImage gObjectEventPicTable_Unown_O[] = { +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), @@ -3710,7 +3710,7 @@ const struct SpriteFrameImage gObjectEventPicTable_Unown_O[] = { overworld_frame(gObjectEventPic_Unown_O, 4, 4, 4), overworld_frame(gObjectEventPic_Unown_O, 4, 4, 5), }; -const struct SpriteFrameImage gObjectEventPicTable_Unown_P[] = { +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), @@ -3718,7 +3718,7 @@ const struct SpriteFrameImage gObjectEventPicTable_Unown_P[] = { overworld_frame(gObjectEventPic_Unown_P, 4, 4, 4), overworld_frame(gObjectEventPic_Unown_P, 4, 4, 5), }; -const struct SpriteFrameImage gObjectEventPicTable_Unown_Q[] = { +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), @@ -3726,7 +3726,7 @@ const struct SpriteFrameImage gObjectEventPicTable_Unown_Q[] = { overworld_frame(gObjectEventPic_Unown_Q, 4, 4, 4), overworld_frame(gObjectEventPic_Unown_Q, 4, 4, 5), }; -const struct SpriteFrameImage gObjectEventPicTable_Unown_R[] = { +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), @@ -3734,7 +3734,7 @@ const struct SpriteFrameImage gObjectEventPicTable_Unown_R[] = { overworld_frame(gObjectEventPic_Unown_R, 4, 4, 4), overworld_frame(gObjectEventPic_Unown_R, 4, 4, 5), }; -const struct SpriteFrameImage gObjectEventPicTable_Unown_S[] = { +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), @@ -3742,7 +3742,7 @@ const struct SpriteFrameImage gObjectEventPicTable_Unown_S[] = { overworld_frame(gObjectEventPic_Unown_S, 4, 4, 4), overworld_frame(gObjectEventPic_Unown_S, 4, 4, 5), }; -const struct SpriteFrameImage gObjectEventPicTable_Unown_T[] = { +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), @@ -3750,7 +3750,7 @@ const struct SpriteFrameImage gObjectEventPicTable_Unown_T[] = { overworld_frame(gObjectEventPic_Unown_T, 4, 4, 4), overworld_frame(gObjectEventPic_Unown_T, 4, 4, 5), }; -const struct SpriteFrameImage gObjectEventPicTable_Unown_U[] = { +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), @@ -3758,7 +3758,7 @@ const struct SpriteFrameImage gObjectEventPicTable_Unown_U[] = { overworld_frame(gObjectEventPic_Unown_U, 4, 4, 4), overworld_frame(gObjectEventPic_Unown_U, 4, 4, 5), }; -const struct SpriteFrameImage gObjectEventPicTable_Unown_V[] = { +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), @@ -3766,7 +3766,7 @@ const struct SpriteFrameImage gObjectEventPicTable_Unown_V[] = { overworld_frame(gObjectEventPic_Unown_V, 4, 4, 4), overworld_frame(gObjectEventPic_Unown_V, 4, 4, 5), }; -const struct SpriteFrameImage gObjectEventPicTable_Unown_W[] = { +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), @@ -3774,7 +3774,7 @@ const struct SpriteFrameImage gObjectEventPicTable_Unown_W[] = { overworld_frame(gObjectEventPic_Unown_W, 4, 4, 4), overworld_frame(gObjectEventPic_Unown_W, 4, 4, 5), }; -const struct SpriteFrameImage gObjectEventPicTable_Unown_X[] = { +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), @@ -3782,7 +3782,7 @@ const struct SpriteFrameImage gObjectEventPicTable_Unown_X[] = { overworld_frame(gObjectEventPic_Unown_X, 4, 4, 4), overworld_frame(gObjectEventPic_Unown_X, 4, 4, 5), }; -const struct SpriteFrameImage gObjectEventPicTable_Unown_Y[] = { +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), @@ -3790,7 +3790,7 @@ const struct SpriteFrameImage gObjectEventPicTable_Unown_Y[] = { overworld_frame(gObjectEventPic_Unown_Y, 4, 4, 4), overworld_frame(gObjectEventPic_Unown_Y, 4, 4, 5), }; -const struct SpriteFrameImage gObjectEventPicTable_Unown_Z[] = { +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), @@ -3798,7 +3798,7 @@ const struct SpriteFrameImage gObjectEventPicTable_Unown_Z[] = { overworld_frame(gObjectEventPic_Unown_Z, 4, 4, 4), overworld_frame(gObjectEventPic_Unown_Z, 4, 4, 5), }; -const struct SpriteFrameImage gObjectEventPicTable_Unown_Exclamation[] = { +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), @@ -3806,7 +3806,7 @@ const struct SpriteFrameImage gObjectEventPicTable_Unown_Exclamation[] = { overworld_frame(gObjectEventPic_Unown_Exclamation, 4, 4, 4), overworld_frame(gObjectEventPic_Unown_Exclamation, 4, 4, 5), }; -const struct SpriteFrameImage gObjectEventPicTable_Unown_Question[] = { +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), @@ -3814,7 +3814,7 @@ const struct SpriteFrameImage gObjectEventPicTable_Unown_Question[] = { overworld_frame(gObjectEventPic_Unown_Question, 4, 4, 4), overworld_frame(gObjectEventPic_Unown_Question, 4, 4, 5), }; -const struct SpriteFrameImage gObjectEventPicTable_Wobbuffet[] = { +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), @@ -3822,7 +3822,7 @@ const struct SpriteFrameImage gObjectEventPicTable_Wobbuffet[] = { overworld_frame(gObjectEventPic_Wobbuffet, 4, 4, 4), overworld_frame(gObjectEventPic_Wobbuffet, 4, 4, 5), }; -const struct SpriteFrameImage gObjectEventPicTable_Girafarig[] = { +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), @@ -3830,7 +3830,7 @@ const struct SpriteFrameImage gObjectEventPicTable_Girafarig[] = { overworld_frame(gObjectEventPic_Girafarig, 4, 4, 4), overworld_frame(gObjectEventPic_Girafarig, 4, 4, 5), }; -const struct SpriteFrameImage gObjectEventPicTable_Pineco[] = { +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), @@ -3838,7 +3838,7 @@ const struct SpriteFrameImage gObjectEventPicTable_Pineco[] = { overworld_frame(gObjectEventPic_Pineco, 4, 4, 4), overworld_frame(gObjectEventPic_Pineco, 4, 4, 5), }; -const struct SpriteFrameImage gObjectEventPicTable_Forretress[] = { +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), @@ -3846,7 +3846,7 @@ const struct SpriteFrameImage gObjectEventPicTable_Forretress[] = { overworld_frame(gObjectEventPic_Forretress, 4, 4, 4), overworld_frame(gObjectEventPic_Forretress, 4, 4, 5), }; -const struct SpriteFrameImage gObjectEventPicTable_Dunsparce[] = { +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), @@ -3854,7 +3854,7 @@ const struct SpriteFrameImage gObjectEventPicTable_Dunsparce[] = { overworld_frame(gObjectEventPic_Dunsparce, 4, 4, 4), overworld_frame(gObjectEventPic_Dunsparce, 4, 4, 5), }; -const struct SpriteFrameImage gObjectEventPicTable_Gligar[] = { +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), @@ -3862,7 +3862,7 @@ const struct SpriteFrameImage gObjectEventPicTable_Gligar[] = { overworld_frame(gObjectEventPic_Gligar, 4, 4, 4), overworld_frame(gObjectEventPic_Gligar, 4, 4, 5), }; -const struct SpriteFrameImage gObjectEventPicTable_Steelix[] = { +static const struct SpriteFrameImage sPicTable_Steelix[] = { overworld_frame(gObjectEventPic_Steelix, 8, 8, 0), overworld_frame(gObjectEventPic_Steelix, 8, 8, 1), overworld_frame(gObjectEventPic_Steelix, 8, 8, 2), @@ -3870,7 +3870,7 @@ const struct SpriteFrameImage gObjectEventPicTable_Steelix[] = { overworld_frame(gObjectEventPic_Steelix, 8, 8, 4), overworld_frame(gObjectEventPic_Steelix, 8, 8, 5), }; -const struct SpriteFrameImage gObjectEventPicTable_Snubbull[] = { +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), @@ -3878,7 +3878,7 @@ const struct SpriteFrameImage gObjectEventPicTable_Snubbull[] = { overworld_frame(gObjectEventPic_Snubbull, 4, 4, 4), overworld_frame(gObjectEventPic_Snubbull, 4, 4, 5), }; -const struct SpriteFrameImage gObjectEventPicTable_Granbull[] = { +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), @@ -3886,7 +3886,7 @@ const struct SpriteFrameImage gObjectEventPicTable_Granbull[] = { overworld_frame(gObjectEventPic_Granbull, 4, 4, 4), overworld_frame(gObjectEventPic_Granbull, 4, 4, 5), }; -const struct SpriteFrameImage gObjectEventPicTable_Qwilfish[] = { +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), @@ -3894,7 +3894,7 @@ const struct SpriteFrameImage gObjectEventPicTable_Qwilfish[] = { overworld_frame(gObjectEventPic_Qwilfish, 4, 4, 4), overworld_frame(gObjectEventPic_Qwilfish, 4, 4, 5), }; -const struct SpriteFrameImage gObjectEventPicTable_Scizor[] = { +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), @@ -3902,7 +3902,7 @@ const struct SpriteFrameImage gObjectEventPicTable_Scizor[] = { overworld_frame(gObjectEventPic_Scizor, 4, 4, 4), overworld_frame(gObjectEventPic_Scizor, 4, 4, 5), }; -const struct SpriteFrameImage gObjectEventPicTable_Shuckle[] = { +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), @@ -3910,7 +3910,7 @@ const struct SpriteFrameImage gObjectEventPicTable_Shuckle[] = { overworld_frame(gObjectEventPic_Shuckle, 4, 4, 4), overworld_frame(gObjectEventPic_Shuckle, 4, 4, 5), }; -const struct SpriteFrameImage gObjectEventPicTable_Heracross[] = { +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), @@ -3918,7 +3918,7 @@ const struct SpriteFrameImage gObjectEventPicTable_Heracross[] = { overworld_frame(gObjectEventPic_Heracross, 4, 4, 4), overworld_frame(gObjectEventPic_Heracross, 4, 4, 5), }; -const struct SpriteFrameImage gObjectEventPicTable_Sneasel[] = { +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), @@ -3926,7 +3926,7 @@ const struct SpriteFrameImage gObjectEventPicTable_Sneasel[] = { overworld_frame(gObjectEventPic_Sneasel, 4, 4, 4), overworld_frame(gObjectEventPic_Sneasel, 4, 4, 5), }; -const struct SpriteFrameImage gObjectEventPicTable_Teddiursa[] = { +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), @@ -3934,7 +3934,7 @@ const struct SpriteFrameImage gObjectEventPicTable_Teddiursa[] = { overworld_frame(gObjectEventPic_Teddiursa, 4, 4, 4), overworld_frame(gObjectEventPic_Teddiursa, 4, 4, 5), }; -const struct SpriteFrameImage gObjectEventPicTable_Ursaring[] = { +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), @@ -3942,7 +3942,7 @@ const struct SpriteFrameImage gObjectEventPicTable_Ursaring[] = { overworld_frame(gObjectEventPic_Ursaring, 4, 4, 4), overworld_frame(gObjectEventPic_Ursaring, 4, 4, 5), }; -const struct SpriteFrameImage gObjectEventPicTable_Slugma[] = { +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), @@ -3950,7 +3950,7 @@ const struct SpriteFrameImage gObjectEventPicTable_Slugma[] = { overworld_frame(gObjectEventPic_Slugma, 4, 4, 4), overworld_frame(gObjectEventPic_Slugma, 4, 4, 5), }; -const struct SpriteFrameImage gObjectEventPicTable_Magcargo[] = { +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), @@ -3958,7 +3958,7 @@ const struct SpriteFrameImage gObjectEventPicTable_Magcargo[] = { overworld_frame(gObjectEventPic_Magcargo, 4, 4, 4), overworld_frame(gObjectEventPic_Magcargo, 4, 4, 5), }; -const struct SpriteFrameImage gObjectEventPicTable_Swinub[] = { +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), @@ -3966,7 +3966,7 @@ const struct SpriteFrameImage gObjectEventPicTable_Swinub[] = { overworld_frame(gObjectEventPic_Swinub, 4, 4, 4), overworld_frame(gObjectEventPic_Swinub, 4, 4, 5), }; -const struct SpriteFrameImage gObjectEventPicTable_Piloswine[] = { +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), @@ -3974,7 +3974,7 @@ const struct SpriteFrameImage gObjectEventPicTable_Piloswine[] = { overworld_frame(gObjectEventPic_Piloswine, 4, 4, 4), overworld_frame(gObjectEventPic_Piloswine, 4, 4, 5), }; -const struct SpriteFrameImage gObjectEventPicTable_Corsola[] = { +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), @@ -3982,7 +3982,7 @@ const struct SpriteFrameImage gObjectEventPicTable_Corsola[] = { overworld_frame(gObjectEventPic_Corsola, 4, 4, 4), overworld_frame(gObjectEventPic_Corsola, 4, 4, 5), }; -const struct SpriteFrameImage gObjectEventPicTable_Remoraid[] = { +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), @@ -3990,7 +3990,7 @@ const struct SpriteFrameImage gObjectEventPicTable_Remoraid[] = { overworld_frame(gObjectEventPic_Remoraid, 4, 4, 4), overworld_frame(gObjectEventPic_Remoraid, 4, 4, 5), }; -const struct SpriteFrameImage gObjectEventPicTable_Octillery[] = { +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), @@ -3998,7 +3998,7 @@ const struct SpriteFrameImage gObjectEventPicTable_Octillery[] = { overworld_frame(gObjectEventPic_Octillery, 4, 4, 4), overworld_frame(gObjectEventPic_Octillery, 4, 4, 5), }; -const struct SpriteFrameImage gObjectEventPicTable_Delibird[] = { +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), @@ -4006,7 +4006,7 @@ const struct SpriteFrameImage gObjectEventPicTable_Delibird[] = { overworld_frame(gObjectEventPic_Delibird, 4, 4, 4), overworld_frame(gObjectEventPic_Delibird, 4, 4, 5), }; -const struct SpriteFrameImage gObjectEventPicTable_Mantine[] = { +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), @@ -4014,7 +4014,7 @@ const struct SpriteFrameImage gObjectEventPicTable_Mantine[] = { overworld_frame(gObjectEventPic_Mantine, 4, 4, 4), overworld_frame(gObjectEventPic_Mantine, 4, 4, 5), }; -const struct SpriteFrameImage gObjectEventPicTable_Skarmory[] = { +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), @@ -4022,7 +4022,7 @@ const struct SpriteFrameImage gObjectEventPicTable_Skarmory[] = { overworld_frame(gObjectEventPic_Skarmory, 4, 4, 4), overworld_frame(gObjectEventPic_Skarmory, 4, 4, 5), }; -const struct SpriteFrameImage gObjectEventPicTable_Houndour[] = { +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), @@ -4030,7 +4030,7 @@ const struct SpriteFrameImage gObjectEventPicTable_Houndour[] = { overworld_frame(gObjectEventPic_Houndour, 4, 4, 4), overworld_frame(gObjectEventPic_Houndour, 4, 4, 5), }; -const struct SpriteFrameImage gObjectEventPicTable_Houndoom[] = { +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), @@ -4038,7 +4038,7 @@ const struct SpriteFrameImage gObjectEventPicTable_Houndoom[] = { overworld_frame(gObjectEventPic_Houndoom, 4, 4, 4), overworld_frame(gObjectEventPic_Houndoom, 4, 4, 5), }; -const struct SpriteFrameImage gObjectEventPicTable_Kingdra[] = { +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), @@ -4046,7 +4046,7 @@ const struct SpriteFrameImage gObjectEventPicTable_Kingdra[] = { overworld_frame(gObjectEventPic_Kingdra, 4, 4, 4), overworld_frame(gObjectEventPic_Kingdra, 4, 4, 5), }; -const struct SpriteFrameImage gObjectEventPicTable_Phanpy[] = { +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), @@ -4054,7 +4054,7 @@ const struct SpriteFrameImage gObjectEventPicTable_Phanpy[] = { overworld_frame(gObjectEventPic_Phanpy, 4, 4, 4), overworld_frame(gObjectEventPic_Phanpy, 4, 4, 5), }; -const struct SpriteFrameImage gObjectEventPicTable_Donphan[] = { +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), @@ -4062,7 +4062,7 @@ const struct SpriteFrameImage gObjectEventPicTable_Donphan[] = { overworld_frame(gObjectEventPic_Donphan, 4, 4, 4), overworld_frame(gObjectEventPic_Donphan, 4, 4, 5), }; -const struct SpriteFrameImage gObjectEventPicTable_Porygon2[] = { +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), @@ -4070,7 +4070,7 @@ const struct SpriteFrameImage gObjectEventPicTable_Porygon2[] = { overworld_frame(gObjectEventPic_Porygon2, 4, 4, 4), overworld_frame(gObjectEventPic_Porygon2, 4, 4, 5), }; -const struct SpriteFrameImage gObjectEventPicTable_Stantler[] = { +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), @@ -4078,7 +4078,7 @@ const struct SpriteFrameImage gObjectEventPicTable_Stantler[] = { overworld_frame(gObjectEventPic_Stantler, 4, 4, 4), overworld_frame(gObjectEventPic_Stantler, 4, 4, 5), }; -const struct SpriteFrameImage gObjectEventPicTable_Smeargle[] = { +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), @@ -4086,7 +4086,7 @@ const struct SpriteFrameImage gObjectEventPicTable_Smeargle[] = { overworld_frame(gObjectEventPic_Smeargle, 4, 4, 4), overworld_frame(gObjectEventPic_Smeargle, 4, 4, 5), }; -const struct SpriteFrameImage gObjectEventPicTable_Tyrogue[] = { +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), @@ -4094,7 +4094,7 @@ const struct SpriteFrameImage gObjectEventPicTable_Tyrogue[] = { overworld_frame(gObjectEventPic_Tyrogue, 4, 4, 4), overworld_frame(gObjectEventPic_Tyrogue, 4, 4, 5), }; -const struct SpriteFrameImage gObjectEventPicTable_Hitmontop[] = { +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), @@ -4102,7 +4102,7 @@ const struct SpriteFrameImage gObjectEventPicTable_Hitmontop[] = { overworld_frame(gObjectEventPic_Hitmontop, 4, 4, 4), overworld_frame(gObjectEventPic_Hitmontop, 4, 4, 5), }; -const struct SpriteFrameImage gObjectEventPicTable_Smoochum[] = { +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), @@ -4110,7 +4110,7 @@ const struct SpriteFrameImage gObjectEventPicTable_Smoochum[] = { overworld_frame(gObjectEventPic_Smoochum, 4, 4, 4), overworld_frame(gObjectEventPic_Smoochum, 4, 4, 5), }; -const struct SpriteFrameImage gObjectEventPicTable_Elekid[] = { +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), @@ -4118,7 +4118,7 @@ const struct SpriteFrameImage gObjectEventPicTable_Elekid[] = { overworld_frame(gObjectEventPic_Elekid, 4, 4, 4), overworld_frame(gObjectEventPic_Elekid, 4, 4, 5), }; -const struct SpriteFrameImage gObjectEventPicTable_Magby[] = { +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), @@ -4126,7 +4126,7 @@ const struct SpriteFrameImage gObjectEventPicTable_Magby[] = { overworld_frame(gObjectEventPic_Magby, 4, 4, 4), overworld_frame(gObjectEventPic_Magby, 4, 4, 5), }; -const struct SpriteFrameImage gObjectEventPicTable_Miltank[] = { +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), @@ -4134,7 +4134,7 @@ const struct SpriteFrameImage gObjectEventPicTable_Miltank[] = { overworld_frame(gObjectEventPic_Miltank, 4, 4, 4), overworld_frame(gObjectEventPic_Miltank, 4, 4, 5), }; -const struct SpriteFrameImage gObjectEventPicTable_Blissey[] = { +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), @@ -4142,7 +4142,7 @@ const struct SpriteFrameImage gObjectEventPicTable_Blissey[] = { overworld_frame(gObjectEventPic_Blissey, 4, 4, 4), overworld_frame(gObjectEventPic_Blissey, 4, 4, 5), }; -const struct SpriteFrameImage gObjectEventPicTable_Raikou[] = { +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), @@ -4150,7 +4150,7 @@ const struct SpriteFrameImage gObjectEventPicTable_Raikou[] = { overworld_frame(gObjectEventPic_Raikou, 4, 4, 4), overworld_frame(gObjectEventPic_Raikou, 4, 4, 5), }; -const struct SpriteFrameImage gObjectEventPicTable_Entei[] = { +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), @@ -4158,7 +4158,7 @@ const struct SpriteFrameImage gObjectEventPicTable_Entei[] = { overworld_frame(gObjectEventPic_Entei, 4, 4, 4), overworld_frame(gObjectEventPic_Entei, 4, 4, 5), }; -const struct SpriteFrameImage gObjectEventPicTable_Suicune[] = { +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), @@ -4166,7 +4166,7 @@ const struct SpriteFrameImage gObjectEventPicTable_Suicune[] = { overworld_frame(gObjectEventPic_Suicune, 4, 4, 4), overworld_frame(gObjectEventPic_Suicune, 4, 4, 5), }; -const struct SpriteFrameImage gObjectEventPicTable_Larvitar[] = { +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), @@ -4174,7 +4174,7 @@ const struct SpriteFrameImage gObjectEventPicTable_Larvitar[] = { overworld_frame(gObjectEventPic_Larvitar, 4, 4, 4), overworld_frame(gObjectEventPic_Larvitar, 4, 4, 5), }; -const struct SpriteFrameImage gObjectEventPicTable_Pupitar[] = { +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), @@ -4182,7 +4182,7 @@ const struct SpriteFrameImage gObjectEventPicTable_Pupitar[] = { overworld_frame(gObjectEventPic_Pupitar, 4, 4, 4), overworld_frame(gObjectEventPic_Pupitar, 4, 4, 5), }; -const struct SpriteFrameImage gObjectEventPicTable_Tyranitar[] = { +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), @@ -4190,7 +4190,7 @@ const struct SpriteFrameImage gObjectEventPicTable_Tyranitar[] = { overworld_frame(gObjectEventPic_Tyranitar, 4, 4, 4), overworld_frame(gObjectEventPic_Tyranitar, 4, 4, 5), }; -const struct SpriteFrameImage gObjectEventPicTable_Lugia[] = { +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), @@ -4198,7 +4198,7 @@ const struct SpriteFrameImage gObjectEventPicTable_Lugia[] = { overworld_frame(gObjectEventPic_Lugia, 8, 8, 4), overworld_frame(gObjectEventPic_Lugia, 8, 8, 5), }; -const struct SpriteFrameImage gObjectEventPicTable_Ho_oh[] = { +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), @@ -4206,7 +4206,7 @@ const struct SpriteFrameImage gObjectEventPicTable_Ho_oh[] = { overworld_frame(gObjectEventPic_Ho_oh, 8, 8, 4), overworld_frame(gObjectEventPic_Ho_oh, 8, 8, 5), }; -const struct SpriteFrameImage gObjectEventPicTable_Celebi[] = { +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), @@ -4214,7 +4214,7 @@ const struct SpriteFrameImage gObjectEventPicTable_Celebi[] = { overworld_frame(gObjectEventPic_Celebi, 4, 4, 4), overworld_frame(gObjectEventPic_Celebi, 4, 4, 5), }; -const struct SpriteFrameImage gObjectEventPicTable_Treecko[] = { +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), @@ -4222,7 +4222,7 @@ const struct SpriteFrameImage gObjectEventPicTable_Treecko[] = { overworld_frame(gObjectEventPic_Treecko, 4, 4, 4), overworld_frame(gObjectEventPic_Treecko, 4, 4, 5), }; -const struct SpriteFrameImage gObjectEventPicTable_Grovyle[] = { +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), @@ -4230,7 +4230,7 @@ const struct SpriteFrameImage gObjectEventPicTable_Grovyle[] = { overworld_frame(gObjectEventPic_Grovyle, 4, 4, 4), overworld_frame(gObjectEventPic_Grovyle, 4, 4, 5), }; -const struct SpriteFrameImage gObjectEventPicTable_Sceptile[] = { +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), @@ -4238,7 +4238,7 @@ const struct SpriteFrameImage gObjectEventPicTable_Sceptile[] = { overworld_frame(gObjectEventPic_Sceptile, 4, 4, 4), overworld_frame(gObjectEventPic_Sceptile, 4, 4, 5), }; -const struct SpriteFrameImage gObjectEventPicTable_Torchic[] = { +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), @@ -4246,7 +4246,7 @@ const struct SpriteFrameImage gObjectEventPicTable_Torchic[] = { overworld_frame(gObjectEventPic_Torchic, 4, 4, 4), overworld_frame(gObjectEventPic_Torchic, 4, 4, 5), }; -const struct SpriteFrameImage gObjectEventPicTable_Combusken[] = { +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), @@ -4254,7 +4254,7 @@ const struct SpriteFrameImage gObjectEventPicTable_Combusken[] = { overworld_frame(gObjectEventPic_Combusken, 4, 4, 4), overworld_frame(gObjectEventPic_Combusken, 4, 4, 5), }; -const struct SpriteFrameImage gObjectEventPicTable_Blaziken[] = { +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), @@ -4262,7 +4262,7 @@ const struct SpriteFrameImage gObjectEventPicTable_Blaziken[] = { overworld_frame(gObjectEventPic_Blaziken, 4, 4, 4), overworld_frame(gObjectEventPic_Blaziken, 4, 4, 5), }; -const struct SpriteFrameImage gObjectEventPicTable_Mudkip[] = { +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), @@ -4270,7 +4270,7 @@ const struct SpriteFrameImage gObjectEventPicTable_Mudkip[] = { overworld_frame(gObjectEventPic_Mudkip, 4, 4, 4), overworld_frame(gObjectEventPic_Mudkip, 4, 4, 5), }; -const struct SpriteFrameImage gObjectEventPicTable_Marshtomp[] = { +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), @@ -4278,7 +4278,7 @@ const struct SpriteFrameImage gObjectEventPicTable_Marshtomp[] = { overworld_frame(gObjectEventPic_Marshtomp, 4, 4, 4), overworld_frame(gObjectEventPic_Marshtomp, 4, 4, 5), }; -const struct SpriteFrameImage gObjectEventPicTable_Swampert[] = { +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), @@ -4286,7 +4286,7 @@ const struct SpriteFrameImage gObjectEventPicTable_Swampert[] = { overworld_frame(gObjectEventPic_Swampert, 4, 4, 4), overworld_frame(gObjectEventPic_Swampert, 4, 4, 5), }; -const struct SpriteFrameImage gObjectEventPicTable_Poochyena[] = { +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), @@ -4294,7 +4294,7 @@ const struct SpriteFrameImage gObjectEventPicTable_Poochyena[] = { overworld_frame(gObjectEventPic_Poochyena, 4, 4, 4), overworld_frame(gObjectEventPic_Poochyena, 4, 4, 5), }; -const struct SpriteFrameImage gObjectEventPicTable_Mightyena[] = { +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), @@ -4302,7 +4302,7 @@ const struct SpriteFrameImage gObjectEventPicTable_Mightyena[] = { overworld_frame(gObjectEventPic_Mightyena, 4, 4, 4), overworld_frame(gObjectEventPic_Mightyena, 4, 4, 5), }; -const struct SpriteFrameImage gObjectEventPicTable_Zigzagoon[] = { +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), @@ -4310,7 +4310,7 @@ const struct SpriteFrameImage gObjectEventPicTable_Zigzagoon[] = { overworld_frame(gObjectEventPic_Zigzagoon, 4, 4, 4), overworld_frame(gObjectEventPic_Zigzagoon, 4, 4, 5), }; -const struct SpriteFrameImage gObjectEventPicTable_Linoone[] = { +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), @@ -4318,7 +4318,7 @@ const struct SpriteFrameImage gObjectEventPicTable_Linoone[] = { overworld_frame(gObjectEventPic_Linoone, 4, 4, 4), overworld_frame(gObjectEventPic_Linoone, 4, 4, 5), }; -const struct SpriteFrameImage gObjectEventPicTable_Wurmple[] = { +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), @@ -4326,7 +4326,7 @@ const struct SpriteFrameImage gObjectEventPicTable_Wurmple[] = { overworld_frame(gObjectEventPic_Wurmple, 4, 4, 4), overworld_frame(gObjectEventPic_Wurmple, 4, 4, 5), }; -const struct SpriteFrameImage gObjectEventPicTable_Silcoon[] = { +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), @@ -4334,7 +4334,7 @@ const struct SpriteFrameImage gObjectEventPicTable_Silcoon[] = { overworld_frame(gObjectEventPic_Silcoon, 4, 4, 4), overworld_frame(gObjectEventPic_Silcoon, 4, 4, 5), }; -const struct SpriteFrameImage gObjectEventPicTable_Beautifly[] = { +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), @@ -4342,7 +4342,7 @@ const struct SpriteFrameImage gObjectEventPicTable_Beautifly[] = { overworld_frame(gObjectEventPic_Beautifly, 4, 4, 4), overworld_frame(gObjectEventPic_Beautifly, 4, 4, 5), }; -const struct SpriteFrameImage gObjectEventPicTable_Cascoon[] = { +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), @@ -4350,7 +4350,7 @@ const struct SpriteFrameImage gObjectEventPicTable_Cascoon[] = { overworld_frame(gObjectEventPic_Cascoon, 4, 4, 4), overworld_frame(gObjectEventPic_Cascoon, 4, 4, 5), }; -const struct SpriteFrameImage gObjectEventPicTable_Dustox[] = { +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), @@ -4358,7 +4358,7 @@ const struct SpriteFrameImage gObjectEventPicTable_Dustox[] = { overworld_frame(gObjectEventPic_Dustox, 4, 4, 4), overworld_frame(gObjectEventPic_Dustox, 4, 4, 5), }; -const struct SpriteFrameImage gObjectEventPicTable_Lotad[] = { +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), @@ -4366,7 +4366,7 @@ const struct SpriteFrameImage gObjectEventPicTable_Lotad[] = { overworld_frame(gObjectEventPic_Lotad, 4, 4, 4), overworld_frame(gObjectEventPic_Lotad, 4, 4, 5), }; -const struct SpriteFrameImage gObjectEventPicTable_Lombre[] = { +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), @@ -4374,7 +4374,7 @@ const struct SpriteFrameImage gObjectEventPicTable_Lombre[] = { overworld_frame(gObjectEventPic_Lombre, 4, 4, 4), overworld_frame(gObjectEventPic_Lombre, 4, 4, 5), }; -const struct SpriteFrameImage gObjectEventPicTable_Ludicolo[] = { +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), @@ -4382,7 +4382,7 @@ const struct SpriteFrameImage gObjectEventPicTable_Ludicolo[] = { overworld_frame(gObjectEventPic_Ludicolo, 4, 4, 4), overworld_frame(gObjectEventPic_Ludicolo, 4, 4, 5), }; -const struct SpriteFrameImage gObjectEventPicTable_Seedot[] = { +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), @@ -4390,7 +4390,7 @@ const struct SpriteFrameImage gObjectEventPicTable_Seedot[] = { overworld_frame(gObjectEventPic_Seedot, 4, 4, 4), overworld_frame(gObjectEventPic_Seedot, 4, 4, 5), }; -const struct SpriteFrameImage gObjectEventPicTable_Nuzleaf[] = { +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), @@ -4398,7 +4398,7 @@ const struct SpriteFrameImage gObjectEventPicTable_Nuzleaf[] = { overworld_frame(gObjectEventPic_Nuzleaf, 4, 4, 4), overworld_frame(gObjectEventPic_Nuzleaf, 4, 4, 5), }; -const struct SpriteFrameImage gObjectEventPicTable_Shiftry[] = { +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), @@ -4406,7 +4406,7 @@ const struct SpriteFrameImage gObjectEventPicTable_Shiftry[] = { overworld_frame(gObjectEventPic_Shiftry, 4, 4, 4), overworld_frame(gObjectEventPic_Shiftry, 4, 4, 5), }; -const struct SpriteFrameImage gObjectEventPicTable_Taillow[] = { +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), @@ -4414,7 +4414,7 @@ const struct SpriteFrameImage gObjectEventPicTable_Taillow[] = { overworld_frame(gObjectEventPic_Taillow, 4, 4, 4), overworld_frame(gObjectEventPic_Taillow, 4, 4, 5), }; -const struct SpriteFrameImage gObjectEventPicTable_Swellow[] = { +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), @@ -4422,7 +4422,7 @@ const struct SpriteFrameImage gObjectEventPicTable_Swellow[] = { overworld_frame(gObjectEventPic_Swellow, 4, 4, 4), overworld_frame(gObjectEventPic_Swellow, 4, 4, 5), }; -const struct SpriteFrameImage gObjectEventPicTable_Wingull[] = { +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), @@ -4430,7 +4430,7 @@ const struct SpriteFrameImage gObjectEventPicTable_Wingull[] = { overworld_frame(gObjectEventPic_Wingull, 4, 4, 4), overworld_frame(gObjectEventPic_Wingull, 4, 4, 5), }; -const struct SpriteFrameImage gObjectEventPicTable_Pelipper[] = { +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), @@ -4438,7 +4438,7 @@ const struct SpriteFrameImage gObjectEventPicTable_Pelipper[] = { overworld_frame(gObjectEventPic_Pelipper, 4, 4, 4), overworld_frame(gObjectEventPic_Pelipper, 4, 4, 5), }; -const struct SpriteFrameImage gObjectEventPicTable_Ralts[] = { +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), @@ -4446,7 +4446,7 @@ const struct SpriteFrameImage gObjectEventPicTable_Ralts[] = { overworld_frame(gObjectEventPic_Ralts, 4, 4, 4), overworld_frame(gObjectEventPic_Ralts, 4, 4, 5), }; -const struct SpriteFrameImage gObjectEventPicTable_Kirlia[] = { +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), @@ -4454,7 +4454,7 @@ const struct SpriteFrameImage gObjectEventPicTable_Kirlia[] = { overworld_frame(gObjectEventPic_Kirlia, 4, 4, 4), overworld_frame(gObjectEventPic_Kirlia, 4, 4, 5), }; -const struct SpriteFrameImage gObjectEventPicTable_Gardevoir[] = { +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), @@ -4462,7 +4462,7 @@ const struct SpriteFrameImage gObjectEventPicTable_Gardevoir[] = { overworld_frame(gObjectEventPic_Gardevoir, 4, 4, 4), overworld_frame(gObjectEventPic_Gardevoir, 4, 4, 5), }; -const struct SpriteFrameImage gObjectEventPicTable_Surskit[] = { +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), @@ -4470,7 +4470,7 @@ const struct SpriteFrameImage gObjectEventPicTable_Surskit[] = { overworld_frame(gObjectEventPic_Surskit, 4, 4, 4), overworld_frame(gObjectEventPic_Surskit, 4, 4, 5), }; -const struct SpriteFrameImage gObjectEventPicTable_Masquerain[] = { +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), @@ -4478,7 +4478,7 @@ const struct SpriteFrameImage gObjectEventPicTable_Masquerain[] = { overworld_frame(gObjectEventPic_Masquerain, 4, 4, 4), overworld_frame(gObjectEventPic_Masquerain, 4, 4, 5), }; -const struct SpriteFrameImage gObjectEventPicTable_Shroomish[] = { +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), @@ -4486,7 +4486,7 @@ const struct SpriteFrameImage gObjectEventPicTable_Shroomish[] = { overworld_frame(gObjectEventPic_Shroomish, 4, 4, 4), overworld_frame(gObjectEventPic_Shroomish, 4, 4, 5), }; -const struct SpriteFrameImage gObjectEventPicTable_Breloom[] = { +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), @@ -4494,7 +4494,7 @@ const struct SpriteFrameImage gObjectEventPicTable_Breloom[] = { overworld_frame(gObjectEventPic_Breloom, 4, 4, 4), overworld_frame(gObjectEventPic_Breloom, 4, 4, 5), }; -const struct SpriteFrameImage gObjectEventPicTable_Slakoth[] = { +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), @@ -4502,7 +4502,7 @@ const struct SpriteFrameImage gObjectEventPicTable_Slakoth[] = { overworld_frame(gObjectEventPic_Slakoth, 4, 4, 4), overworld_frame(gObjectEventPic_Slakoth, 4, 4, 5), }; -const struct SpriteFrameImage gObjectEventPicTable_Vigoroth[] = { +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), @@ -4510,7 +4510,7 @@ const struct SpriteFrameImage gObjectEventPicTable_Vigoroth[] = { overworld_frame(gObjectEventPic_Vigoroth, 4, 4, 4), overworld_frame(gObjectEventPic_Vigoroth, 4, 4, 5), }; -const struct SpriteFrameImage gObjectEventPicTable_Slaking[] = { +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), @@ -4518,7 +4518,7 @@ const struct SpriteFrameImage gObjectEventPicTable_Slaking[] = { overworld_frame(gObjectEventPic_Slaking, 4, 4, 4), overworld_frame(gObjectEventPic_Slaking, 4, 4, 5), }; -const struct SpriteFrameImage gObjectEventPicTable_Nincada[] = { +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), @@ -4526,7 +4526,7 @@ const struct SpriteFrameImage gObjectEventPicTable_Nincada[] = { overworld_frame(gObjectEventPic_Nincada, 4, 4, 4), overworld_frame(gObjectEventPic_Nincada, 4, 4, 5), }; -const struct SpriteFrameImage gObjectEventPicTable_Ninjask[] = { +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), @@ -4534,7 +4534,7 @@ const struct SpriteFrameImage gObjectEventPicTable_Ninjask[] = { overworld_frame(gObjectEventPic_Ninjask, 4, 4, 4), overworld_frame(gObjectEventPic_Ninjask, 4, 4, 5), }; -const struct SpriteFrameImage gObjectEventPicTable_Shedinja[] = { +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), @@ -4542,7 +4542,7 @@ const struct SpriteFrameImage gObjectEventPicTable_Shedinja[] = { overworld_frame(gObjectEventPic_Shedinja, 4, 4, 4), overworld_frame(gObjectEventPic_Shedinja, 4, 4, 5), }; -const struct SpriteFrameImage gObjectEventPicTable_Whismur[] = { +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), @@ -4550,7 +4550,7 @@ const struct SpriteFrameImage gObjectEventPicTable_Whismur[] = { overworld_frame(gObjectEventPic_Whismur, 4, 4, 4), overworld_frame(gObjectEventPic_Whismur, 4, 4, 5), }; -const struct SpriteFrameImage gObjectEventPicTable_Loudred[] = { +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), @@ -4558,7 +4558,7 @@ const struct SpriteFrameImage gObjectEventPicTable_Loudred[] = { overworld_frame(gObjectEventPic_Loudred, 4, 4, 4), overworld_frame(gObjectEventPic_Loudred, 4, 4, 5), }; -const struct SpriteFrameImage gObjectEventPicTable_Exploud[] = { +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), @@ -4566,7 +4566,7 @@ const struct SpriteFrameImage gObjectEventPicTable_Exploud[] = { overworld_frame(gObjectEventPic_Exploud, 4, 4, 4), overworld_frame(gObjectEventPic_Exploud, 4, 4, 5), }; -const struct SpriteFrameImage gObjectEventPicTable_Makuhita[] = { +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), @@ -4574,7 +4574,7 @@ const struct SpriteFrameImage gObjectEventPicTable_Makuhita[] = { overworld_frame(gObjectEventPic_Makuhita, 4, 4, 4), overworld_frame(gObjectEventPic_Makuhita, 4, 4, 5), }; -const struct SpriteFrameImage gObjectEventPicTable_Hariyama[] = { +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), @@ -4582,7 +4582,7 @@ const struct SpriteFrameImage gObjectEventPicTable_Hariyama[] = { overworld_frame(gObjectEventPic_Hariyama, 4, 4, 4), overworld_frame(gObjectEventPic_Hariyama, 4, 4, 5), }; -const struct SpriteFrameImage gObjectEventPicTable_Azurill[] = { +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), @@ -4590,7 +4590,7 @@ const struct SpriteFrameImage gObjectEventPicTable_Azurill[] = { overworld_frame(gObjectEventPic_Azurill, 4, 4, 4), overworld_frame(gObjectEventPic_Azurill, 4, 4, 5), }; -const struct SpriteFrameImage gObjectEventPicTable_Nosepass[] = { +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), @@ -4598,7 +4598,7 @@ const struct SpriteFrameImage gObjectEventPicTable_Nosepass[] = { overworld_frame(gObjectEventPic_Nosepass, 4, 4, 4), overworld_frame(gObjectEventPic_Nosepass, 4, 4, 5), }; -const struct SpriteFrameImage gObjectEventPicTable_Skitty[] = { +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), @@ -4606,7 +4606,7 @@ const struct SpriteFrameImage gObjectEventPicTable_Skitty[] = { overworld_frame(gObjectEventPic_Skitty, 4, 4, 4), overworld_frame(gObjectEventPic_Skitty, 4, 4, 5), }; -const struct SpriteFrameImage gObjectEventPicTable_Delcatty[] = { +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), @@ -4614,7 +4614,7 @@ const struct SpriteFrameImage gObjectEventPicTable_Delcatty[] = { overworld_frame(gObjectEventPic_Delcatty, 4, 4, 4), overworld_frame(gObjectEventPic_Delcatty, 4, 4, 5), }; -const struct SpriteFrameImage gObjectEventPicTable_Sableye[] = { +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), @@ -4622,7 +4622,7 @@ const struct SpriteFrameImage gObjectEventPicTable_Sableye[] = { overworld_frame(gObjectEventPic_Sableye, 4, 4, 4), overworld_frame(gObjectEventPic_Sableye, 4, 4, 5), }; -const struct SpriteFrameImage gObjectEventPicTable_Mawile[] = { +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), @@ -4630,7 +4630,7 @@ const struct SpriteFrameImage gObjectEventPicTable_Mawile[] = { overworld_frame(gObjectEventPic_Mawile, 4, 4, 4), overworld_frame(gObjectEventPic_Mawile, 4, 4, 5), }; -const struct SpriteFrameImage gObjectEventPicTable_Aron[] = { +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), @@ -4638,7 +4638,7 @@ const struct SpriteFrameImage gObjectEventPicTable_Aron[] = { overworld_frame(gObjectEventPic_Aron, 4, 4, 4), overworld_frame(gObjectEventPic_Aron, 4, 4, 5), }; -const struct SpriteFrameImage gObjectEventPicTable_Lairon[] = { +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), @@ -4646,7 +4646,7 @@ const struct SpriteFrameImage gObjectEventPicTable_Lairon[] = { overworld_frame(gObjectEventPic_Lairon, 4, 4, 4), overworld_frame(gObjectEventPic_Lairon, 4, 4, 5), }; -const struct SpriteFrameImage gObjectEventPicTable_Aggron[] = { +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), @@ -4654,7 +4654,7 @@ const struct SpriteFrameImage gObjectEventPicTable_Aggron[] = { overworld_frame(gObjectEventPic_Aggron, 4, 4, 4), overworld_frame(gObjectEventPic_Aggron, 4, 4, 5), }; -const struct SpriteFrameImage gObjectEventPicTable_Meditite[] = { +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), @@ -4662,7 +4662,7 @@ const struct SpriteFrameImage gObjectEventPicTable_Meditite[] = { overworld_frame(gObjectEventPic_Meditite, 4, 4, 4), overworld_frame(gObjectEventPic_Meditite, 4, 4, 5), }; -const struct SpriteFrameImage gObjectEventPicTable_Medicham[] = { +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), @@ -4670,7 +4670,7 @@ const struct SpriteFrameImage gObjectEventPicTable_Medicham[] = { overworld_frame(gObjectEventPic_Medicham, 4, 4, 4), overworld_frame(gObjectEventPic_Medicham, 4, 4, 5), }; -const struct SpriteFrameImage gObjectEventPicTable_Electrike[] = { +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), @@ -4678,7 +4678,7 @@ const struct SpriteFrameImage gObjectEventPicTable_Electrike[] = { overworld_frame(gObjectEventPic_Electrike, 4, 4, 4), overworld_frame(gObjectEventPic_Electrike, 4, 4, 5), }; -const struct SpriteFrameImage gObjectEventPicTable_Manectric[] = { +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), @@ -4686,7 +4686,7 @@ const struct SpriteFrameImage gObjectEventPicTable_Manectric[] = { overworld_frame(gObjectEventPic_Manectric, 4, 4, 4), overworld_frame(gObjectEventPic_Manectric, 4, 4, 5), }; -const struct SpriteFrameImage gObjectEventPicTable_Plusle[] = { +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), @@ -4694,7 +4694,7 @@ const struct SpriteFrameImage gObjectEventPicTable_Plusle[] = { overworld_frame(gObjectEventPic_Plusle, 4, 4, 4), overworld_frame(gObjectEventPic_Plusle, 4, 4, 5), }; -const struct SpriteFrameImage gObjectEventPicTable_Minun[] = { +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), @@ -4702,7 +4702,7 @@ const struct SpriteFrameImage gObjectEventPicTable_Minun[] = { overworld_frame(gObjectEventPic_Minun, 4, 4, 4), overworld_frame(gObjectEventPic_Minun, 4, 4, 5), }; -const struct SpriteFrameImage gObjectEventPicTable_Volbeat[] = { +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), @@ -4710,7 +4710,7 @@ const struct SpriteFrameImage gObjectEventPicTable_Volbeat[] = { overworld_frame(gObjectEventPic_Volbeat, 4, 4, 4), overworld_frame(gObjectEventPic_Volbeat, 4, 4, 5), }; -const struct SpriteFrameImage gObjectEventPicTable_Illumise[] = { +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), @@ -4718,7 +4718,7 @@ const struct SpriteFrameImage gObjectEventPicTable_Illumise[] = { overworld_frame(gObjectEventPic_Illumise, 4, 4, 4), overworld_frame(gObjectEventPic_Illumise, 4, 4, 5), }; -const struct SpriteFrameImage gObjectEventPicTable_Roselia[] = { +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), @@ -4726,7 +4726,7 @@ const struct SpriteFrameImage gObjectEventPicTable_Roselia[] = { overworld_frame(gObjectEventPic_Roselia, 4, 4, 4), overworld_frame(gObjectEventPic_Roselia, 4, 4, 5), }; -const struct SpriteFrameImage gObjectEventPicTable_Gulpin[] = { +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), @@ -4734,7 +4734,7 @@ const struct SpriteFrameImage gObjectEventPicTable_Gulpin[] = { overworld_frame(gObjectEventPic_Gulpin, 4, 4, 4), overworld_frame(gObjectEventPic_Gulpin, 4, 4, 5), }; -const struct SpriteFrameImage gObjectEventPicTable_Swalot[] = { +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), @@ -4742,7 +4742,7 @@ const struct SpriteFrameImage gObjectEventPicTable_Swalot[] = { overworld_frame(gObjectEventPic_Swalot, 4, 4, 4), overworld_frame(gObjectEventPic_Swalot, 4, 4, 5), }; -const struct SpriteFrameImage gObjectEventPicTable_Carvanha[] = { +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), @@ -4750,7 +4750,7 @@ const struct SpriteFrameImage gObjectEventPicTable_Carvanha[] = { overworld_frame(gObjectEventPic_Carvanha, 4, 4, 4), overworld_frame(gObjectEventPic_Carvanha, 4, 4, 5), }; -const struct SpriteFrameImage gObjectEventPicTable_Sharpedo[] = { +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), @@ -4758,7 +4758,7 @@ const struct SpriteFrameImage gObjectEventPicTable_Sharpedo[] = { overworld_frame(gObjectEventPic_Sharpedo, 4, 4, 4), overworld_frame(gObjectEventPic_Sharpedo, 4, 4, 5), }; -const struct SpriteFrameImage gObjectEventPicTable_Wailmer[] = { +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), @@ -4766,7 +4766,7 @@ const struct SpriteFrameImage gObjectEventPicTable_Wailmer[] = { overworld_frame(gObjectEventPic_Wailmer, 4, 4, 4), overworld_frame(gObjectEventPic_Wailmer, 4, 4, 5), }; -const struct SpriteFrameImage gObjectEventPicTable_Wailord[] = { +static const struct SpriteFrameImage sPicTable_Wailord[] = { overworld_frame(gObjectEventPic_Wailord, 8, 8, 0), overworld_frame(gObjectEventPic_Wailord, 8, 8, 1), overworld_frame(gObjectEventPic_Wailord, 8, 8, 2), @@ -4774,7 +4774,7 @@ const struct SpriteFrameImage gObjectEventPicTable_Wailord[] = { overworld_frame(gObjectEventPic_Wailord, 8, 8, 4), overworld_frame(gObjectEventPic_Wailord, 8, 8, 5), }; -const struct SpriteFrameImage gObjectEventPicTable_Numel[] = { +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), @@ -4782,7 +4782,7 @@ const struct SpriteFrameImage gObjectEventPicTable_Numel[] = { overworld_frame(gObjectEventPic_Numel, 4, 4, 4), overworld_frame(gObjectEventPic_Numel, 4, 4, 5), }; -const struct SpriteFrameImage gObjectEventPicTable_Camerupt[] = { +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), @@ -4790,7 +4790,7 @@ const struct SpriteFrameImage gObjectEventPicTable_Camerupt[] = { overworld_frame(gObjectEventPic_Camerupt, 4, 4, 4), overworld_frame(gObjectEventPic_Camerupt, 4, 4, 5), }; -const struct SpriteFrameImage gObjectEventPicTable_Torkoal[] = { +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), @@ -4798,7 +4798,7 @@ const struct SpriteFrameImage gObjectEventPicTable_Torkoal[] = { overworld_frame(gObjectEventPic_Torkoal, 4, 4, 4), overworld_frame(gObjectEventPic_Torkoal, 4, 4, 5), }; -const struct SpriteFrameImage gObjectEventPicTable_Spoink[] = { +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), @@ -4806,7 +4806,7 @@ const struct SpriteFrameImage gObjectEventPicTable_Spoink[] = { overworld_frame(gObjectEventPic_Spoink, 4, 4, 4), overworld_frame(gObjectEventPic_Spoink, 4, 4, 5), }; -const struct SpriteFrameImage gObjectEventPicTable_Grumpig[] = { +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), @@ -4814,7 +4814,7 @@ const struct SpriteFrameImage gObjectEventPicTable_Grumpig[] = { overworld_frame(gObjectEventPic_Grumpig, 4, 4, 4), overworld_frame(gObjectEventPic_Grumpig, 4, 4, 5), }; -const struct SpriteFrameImage gObjectEventPicTable_Spinda[] = { +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), @@ -4822,7 +4822,7 @@ const struct SpriteFrameImage gObjectEventPicTable_Spinda[] = { overworld_frame(gObjectEventPic_Spinda, 4, 4, 4), overworld_frame(gObjectEventPic_Spinda, 4, 4, 5), }; -const struct SpriteFrameImage gObjectEventPicTable_Trapinch[] = { +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), @@ -4830,7 +4830,7 @@ const struct SpriteFrameImage gObjectEventPicTable_Trapinch[] = { overworld_frame(gObjectEventPic_Trapinch, 4, 4, 4), overworld_frame(gObjectEventPic_Trapinch, 4, 4, 5), }; -const struct SpriteFrameImage gObjectEventPicTable_Vibrava[] = { +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), @@ -4838,7 +4838,7 @@ const struct SpriteFrameImage gObjectEventPicTable_Vibrava[] = { overworld_frame(gObjectEventPic_Vibrava, 4, 4, 4), overworld_frame(gObjectEventPic_Vibrava, 4, 4, 5), }; -const struct SpriteFrameImage gObjectEventPicTable_Flygon[] = { +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), @@ -4846,7 +4846,7 @@ const struct SpriteFrameImage gObjectEventPicTable_Flygon[] = { overworld_frame(gObjectEventPic_Flygon, 4, 4, 4), overworld_frame(gObjectEventPic_Flygon, 4, 4, 5), }; -const struct SpriteFrameImage gObjectEventPicTable_Cacnea[] = { +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), @@ -4854,7 +4854,7 @@ const struct SpriteFrameImage gObjectEventPicTable_Cacnea[] = { overworld_frame(gObjectEventPic_Cacnea, 4, 4, 4), overworld_frame(gObjectEventPic_Cacnea, 4, 4, 5), }; -const struct SpriteFrameImage gObjectEventPicTable_Cacturne[] = { +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), @@ -4862,7 +4862,7 @@ const struct SpriteFrameImage gObjectEventPicTable_Cacturne[] = { overworld_frame(gObjectEventPic_Cacturne, 4, 4, 4), overworld_frame(gObjectEventPic_Cacturne, 4, 4, 5), }; -const struct SpriteFrameImage gObjectEventPicTable_Swablu[] = { +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), @@ -4870,7 +4870,7 @@ const struct SpriteFrameImage gObjectEventPicTable_Swablu[] = { overworld_frame(gObjectEventPic_Swablu, 4, 4, 4), overworld_frame(gObjectEventPic_Swablu, 4, 4, 5), }; -const struct SpriteFrameImage gObjectEventPicTable_Altaria[] = { +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), @@ -4878,7 +4878,7 @@ const struct SpriteFrameImage gObjectEventPicTable_Altaria[] = { overworld_frame(gObjectEventPic_Altaria, 4, 4, 4), overworld_frame(gObjectEventPic_Altaria, 4, 4, 5), }; -const struct SpriteFrameImage gObjectEventPicTable_Zangoose[] = { +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), @@ -4886,7 +4886,7 @@ const struct SpriteFrameImage gObjectEventPicTable_Zangoose[] = { overworld_frame(gObjectEventPic_Zangoose, 4, 4, 4), overworld_frame(gObjectEventPic_Zangoose, 4, 4, 5), }; -const struct SpriteFrameImage gObjectEventPicTable_Seviper[] = { +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), @@ -4894,7 +4894,7 @@ const struct SpriteFrameImage gObjectEventPicTable_Seviper[] = { overworld_frame(gObjectEventPic_Seviper, 4, 4, 4), overworld_frame(gObjectEventPic_Seviper, 4, 4, 5), }; -const struct SpriteFrameImage gObjectEventPicTable_Lunatone[] = { +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), @@ -4902,7 +4902,7 @@ const struct SpriteFrameImage gObjectEventPicTable_Lunatone[] = { overworld_frame(gObjectEventPic_Lunatone, 4, 4, 4), overworld_frame(gObjectEventPic_Lunatone, 4, 4, 5), }; -const struct SpriteFrameImage gObjectEventPicTable_Solrock[] = { +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), @@ -4910,7 +4910,7 @@ const struct SpriteFrameImage gObjectEventPicTable_Solrock[] = { overworld_frame(gObjectEventPic_Solrock, 4, 4, 4), overworld_frame(gObjectEventPic_Solrock, 4, 4, 5), }; -const struct SpriteFrameImage gObjectEventPicTable_Barboach[] = { +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), @@ -4918,7 +4918,7 @@ const struct SpriteFrameImage gObjectEventPicTable_Barboach[] = { overworld_frame(gObjectEventPic_Barboach, 4, 4, 4), overworld_frame(gObjectEventPic_Barboach, 4, 4, 5), }; -const struct SpriteFrameImage gObjectEventPicTable_Whiscash[] = { +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), @@ -4926,7 +4926,7 @@ const struct SpriteFrameImage gObjectEventPicTable_Whiscash[] = { overworld_frame(gObjectEventPic_Whiscash, 4, 4, 4), overworld_frame(gObjectEventPic_Whiscash, 4, 4, 5), }; -const struct SpriteFrameImage gObjectEventPicTable_Corphish[] = { +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), @@ -4934,7 +4934,7 @@ const struct SpriteFrameImage gObjectEventPicTable_Corphish[] = { overworld_frame(gObjectEventPic_Corphish, 4, 4, 4), overworld_frame(gObjectEventPic_Corphish, 4, 4, 5), }; -const struct SpriteFrameImage gObjectEventPicTable_Crawdaunt[] = { +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), @@ -4942,7 +4942,7 @@ const struct SpriteFrameImage gObjectEventPicTable_Crawdaunt[] = { overworld_frame(gObjectEventPic_Crawdaunt, 4, 4, 4), overworld_frame(gObjectEventPic_Crawdaunt, 4, 4, 5), }; -const struct SpriteFrameImage gObjectEventPicTable_Baltoy[] = { +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), @@ -4950,7 +4950,7 @@ const struct SpriteFrameImage gObjectEventPicTable_Baltoy[] = { overworld_frame(gObjectEventPic_Baltoy, 4, 4, 4), overworld_frame(gObjectEventPic_Baltoy, 4, 4, 5), }; -const struct SpriteFrameImage gObjectEventPicTable_Claydol[] = { +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), @@ -4958,7 +4958,7 @@ const struct SpriteFrameImage gObjectEventPicTable_Claydol[] = { overworld_frame(gObjectEventPic_Claydol, 4, 4, 4), overworld_frame(gObjectEventPic_Claydol, 4, 4, 5), }; -const struct SpriteFrameImage gObjectEventPicTable_Lileep[] = { +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), @@ -4966,7 +4966,7 @@ const struct SpriteFrameImage gObjectEventPicTable_Lileep[] = { overworld_frame(gObjectEventPic_Lileep, 4, 4, 4), overworld_frame(gObjectEventPic_Lileep, 4, 4, 5), }; -const struct SpriteFrameImage gObjectEventPicTable_Cradily[] = { +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), @@ -4974,7 +4974,7 @@ const struct SpriteFrameImage gObjectEventPicTable_Cradily[] = { overworld_frame(gObjectEventPic_Cradily, 4, 4, 4), overworld_frame(gObjectEventPic_Cradily, 4, 4, 5), }; -const struct SpriteFrameImage gObjectEventPicTable_Anorith[] = { +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), @@ -4982,7 +4982,7 @@ const struct SpriteFrameImage gObjectEventPicTable_Anorith[] = { overworld_frame(gObjectEventPic_Anorith, 4, 4, 4), overworld_frame(gObjectEventPic_Anorith, 4, 4, 5), }; -const struct SpriteFrameImage gObjectEventPicTable_Armaldo[] = { +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), @@ -4990,7 +4990,7 @@ const struct SpriteFrameImage gObjectEventPicTable_Armaldo[] = { overworld_frame(gObjectEventPic_Armaldo, 4, 4, 4), overworld_frame(gObjectEventPic_Armaldo, 4, 4, 5), }; -const struct SpriteFrameImage gObjectEventPicTable_Feebas[] = { +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), @@ -4998,7 +4998,7 @@ const struct SpriteFrameImage gObjectEventPicTable_Feebas[] = { overworld_frame(gObjectEventPic_Feebas, 4, 4, 4), overworld_frame(gObjectEventPic_Feebas, 4, 4, 5), }; -const struct SpriteFrameImage gObjectEventPicTable_Milotic[] = { +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), @@ -5006,7 +5006,7 @@ const struct SpriteFrameImage gObjectEventPicTable_Milotic[] = { overworld_frame(gObjectEventPic_Milotic, 4, 4, 4), overworld_frame(gObjectEventPic_Milotic, 4, 4, 5), }; -const struct SpriteFrameImage gObjectEventPicTable_Castform[] = { +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), @@ -5014,7 +5014,7 @@ const struct SpriteFrameImage gObjectEventPicTable_Castform[] = { overworld_frame(gObjectEventPic_Castform, 4, 4, 4), overworld_frame(gObjectEventPic_Castform, 4, 4, 5), }; -const struct SpriteFrameImage gObjectEventPicTable_Kecleon[] = { +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), @@ -5022,7 +5022,7 @@ const struct SpriteFrameImage gObjectEventPicTable_Kecleon[] = { overworld_frame(gObjectEventPic_Kecleon, 4, 4, 4), overworld_frame(gObjectEventPic_Kecleon, 4, 4, 5), }; -const struct SpriteFrameImage gObjectEventPicTable_Shuppet[] = { +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), @@ -5030,7 +5030,7 @@ const struct SpriteFrameImage gObjectEventPicTable_Shuppet[] = { overworld_frame(gObjectEventPic_Shuppet, 4, 4, 4), overworld_frame(gObjectEventPic_Shuppet, 4, 4, 5), }; -const struct SpriteFrameImage gObjectEventPicTable_Banette[] = { +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), @@ -5038,7 +5038,7 @@ const struct SpriteFrameImage gObjectEventPicTable_Banette[] = { overworld_frame(gObjectEventPic_Banette, 4, 4, 4), overworld_frame(gObjectEventPic_Banette, 4, 4, 5), }; -const struct SpriteFrameImage gObjectEventPicTable_Duskull[] = { +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), @@ -5046,7 +5046,7 @@ const struct SpriteFrameImage gObjectEventPicTable_Duskull[] = { overworld_frame(gObjectEventPic_Duskull, 4, 4, 4), overworld_frame(gObjectEventPic_Duskull, 4, 4, 5), }; -const struct SpriteFrameImage gObjectEventPicTable_Dusclops[] = { +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), @@ -5054,7 +5054,7 @@ const struct SpriteFrameImage gObjectEventPicTable_Dusclops[] = { overworld_frame(gObjectEventPic_Dusclops, 4, 4, 4), overworld_frame(gObjectEventPic_Dusclops, 4, 4, 5), }; -const struct SpriteFrameImage gObjectEventPicTable_Tropius[] = { +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), @@ -5062,7 +5062,7 @@ const struct SpriteFrameImage gObjectEventPicTable_Tropius[] = { overworld_frame(gObjectEventPic_Tropius, 4, 4, 4), overworld_frame(gObjectEventPic_Tropius, 4, 4, 5), }; -const struct SpriteFrameImage gObjectEventPicTable_Chimecho[] = { +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), @@ -5070,7 +5070,7 @@ const struct SpriteFrameImage gObjectEventPicTable_Chimecho[] = { overworld_frame(gObjectEventPic_Chimecho, 4, 4, 4), overworld_frame(gObjectEventPic_Chimecho, 4, 4, 5), }; -const struct SpriteFrameImage gObjectEventPicTable_Absol[] = { +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), @@ -5078,7 +5078,7 @@ const struct SpriteFrameImage gObjectEventPicTable_Absol[] = { overworld_frame(gObjectEventPic_Absol, 4, 4, 4), overworld_frame(gObjectEventPic_Absol, 4, 4, 5), }; -const struct SpriteFrameImage gObjectEventPicTable_Wynaut[] = { +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), @@ -5086,7 +5086,7 @@ const struct SpriteFrameImage gObjectEventPicTable_Wynaut[] = { overworld_frame(gObjectEventPic_Wynaut, 4, 4, 4), overworld_frame(gObjectEventPic_Wynaut, 4, 4, 5), }; -const struct SpriteFrameImage gObjectEventPicTable_Snorunt[] = { +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), @@ -5094,7 +5094,7 @@ const struct SpriteFrameImage gObjectEventPicTable_Snorunt[] = { overworld_frame(gObjectEventPic_Snorunt, 4, 4, 4), overworld_frame(gObjectEventPic_Snorunt, 4, 4, 5), }; -const struct SpriteFrameImage gObjectEventPicTable_Glalie[] = { +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), @@ -5102,7 +5102,7 @@ const struct SpriteFrameImage gObjectEventPicTable_Glalie[] = { overworld_frame(gObjectEventPic_Glalie, 4, 4, 4), overworld_frame(gObjectEventPic_Glalie, 4, 4, 5), }; -const struct SpriteFrameImage gObjectEventPicTable_Spheal[] = { +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), @@ -5110,7 +5110,7 @@ const struct SpriteFrameImage gObjectEventPicTable_Spheal[] = { overworld_frame(gObjectEventPic_Spheal, 4, 4, 4), overworld_frame(gObjectEventPic_Spheal, 4, 4, 5), }; -const struct SpriteFrameImage gObjectEventPicTable_Sealeo[] = { +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), @@ -5118,7 +5118,7 @@ const struct SpriteFrameImage gObjectEventPicTable_Sealeo[] = { overworld_frame(gObjectEventPic_Sealeo, 4, 4, 4), overworld_frame(gObjectEventPic_Sealeo, 4, 4, 5), }; -const struct SpriteFrameImage gObjectEventPicTable_Walrein[] = { +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), @@ -5126,7 +5126,7 @@ const struct SpriteFrameImage gObjectEventPicTable_Walrein[] = { overworld_frame(gObjectEventPic_Walrein, 4, 4, 4), overworld_frame(gObjectEventPic_Walrein, 4, 4, 5), }; -const struct SpriteFrameImage gObjectEventPicTable_Clamperl[] = { +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), @@ -5134,7 +5134,7 @@ const struct SpriteFrameImage gObjectEventPicTable_Clamperl[] = { overworld_frame(gObjectEventPic_Clamperl, 4, 4, 4), overworld_frame(gObjectEventPic_Clamperl, 4, 4, 5), }; -const struct SpriteFrameImage gObjectEventPicTable_Huntail[] = { +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), @@ -5142,7 +5142,7 @@ const struct SpriteFrameImage gObjectEventPicTable_Huntail[] = { overworld_frame(gObjectEventPic_Huntail, 4, 4, 4), overworld_frame(gObjectEventPic_Huntail, 4, 4, 5), }; -const struct SpriteFrameImage gObjectEventPicTable_Gorebyss[] = { +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), @@ -5150,7 +5150,7 @@ const struct SpriteFrameImage gObjectEventPicTable_Gorebyss[] = { overworld_frame(gObjectEventPic_Gorebyss, 4, 4, 4), overworld_frame(gObjectEventPic_Gorebyss, 4, 4, 5), }; -const struct SpriteFrameImage gObjectEventPicTable_Relicanth[] = { +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), @@ -5158,7 +5158,7 @@ const struct SpriteFrameImage gObjectEventPicTable_Relicanth[] = { overworld_frame(gObjectEventPic_Relicanth, 4, 4, 4), overworld_frame(gObjectEventPic_Relicanth, 4, 4, 5), }; -const struct SpriteFrameImage gObjectEventPicTable_Luvdisc[] = { +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), @@ -5166,7 +5166,7 @@ const struct SpriteFrameImage gObjectEventPicTable_Luvdisc[] = { overworld_frame(gObjectEventPic_Luvdisc, 4, 4, 4), overworld_frame(gObjectEventPic_Luvdisc, 4, 4, 5), }; -const struct SpriteFrameImage gObjectEventPicTable_Bagon[] = { +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), @@ -5174,7 +5174,7 @@ const struct SpriteFrameImage gObjectEventPicTable_Bagon[] = { overworld_frame(gObjectEventPic_Bagon, 4, 4, 4), overworld_frame(gObjectEventPic_Bagon, 4, 4, 5), }; -const struct SpriteFrameImage gObjectEventPicTable_Shelgon[] = { +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), @@ -5182,7 +5182,7 @@ const struct SpriteFrameImage gObjectEventPicTable_Shelgon[] = { overworld_frame(gObjectEventPic_Shelgon, 4, 4, 4), overworld_frame(gObjectEventPic_Shelgon, 4, 4, 5), }; -const struct SpriteFrameImage gObjectEventPicTable_Salamence[] = { +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), @@ -5190,7 +5190,7 @@ const struct SpriteFrameImage gObjectEventPicTable_Salamence[] = { overworld_frame(gObjectEventPic_Salamence, 4, 4, 4), overworld_frame(gObjectEventPic_Salamence, 4, 4, 5), }; -const struct SpriteFrameImage gObjectEventPicTable_Beldum[] = { +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), @@ -5198,7 +5198,7 @@ const struct SpriteFrameImage gObjectEventPicTable_Beldum[] = { overworld_frame(gObjectEventPic_Beldum, 4, 4, 4), overworld_frame(gObjectEventPic_Beldum, 4, 4, 5), }; -const struct SpriteFrameImage gObjectEventPicTable_Metang[] = { +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), @@ -5206,7 +5206,7 @@ const struct SpriteFrameImage gObjectEventPicTable_Metang[] = { overworld_frame(gObjectEventPic_Metang, 4, 4, 4), overworld_frame(gObjectEventPic_Metang, 4, 4, 5), }; -const struct SpriteFrameImage gObjectEventPicTable_Metagross[] = { +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), @@ -5214,7 +5214,7 @@ const struct SpriteFrameImage gObjectEventPicTable_Metagross[] = { overworld_frame(gObjectEventPic_Metagross, 4, 4, 4), overworld_frame(gObjectEventPic_Metagross, 4, 4, 5), }; -const struct SpriteFrameImage gObjectEventPicTable_Regirock[] = { +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), @@ -5222,7 +5222,7 @@ const struct SpriteFrameImage gObjectEventPicTable_Regirock[] = { overworld_frame(gObjectEventPic_Regirock, 4, 4, 4), overworld_frame(gObjectEventPic_Regirock, 4, 4, 5), }; -const struct SpriteFrameImage gObjectEventPicTable_Regice[] = { +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), @@ -5230,7 +5230,7 @@ const struct SpriteFrameImage gObjectEventPicTable_Regice[] = { overworld_frame(gObjectEventPic_Regice, 4, 4, 4), overworld_frame(gObjectEventPic_Regice, 4, 4, 5), }; -const struct SpriteFrameImage gObjectEventPicTable_Registeel[] = { +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), @@ -5238,7 +5238,7 @@ const struct SpriteFrameImage gObjectEventPicTable_Registeel[] = { overworld_frame(gObjectEventPic_Registeel, 4, 4, 4), overworld_frame(gObjectEventPic_Registeel, 4, 4, 5), }; -const struct SpriteFrameImage gObjectEventPicTable_Latias[] = { +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), @@ -5246,7 +5246,7 @@ const struct SpriteFrameImage gObjectEventPicTable_Latias[] = { overworld_frame(gObjectEventPic_Latias, 4, 4, 4), overworld_frame(gObjectEventPic_Latias, 4, 4, 5), }; -const struct SpriteFrameImage gObjectEventPicTable_Latios[] = { +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), @@ -5254,7 +5254,7 @@ const struct SpriteFrameImage gObjectEventPicTable_Latios[] = { overworld_frame(gObjectEventPic_Latios, 4, 4, 4), overworld_frame(gObjectEventPic_Latios, 4, 4, 5), }; -const struct SpriteFrameImage gObjectEventPicTable_Kyogre[] = { +static const struct SpriteFrameImage sPicTable_Kyogre[] = { overworld_frame(gObjectEventPic_KyogreOld, 4, 4, 0), overworld_frame(gObjectEventPic_KyogreOld, 4, 4, 1), overworld_frame(gObjectEventPic_KyogreOld, 4, 4, 2), @@ -5262,7 +5262,7 @@ const struct SpriteFrameImage gObjectEventPicTable_Kyogre[] = { overworld_frame(gObjectEventPic_KyogreOld, 4, 4, 4), overworld_frame(gObjectEventPic_KyogreOld, 4, 4, 5), }; -const struct SpriteFrameImage gObjectEventPicTable_Groudon[] = { +static const struct SpriteFrameImage sPicTable_Groudon[] = { overworld_frame(gObjectEventPic_GroudonOld, 4, 4, 0), overworld_frame(gObjectEventPic_GroudonOld, 4, 4, 1), overworld_frame(gObjectEventPic_GroudonOld, 4, 4, 2), @@ -5270,7 +5270,7 @@ const struct SpriteFrameImage gObjectEventPicTable_Groudon[] = { overworld_frame(gObjectEventPic_GroudonOld, 4, 4, 4), overworld_frame(gObjectEventPic_GroudonOld, 4, 4, 5), }; -const struct SpriteFrameImage gObjectEventPicTable_Rayquaza[] = { +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), @@ -5278,7 +5278,7 @@ const struct SpriteFrameImage gObjectEventPicTable_Rayquaza[] = { overworld_frame(gObjectEventPic_Rayquaza, 8, 8, 4), overworld_frame(gObjectEventPic_Rayquaza, 8, 8, 5), }; -const struct SpriteFrameImage gObjectEventPicTable_Jirachi[] = { +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), @@ -5286,7 +5286,7 @@ const struct SpriteFrameImage gObjectEventPicTable_Jirachi[] = { overworld_frame(gObjectEventPic_Jirachi, 4, 4, 4), overworld_frame(gObjectEventPic_Jirachi, 4, 4, 5), }; -const struct SpriteFrameImage gObjectEventPicTable_Deoxys[] = { +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), @@ -5295,7 +5295,7 @@ const struct SpriteFrameImage gObjectEventPicTable_Deoxys[] = { overworld_frame(gObjectEventPic_Deoxys, 4, 4, 5), }; -const struct SpriteFrameImage gObjectEventPicTable_DeoxysOld[] = { +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), @@ -5307,7 +5307,7 @@ const struct SpriteFrameImage gObjectEventPicTable_DeoxysOld[] = { overworld_frame(gObjectEventPic_DeoxysOld, 4, 4, 0), }; -const struct SpriteFrameImage gObjectEventPicTable_MewOld[] = { +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), @@ -5319,7 +5319,7 @@ const struct SpriteFrameImage gObjectEventPicTable_MewOld[] = { overworld_frame(gObjectEventPic_MewOld, 2, 4, 8), }; -const struct SpriteFrameImage gObjectEventPicTable_DusclopsOld[] = { +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), @@ -5331,7 +5331,7 @@ const struct SpriteFrameImage gObjectEventPicTable_DusclopsOld[] = { overworld_frame(gObjectEventPic_Dusclops, 2, 4, 8), }; -const struct SpriteFrameImage gObjectEventPicTable_AzurillOld[] = { +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), @@ -5343,7 +5343,7 @@ const struct SpriteFrameImage gObjectEventPicTable_AzurillOld[] = { overworld_frame(gObjectEventPic_AzurillOld, 2, 2, 2), }; -const struct SpriteFrameImage gObjectEventPicTable_KecleonOld[] = { +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), @@ -5355,7 +5355,7 @@ const struct SpriteFrameImage gObjectEventPicTable_KecleonOld[] = { overworld_frame(gObjectEventPic_KecleonOld, 2, 2, 2), }; -const struct SpriteFrameImage gObjectEventPicTable_WingullOld[] = { +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), @@ -5367,7 +5367,7 @@ const struct SpriteFrameImage gObjectEventPicTable_WingullOld[] = { overworld_frame(gObjectEventPic_WingullOld, 2, 2, 5), }; -const struct SpriteFrameImage gObjectEventPicTable_AzumarillOld[] = { +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), @@ -5379,7 +5379,7 @@ const struct SpriteFrameImage gObjectEventPicTable_AzumarillOld[] = { overworld_frame(gObjectEventPic_AzumarillOld, 2, 2, 2), }; -const struct SpriteFrameImage gObjectEventPicTable_PikachuOld[] = { +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), @@ -5391,7 +5391,7 @@ const struct SpriteFrameImage gObjectEventPicTable_PikachuOld[] = { overworld_frame(gObjectEventPic_PikachuOld, 2, 2, 2), }; -const struct SpriteFrameImage gObjectEventPicTable_ZigzagoonOld[] = { +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), @@ -5403,7 +5403,7 @@ const struct SpriteFrameImage gObjectEventPicTable_ZigzagoonOld[] = { overworld_frame(gObjectEventPic_ZigzagoonOld, 2, 2, 2), }; -const struct SpriteFrameImage gObjectEventPicTable_SkittyOld[] = { +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), @@ -5415,7 +5415,7 @@ const struct SpriteFrameImage gObjectEventPicTable_SkittyOld[] = { overworld_frame(gObjectEventPic_SkittyOld, 2, 2, 2), }; -const struct SpriteFrameImage gObjectEventPicTable_PoochyenaOld[] = { +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), @@ -5427,7 +5427,7 @@ const struct SpriteFrameImage gObjectEventPicTable_PoochyenaOld[] = { overworld_frame(gObjectEventPic_PoochyenaOld, 4, 4, 8), }; -const struct SpriteFrameImage gObjectEventPicTable_LugiaOld[] = { +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), @@ -5439,7 +5439,7 @@ const struct SpriteFrameImage gObjectEventPicTable_LugiaOld[] = { overworld_frame(gObjectEventPic_LugiaOld, 4, 4, 1), }; -const struct SpriteFrameImage gObjectEventPicTable_HoOhOld[] = { +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), @@ -5463,7 +5463,7 @@ static const struct SpriteFrameImage sPicTable_RubySapphireBrendan[] = { overworld_frame(gObjectEventPic_RubySapphireBrendanNormal, 2, 4, 8), }; -const struct SpriteFrameImage gObjectEventPicTable_KirliaOld[] = { +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), @@ -5475,7 +5475,7 @@ const struct SpriteFrameImage gObjectEventPicTable_KirliaOld[] = { overworld_frame(gObjectEventPic_KirliaOld, 2, 4, 8), }; -const struct SpriteFrameImage gObjectEventPicTable_RubySapphireMay[] = { +static const struct SpriteFrameImage sPicTable_RubySapphireMay[] = { overworld_frame(gObjectEventPic_RubySapphireMayNormal, 2, 4, 0), overworld_frame(gObjectEventPic_RubySapphireMayNormal, 2, 4, 1), overworld_frame(gObjectEventPic_RubySapphireMayNormal, 2, 4, 2), diff --git a/src/event_object_movement.c b/src/event_object_movement.c index 4cb712f39..6265b392a 100644 --- a/src/event_object_movement.c +++ b/src/event_object_movement.c @@ -1964,7 +1964,7 @@ static void SpawnLightSprite(s16 x, s16 y, s16 camX, s16 camY, u32 behavior) { } sprite = &gSprites[CreateSprite(&gFieldEffectObjectTemplate_BallLight, 0, 0, 0)]; UpdateSpritePaletteByTemplate(&gFieldEffectObjectTemplate_BallLight, sprite); - sub_8092FF0(x + camX, y + camY, &sprite->pos1.x, &sprite->pos1.y); + GetMapCoordsFromSpritePos(x + camX, y + camY, &sprite->pos1.x, &sprite->pos1.y); sprite->data[6] = x; sprite->data[7] = y; sprite->affineAnims = gDummySpriteAffineAnimTable; @@ -2125,7 +2125,7 @@ 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->coordOffsetEnabled = TRUE; @@ -2427,7 +2427,6 @@ static u8 LoadSpritePaletteIfTagExists(const struct SpritePalette *spritePalette u8 paletteNum; if (IndexOfSpritePaletteTag(spritePalette->tag) != 0xFF) return 0xFF; - } paletteNum = LoadSpritePalette(spritePalette); UpdateSpritePaletteWithTime(paletteNum); return paletteNum; @@ -6459,10 +6458,10 @@ bool8 MovementAction_ExitPokeball_Step0(struct ObjectEvent *objectEvent, struct objectEvent->invisible = FALSE; if (TestPlayerAvatarFlags(PLAYER_AVATAR_FLAG_DASH)) { - sub_8094554(objectEvent, sprite, DIR_SOUTH, GetMoveDirectionFastestAnimNum(DIR_NORTH), 8); + InitMoveInPlace(objectEvent, sprite, DIR_SOUTH, GetMoveDirectionFastestAnimNum(DIR_NORTH), 8); sprite->data[6] = 0; // fast speed } else { - sub_8094554(objectEvent, sprite, DIR_SOUTH, GetMoveDirectionFastestAnimNum(DIR_SOUTH), 16); + InitMoveInPlace(objectEvent, sprite, DIR_SOUTH, GetMoveDirectionFastestAnimNum(DIR_SOUTH), 16); sprite->data[6] = 1; // slow speed } ObjectEventSetGraphicsId(objectEvent, OBJ_EVENT_GFX_ANIMATED_BALL); @@ -6491,7 +6490,7 @@ bool8 MovementAction_ExitPokeball_Step1(struct ObjectEvent *objectEvent, struct bool8 MovementAction_EnterPokeball_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite) { u8 direction = objectEvent->facingDirection; - sub_8094554(objectEvent, sprite, direction, GetMoveDirectionFasterAnimNum(direction), 16); + InitMoveInPlace(objectEvent, sprite, direction, GetMoveDirectionFasterAnimNum(direction), 16); sprite->data[6] = 1; // slow speed return MovementAction_EnterPokeball_Step1(objectEvent, sprite); } diff --git a/src/pokemon_summary_screen.c b/src/pokemon_summary_screen.c index 18221ec3d..9cb4778e5 100644 --- a/src/pokemon_summary_screen.c +++ b/src/pokemon_summary_screen.c @@ -3341,7 +3341,7 @@ static void PrintRibbonCount(void) static void BufferStat(u8 *dst, s8 natureMod, u32 stat, u32 strId, u32 n) { static const u8 textNatureMinus[] = _("{COLOR_HIGHLIGHT_SHADOW}{BLUE}{TRANSPARENT}{07}"); // Blue static const u8 textNaturePlus[] = _("{COLOR_HIGHLIGHT_SHADOW}{05}{TRANSPARENT}{06}"); // Red - static const u8 textNatureNone[] = _("{COLOR_HIGHLIGHT_SHADOW}{01}{TRANSPARENT}{DARK_GREY}"); // Black + static const u8 textNatureNone[] = _("{COLOR_HIGHLIGHT_SHADOW}{01}{TRANSPARENT}{DARK_GRAY}"); // Black u8 *txtPtr; if (natureMod == 0) txtPtr = StringCopy(dst, textNatureNone); From 7456e3ce14acc6092302649a258f6cb65474e1d7 Mon Sep 17 00:00:00 2001 From: Ariel Antonitis Date: Sat, 24 Apr 2021 18:47:13 -0400 Subject: [PATCH 061/241] Fixed bug where followers appeared underwater. --- src/event_object_movement.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/event_object_movement.c b/src/event_object_movement.c index 6265b392a..0179d43af 100644 --- a/src/event_object_movement.c +++ b/src/event_object_movement.c @@ -1716,7 +1716,7 @@ void UpdateFollowingPokemon(void) { // Update following pokemon if any void RemoveFollowingPokemon(void) { // Remove follower object. Idempotent. struct ObjectEvent *objectEvent = GetFollowerObject(); - if (objectEvent == NULL) + if (objectEvent == NULL)g return; RemoveObjectEvent(objectEvent); } @@ -1727,7 +1727,9 @@ static bool8 IsFollowerVisible(void) { // Determine whether follower *should* be || MetatileBehavior_IsSurfableWaterOrUnderwater(gObjectEvents[gPlayerAvatar.objectEventId].currentMetatileBehavior) || MetatileBehavior_IsSurfableWaterOrUnderwater(gObjectEvents[gPlayerAvatar.objectEventId].previousMetatileBehavior) || MetatileBehavior_IsForcedMovementTile(gObjectEvents[gPlayerAvatar.objectEventId].currentMetatileBehavior) - || MetatileBehavior_IsForcedMovementTile(gObjectEvents[gPlayerAvatar.objectEventId].previousMetatileBehavior)); + || MetatileBehavior_IsForcedMovementTile(gObjectEvents[gPlayerAvatar.objectEventId].previousMetatileBehavior) + || gWeatherPtr->currWeather == WEATHER_UNDERWATER + || gWeatherPtr->currWeather == WEATHER_UNDERWATER_BUBBLES); } static bool8 SpeciesHasType(u16 species, u8 type) { From e71c3dbd1b95dc3e3074e215ae5c6ce506db4779 Mon Sep 17 00:00:00 2001 From: Ariel Antonitis Date: Sat, 24 Apr 2021 18:56:36 -0400 Subject: [PATCH 062/241] Fixed typo. --- src/event_object_movement.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/event_object_movement.c b/src/event_object_movement.c index 0179d43af..32adfdcb9 100644 --- a/src/event_object_movement.c +++ b/src/event_object_movement.c @@ -1716,7 +1716,7 @@ void UpdateFollowingPokemon(void) { // Update following pokemon if any void RemoveFollowingPokemon(void) { // Remove follower object. Idempotent. struct ObjectEvent *objectEvent = GetFollowerObject(); - if (objectEvent == NULL)g + if (objectEvent == NULL) return; RemoveObjectEvent(objectEvent); } From be2c06d5a4b566284b5f9a890c68fa62cd5b0b23 Mon Sep 17 00:00:00 2001 From: Ariel Antonitis Date: Sun, 25 Apr 2021 16:25:32 -0400 Subject: [PATCH 063/241] Made follower emotes immune to time-blending. --- src/event_object_movement.c | 2 +- src/trainer_see.c | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/event_object_movement.c b/src/event_object_movement.c index 32adfdcb9..fc99a172a 100644 --- a/src/event_object_movement.c +++ b/src/event_object_movement.c @@ -478,8 +478,8 @@ const u8 gInitialMovementTypeFacingDirections[] = { #define OBJ_EVENT_PAL_TAG_RS_BRENDAN 0x1122 #define OBJ_EVENT_PAL_TAG_RS_MAY 0x1123 #define OBJ_EVENT_PAL_TAG_DYNAMIC 0x1124 -#define OBJ_EVENT_PAL_TAG_EMOTES 0x1125 #define OBJ_EVENT_PAL_TAG_LIGHT 0x8001 +#define OBJ_EVENT_PAL_TAG_EMOTES 0x8002 #define OBJ_EVENT_PAL_TAG_NONE 0x11FF #include "data/object_events/object_event_graphics_info_pointers.h" diff --git a/src/trainer_see.c b/src/trainer_see.c index eb0cef473..d21cce747 100644 --- a/src/trainer_see.c +++ b/src/trainer_see.c @@ -287,7 +287,7 @@ static const union AnimCmd *const sSpriteAnimTable_Emotes[] = { // TODO: Move these declarations into even_object_movement.h #define OBJ_EVENT_PAL_TAG_MAY 0x1110 -#define OBJ_EVENT_PAL_TAG_EMOTES 0x1125 +#define OBJ_EVENT_PAL_TAG_EMOTES 0x8002 static const struct SpriteTemplate sSpriteTemplate_ExclamationQuestionMark = { From 5045958c96ab1187433259376179ab8b389614ff Mon Sep 17 00:00:00 2001 From: Ariel Antonitis Date: Thu, 11 Mar 2021 21:26:56 -0500 Subject: [PATCH 064/241] OW windows now light up at night. --- data/tilesets/primary/general/palettes/04.pal | 6 ++-- .../tilesets/secondary/rustboro/metatiles.bin | Bin 5600 -> 5600 bytes .../secondary/rustboro/palettes/06.pal | 30 +++++++++--------- .../secondary/rustboro/palettes/10.pal | 2 +- data/tilesets/secondary/rustboro/tiles.png | Bin 3938 -> 4003 bytes src/overworld.c | 1 + src/util.c | 3 +- 7 files changed, 22 insertions(+), 20 deletions(-) diff --git a/data/tilesets/primary/general/palettes/04.pal b/data/tilesets/primary/general/palettes/04.pal index d8051b7ba..11ebd16a6 100644 --- a/data/tilesets/primary/general/palettes/04.pal +++ b/data/tilesets/primary/general/palettes/04.pal @@ -2,13 +2,13 @@ JASC-PAL 0100 16 24 41 82 -255 255 255 +248 0 248 222 230 238 255 0 255 255 0 255 255 0 255 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 +248 0 248 diff --git a/data/tilesets/secondary/rustboro/metatiles.bin b/data/tilesets/secondary/rustboro/metatiles.bin index 5a0d1b0d14d6f8fd5d408d19880e64b556a6cdd0..585e3a6c299ba5f8428ca95b4b8020298f1f21c6 100644 GIT binary patch delta 34 scmV+-0NwxKE8r`zr~?R;W0hm1W2Ix0umgAqmSdM=remjLvoHj(5fNby>;M1& delta 34 dcmaE${Xl!e3T6%lD44u~xdP7FY{0TX5CD+i2Iv3) diff --git a/data/tilesets/secondary/rustboro/palettes/06.pal b/data/tilesets/secondary/rustboro/palettes/06.pal index 955b1d21a..767ae160d 100644 --- a/data/tilesets/secondary/rustboro/palettes/06.pal +++ b/data/tilesets/secondary/rustboro/palettes/06.pal @@ -2,18 +2,18 @@ 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 -0 0 0 -0 0 0 +255 255 255 +238 238 213 +205 205 164 +136 144 152 +131 131 139 +98 98 123 +65 74 106 +41 49 90 +205 213 230 +139 180 213 +205 238 189 +164 205 172 +139 189 139 +123 164 74 +115 197 164 diff --git a/data/tilesets/secondary/rustboro/palettes/10.pal b/data/tilesets/secondary/rustboro/palettes/10.pal index 6f0bfa7ee..d68d54ce9 100644 --- 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 c3a3bfbab469519db64233b1868d8c9370d06d49..0ae3620c7d018237d642c731975612b49eddc80f 100644 GIT binary patch delta 3926 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 TIME_OF_DAY_MAX ? TIME_OF_DAY_MAX : gTimeOfDay; BlendPalettes(palettes, sTimeOfDayBlendVars[gTimeOfDay].coeff, sTimeOfDayBlendVars[gTimeOfDay].blendColor); } diff --git a/src/util.c b/src/util.c index a4e3fa4cf..33983e9f4 100644 --- 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)); From 127749369d14e66be49df81aa49696e59f23c2c0 Mon Sep 17 00:00:00 2001 From: Ariel Antonitis Date: Thu, 11 Mar 2021 22:38:06 -0500 Subject: [PATCH 065/241] Allowed map headers to specify light palettes. --- data/tilesets/headers.inc | 2 +- .../secondary/rustboro/palettes/06.pal | 2 +- include/global.fieldmap.h | 1 + include/palette.h | 2 + src/fieldmap.c | 8 +++- src/overworld.c | 9 ++-- src/palette.c | 48 ++++++++++++++++--- 7 files changed, 59 insertions(+), 13 deletions(-) diff --git a/data/tilesets/headers.inc b/data/tilesets/headers.inc index c56234b13..aefc245db 100644 --- a/data/tilesets/headers.inc +++ b/data/tilesets/headers.inc @@ -24,7 +24,7 @@ gTileset_Petalburg:: @ 83DF71C gTileset_Rustboro:: @ 83DF734 .byte TRUE @ is compressed .byte TRUE @ is secondary tileset - .2byte 0 @ padding + .2byte 1 << 6 @ 1 << 6 .4byte gTilesetTiles_Rustboro .4byte gTilesetPalettes_Rustboro .4byte gMetatiles_Rustboro diff --git a/data/tilesets/secondary/rustboro/palettes/06.pal b/data/tilesets/secondary/rustboro/palettes/06.pal index 767ae160d..5851fc31a 100644 --- a/data/tilesets/secondary/rustboro/palettes/06.pal +++ b/data/tilesets/secondary/rustboro/palettes/06.pal @@ -1,7 +1,7 @@ JASC-PAL 0100 16 -115 197 164 +248 224 120 255 255 255 238 238 213 205 205 164 diff --git a/include/global.fieldmap.h b/include/global.fieldmap.h index 0e65cc844..248e2a6c0 100644 --- a/include/global.fieldmap.h +++ b/include/global.fieldmap.h @@ -29,6 +29,7 @@ struct Tileset { /*0x00*/ bool8 isCompressed; /*0x01*/ bool8 isSecondary; + /*0x02*/ u16 lightPalettes; /*0x04*/ void *tiles; /*0x08*/ void *palettes; /*0x0c*/ u16 *metatiles; diff --git a/include/palette.h b/include/palette.h index ebc1cc0bb..4a54b1d55 100644 --- a/include/palette.h +++ b/include/palette.h @@ -76,6 +76,8 @@ void BeginHardwarePaletteFade(u8, u8, u8, u8, u8); void BlendPalettes(u32 selectedPalettes, u8 coeff, u16 color); void BlendPalettesUnfaded(u32, u8, u16); void BlendPalettesGradually(u32 selectedPalettes, s8 delay, u8 coeff, u8 coeffTarget, u16 color, u8 priority, u8 id); +void TimePalette(u16 palOffset, u16 numEntries, u8 coeff, u16 blendColor); +void TimePalettes(u32 palettes, u8 coeff, u16 color); void TintPalette_GrayScale(u16 *palette, u16 count); void TintPalette_GrayScale2(u16 *palette, u16 count); void TintPalette_SepiaTone(u16 *palette, u16 count); diff --git a/src/fieldmap.c b/src/fieldmap.c index e437ea7fc..d084dcf38 100644 --- a/src/fieldmap.c +++ b/src/fieldmap.c @@ -884,8 +884,14 @@ void LoadTilesetPalette(struct Tileset const *tileset, u16 destOffset, u16 size) } else if (tileset->isSecondary == TRUE) { + u8 i; LoadPalette(((u16*)tileset->palettes) + (NUM_PALS_IN_PRIMARY * 16), destOffset, size); - FieldmapPaletteDummy(destOffset, size >> 1); + for (i = NUM_PALS_IN_PRIMARY; i < NUM_PALS_TOTAL; i++) { + if (tileset->lightPalettes & (1 << i)) { + u16 index = i * 16; + gPlttBufferFaded[index] = gPlttBufferUnfaded[index] |= 0x8000; + } + } } else { diff --git a/src/overworld.c b/src/overworld.c index 5bbb1b376..294bec37b 100644 --- a/src/overworld.c +++ b/src/overworld.c @@ -1521,13 +1521,14 @@ void BlendPalettesWithTime(u32 palettes) { palettes &= ~(1 << (i + 16)); } palettes &= ~0xE000; // Don't blend tile palettes [13,15] - palettes &= ~(1 << 6); - gTimeOfDay = gTimeOfDay > TIME_OF_DAY_MAX ? TIME_OF_DAY_MAX : gTimeOfDay; - BlendPalettes(palettes, sTimeOfDayBlendVars[gTimeOfDay].coeff, sTimeOfDayBlendVars[gTimeOfDay].blendColor); + gTimeOfDay = min(TIME_OF_DAY_MAX, gTimeOfDay); + if (!palettes) + return; + TimePalettes(palettes, sTimeOfDayBlendVars[gTimeOfDay].coeff, sTimeOfDayBlendVars[gTimeOfDay].blendColor); } } -u8 UpdateSpritePaletteWithTime(u8 paletteNum) { +u8 UpdateSpritePaletteWithTime(u8 paletteNum) { // TODO: Optimize this BlendPalettesWithTime(1 << (paletteNum + 16)); return paletteNum; } diff --git a/src/palette.c b/src/palette.c index a367a5ed4..593c9bcd4 100644 --- a/src/palette.c +++ b/src/palette.c @@ -457,7 +457,7 @@ static u8 GetPaletteNumByUid(u16 uid) } // Like normal palette fade, but respects sprite/tile palettes immune to time of day fading -static u8 UpdateTimeOfDayPaletteFade(void) // Like normal, but respects sprite palettes immune to fading +static u8 UpdateTimeOfDayPaletteFade(void) { u8 paletteNum; u16 paletteOffset; @@ -496,13 +496,13 @@ static u8 UpdateTimeOfDayPaletteFade(void) // Like normal, but respects sprite p if (gPaletteFade.yDec) { if (gPaletteFade.objPaletteToggle) { // sprite palettes if (gPaletteFade.y >= gPaletteFade.targetY || GetSpritePaletteTagByPaletteNum(paletteNum) & 0x8000) - BlendPalette(paletteOffset, 16, gPaletteFade.y, gPaletteFade.blendColor); + TimePalette(paletteOffset, 16, gPaletteFade.y, gPaletteFade.blendColor); // tile palettes } else if (gPaletteFade.y >= gPaletteFade.targetY || (paletteNum >= 13 && paletteNum <= 15)) { - BlendPalette(paletteOffset, 16, gPaletteFade.y, gPaletteFade.blendColor); + TimePalette(paletteOffset, 16, gPaletteFade.y, gPaletteFade.blendColor); } } else { - BlendPalette(paletteOffset, 16, gPaletteFade.y, gPaletteFade.blendColor); + TimePalette(paletteOffset, 16, gPaletteFade.y, gPaletteFade.blendColor); } } } @@ -978,6 +978,42 @@ void BlendPalettes(u32 selectedPalettes, u8 coeff, u16 color) } } +// Like BlendPalette, but ignores blendColor if the transparency high bit is set +void TimePalette(u16 palOffset, u16 numEntries, u8 coeff, u16 blendColor) { + u16 i; + s8 r, g, b; + struct PlttData *data2 = (struct PlttData *)&blendColor; + for (i = 0; i < numEntries; i++) { + u16 index = i + palOffset; + struct PlttData *data1 = (struct PlttData *)&gPlttBufferUnfaded[index]; + if (i == 0) { + if (data1->unused_15) { // Use transparency color to blend + data2 = data1; + gPlttBufferFaded[index] = gPlttBufferUnfaded[index]; + } + else if (data2->unused_15) // Set transparency/blending color + gPlttBufferUnfaded[index] = gPlttBufferFaded[index] = blendColor; + continue; + } + r = data1->r; + g = data1->g; + b = data1->b; + gPlttBufferFaded[index] = RGB(r + (((data2->r - r) * coeff) >> 4), + g + (((data2->g - g) * coeff) >> 4), + b + (((data2->b - b) * coeff) >> 4)); + } +} + +// Apply time effect to a series of palettes +void TimePalettes(u32 palettes, u8 coeff, u16 color) { + u16 paletteOffset; + for (paletteOffset = 0; palettes; paletteOffset += 16) { + if (palettes & 1) + TimePalette(paletteOffset, 16, coeff, color); + palettes >>= 1; + } +} + void BlendPalettesUnfaded(u32 selectedPalettes, u8 coeff, u16 color) { void *src = gPlttBufferUnfaded; @@ -1123,8 +1159,8 @@ static bool32 IsBlendPalettesGraduallyTaskActive(u8 id) int i; for (i = 0; i < NUM_TASKS; i++) - if ((gTasks[i].isActive == TRUE) - && (gTasks[i].func == Task_BlendPalettesGradually) + if ((gTasks[i].isActive == TRUE) + && (gTasks[i].func == Task_BlendPalettesGradually) && (gTasks[i].tId == id)) return TRUE; From 73234e0c748c19bea198527e8c0abc2a88a0ae9d Mon Sep 17 00:00:00 2001 From: Ariel Antonitis Date: Fri, 12 Mar 2021 02:07:34 -0500 Subject: [PATCH 066/241] Changed Route 104 windows palette. --- .../tilesets/secondary/rustboro/metatiles.bin | Bin 5600 -> 5600 bytes .../secondary/rustboro/palettes/06.pal | 20 +++++++++--------- data/tilesets/secondary/rustboro/tiles.png | Bin 4003 -> 12786 bytes src/palette.c | 17 +++++++++------ 4 files changed, 20 insertions(+), 17 deletions(-) diff --git a/data/tilesets/secondary/rustboro/metatiles.bin b/data/tilesets/secondary/rustboro/metatiles.bin index 585e3a6c299ba5f8428ca95b4b8020298f1f21c6..63ecf0306eed55fba51975805e7469fdd82f728a 100644 GIT binary patch delta 108 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 Eg77eZ)&Kwi delta 3949 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 B@M{17 diff --git a/src/palette.c b/src/palette.c index 593c9bcd4..f433f442b 100644 --- a/src/palette.c +++ b/src/palette.c @@ -983,24 +983,27 @@ void TimePalette(u16 palOffset, u16 numEntries, u8 coeff, u16 blendColor) { u16 i; s8 r, g, b; struct PlttData *data2 = (struct PlttData *)&blendColor; + struct PlttData *data3; + struct PlttData *blendData; + u16 altBlendIndices = 0; for (i = 0; i < numEntries; i++) { u16 index = i + palOffset; struct PlttData *data1 = (struct PlttData *)&gPlttBufferUnfaded[index]; if (i == 0) { - if (data1->unused_15) { // Use transparency color to blend - data2 = data1; + if (data1->unused_15) { // Color 0 is a bitmask for which colors to blend; color 15 is the alt blend color gPlttBufferFaded[index] = gPlttBufferUnfaded[index]; + altBlendIndices = gPlttBufferUnfaded[index] & 0x7FFF; + data3 = (struct PlttData *)&gPlttBufferUnfaded[index+15]; } - else if (data2->unused_15) // Set transparency/blending color - gPlttBufferUnfaded[index] = gPlttBufferFaded[index] = blendColor; continue; } r = data1->r; g = data1->g; b = data1->b; - gPlttBufferFaded[index] = RGB(r + (((data2->r - r) * coeff) >> 4), - g + (((data2->g - g) * coeff) >> 4), - b + (((data2->b - b) * coeff) >> 4)); + blendData = (altBlendIndices && altBlendIndices & (1 << i)) ? data3 : data2; + gPlttBufferFaded[index] = RGB(r + (((blendData->r - r) * coeff) >> 4), + g + (((blendData->g - g) * coeff) >> 4), + b + (((blendData->b - b) * coeff) >> 4)); } } From 3a7c2e3480773b95945a2ded71d083897994b551 Mon Sep 17 00:00:00 2001 From: Ariel Antonitis Date: Fri, 12 Mar 2021 21:20:47 -0500 Subject: [PATCH 067/241] Updated Petalburg tileset lights. --- data/tilesets/headers.inc | 4 +-- .../secondary/petalburg/metatiles.bin | Bin 2304 -> 2304 bytes .../secondary/petalburg/palettes/06.pal | 4 +-- .../secondary/petalburg/palettes/07.pal | 28 +++++++++--------- data/tilesets/secondary/petalburg/tiles.png | Bin 1740 -> 1738 bytes 5 files changed, 18 insertions(+), 18 deletions(-) diff --git a/data/tilesets/headers.inc b/data/tilesets/headers.inc index aefc245db..32eec2ab9 100644 --- a/data/tilesets/headers.inc +++ b/data/tilesets/headers.inc @@ -13,7 +13,7 @@ gTileset_General:: @ 83DF704 gTileset_Petalburg:: @ 83DF71C .byte TRUE @ is compressed .byte TRUE @ is secondary tileset - .2byte 0 @ padding + .2byte 0xC0 @ lightPalettes 7,8 .4byte gTilesetTiles_Petalburg .4byte gTilesetPalettes_Petalburg .4byte gMetatiles_Petalburg @@ -24,7 +24,7 @@ gTileset_Petalburg:: @ 83DF71C gTileset_Rustboro:: @ 83DF734 .byte TRUE @ is compressed .byte TRUE @ is secondary tileset - .2byte 1 << 6 @ 1 << 6 + .2byte 1 << 6 @ lightPalettes .4byte gTilesetTiles_Rustboro .4byte gTilesetPalettes_Rustboro .4byte gMetatiles_Rustboro diff --git a/data/tilesets/secondary/petalburg/metatiles.bin b/data/tilesets/secondary/petalburg/metatiles.bin index 3711f4aeef135df2d52e729beee708e72769e30b..3ca46efec7868bb936838d926c003fd61abdf1cb 100644 GIT binary patch delta 35 rcmZn=Y7m<6mAPnY*~A}}%th16HkUBUGP4);70oT0SG0KsO9l%72__Cm delta 35 rcmZn=Y7m<6mAPqZ+r%H0%uUnUHkUBUGP5`JHO+0B*R**CO9l%75k?Nk diff --git a/data/tilesets/secondary/petalburg/palettes/06.pal b/data/tilesets/secondary/petalburg/palettes/06.pal index b893aa09e..0c727de68 100644 --- 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 128 8 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..3f7cad9b2 100644 --- 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 128 8 +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/tiles.png b/data/tilesets/secondary/petalburg/tiles.png index 00d6d94a4ef2f74d70ca5eb58cfe0497deeb66b5..c3ae46ad7cc2d244042381cb4d43a10ddf4c553f 100644 GIT binary patch delta 1626 zcmV-g2BrDT4ayCWU+WH0*O9gig`%8}EdPk!Q=y8G$9cX#g{Wf-54uc=|sSU=N|J}_c+{6xHV zL}{cnbz4aW@cZ#-KpCTywSwk1uh-X=)|>q(`lvKq|8af&dXv3_Zu0XSAo|Fne`v&_ zpK}1tKPnvp;QC3Qk2&YG05Cd^7$6t|tXN*x+v+CjJGg;71n>s@lLMTN7-J*G^A@CC zxDMk7)CItxz=d-jMVw#i!U>FQaqboZmT{p8-n&BZmh>S5@aTzhfl&u7U~dXssP)kS zAq0e>k+Y!Hr^-A!3Yt{Q!;A}*e`>&#^B}jhI_#Lz=37cfY)HRlvAhKr5((M6uJDj6 zL|6EXWdZ$=vF2OG+|lq+DUrI%5(!G*Gd7^G1YNYCRLTOzp%CsAlm`tfkvjcX9BYg5 z0WN3{0l6S{#txhJNl?L+_|#JSS2K9p+^$MdP<>|`yNMHeDM{WW}i+q5jD89--9Pr2F) zU=Mws0k|`M&Y>R{2q1*qKsD<)XR(HzvFFBsDfOtAvj6}b6#?1>yC7Q{gLg&G5dSOM?Ey~|>7L&tzX3?M})4H7`L0N_y_gI~h*QjVi8weyF% zxni28ZRY_FpTQaj^_UqYNEEhxFAGR_ zyymIJ0vGg6rvu|sfT1n-z zU>Hv}zI#YW?WfJU?6z_%mrSn=*jx%gsRW=4DF87Hf&lY}FSH=~REf}qsF1LP1z2fT zD)6>pewhUlK=A!Pe*-oOd{`Dx`C@>h0Jl`t&5WHGlL-JU1XyzbQbxcX5(75p0BcgR zfb=X_wMUj!yKBV&@@Eb(nH(KWzygn2xV|kMl(E37J&pl#9S{;_0BftO{r>8jahU}g z07;HuJ|usqEx@A{JCZSw7R<$<06@|f$kWRz#=v*aB6yR4f1m@er^^6Nlm$md-M2AW z*!~WtCl8V!D6}Cf!ru=30idb?l@wrATF_s^x=`9An^+ebw`&%Ef0L8D4Y`ML45qTg zf^<%p#1?dC7pEmcHnA==Zc_^n)N=sSBv=zjIw!35WekkY?3BX?1nU9@6AXAS^B9OF zlc;S&Hm_n$f2d}X%4j5K!K0l40vzthe25lkfVKd}notw0j0<`lcu*FwBZQ7_K`_C9 zn?6P^1wczyK&$B>PH-i{GQb%C12!;STb{PS*-pEFSF8!u%sP-80n#*lGXmhcEdhkz z)BtS(l!J-^McX9Vy&x|(0I(z7sc+{k&;T{y6EV{+f7~HTqHd^8$GhRSu|V_z`fhy9 z07N%bjqd*iupNC?_O1rd6*meOJkqA5@X>cCKFYw+=UnR|!0rs6eA=NNBX4%qxhYWR zBc+P~-6?i;gWdQUD!xhO`B$A0l`aOTz6hAnwgw!6xB=D$s0sE4*&yjbag0f90X$VH zKVy%+oYmjP5@Fb0s) z?PP&04Tz^v2NCjO=}G{veTK3aaB#5q^58%MJbKoiUbvx0Q-Fu%3zSd;NGUswVXyb< zMXx6TPs$hW?5rI=Dc`>j0JRbym({Amxqf+gfA|Uk_{2VhHm(V60T$F}*?ScYeC=q}`%mCtP#QR`+dj@;KqqYqIWr1GT7)c1$9(HU(q8~zA0ssVH34qNc z0l1m&^|rGBv;dygx3D9&htQq};3qMF<^b3MKB&td4Z!9hv`x#jau&>QXARIv0z0Dr zNJD5#Kq>}>06kF709Gdac4*`C6}E4wFZe5;jgpL{pRObToW}N0{=~q!F6p{1iIRF3v07*qoM6N<$f+}CvHvj+t delta 1628 zcmV-i2BZ1P4a^OYU+WN-T39gig`%8}EdPk!Q=y8G$9cX#g{Wf-53FR5YBSU=H`-ZNr#{6xHV zL}{cnbz4aW@Y~U7KpCTywSwkXuh!R<)|>q(dapEG|9*Y_YLmTzZu0XSAbQWDe`v&_ zA9DcC-zyyg;OcRok2&YG05Cd=7$6t|tXN*v+v+Cj8@Pcy1n>s@lLMTL7-J*G^A@CC zxC-M3)CItxz=bm&MVw#g!ZD0&aqboZmT{p8-n&BZmh>S5@aVB}fl&u7V80i*Q0t=u zLI?;$BWFRYPnCIe6f~)p`xzG~f7O5~=Rt01b=VQ5&DWHU*pPnBVtEZNBoeYWUEv{D zh_3J%%L4i#W6jr$xufBOQX+MiB@&drWo$rU3A$)OsgwnbLm}KLC=VJ|B6a$&IMx>9 z16Ir#XPX1=A=2Ek1UhX7>U(6^jT`yQbb6e^Yv<6mG*b z4)8XYmSg~c)!*Z9+lc@`h%=>OeJIx;j^|Uy*~wZki_S%a`g8d3rfFG9Gl0&Jo^Z7n zz#jTE18`^jj6**z5I_jIhHBPv&SDKaW6zBNQ|eJKX8`~>Dgv|zW+nyzpzaAD;P@hd z+)5F@z=bg^Kk5boLp7ZPe=HG$v0R7_#=1KX5KF{B1fBx;Vji$e3}74i0C0R!1Xv;l zun`3;l&&ZOEQo>f3pEA^u>#(SI~T>^nvMa17(j|p8YF;f0l=d=20w-Ar5s0HYUdAi zbHy}G+s*?VK7%z5>N%+$SoeM09ZC~GwOTCzP+iULrK;DjS5ob6e{9wlkSJ{XP8N{v zc*RqT1up2DP6x(?07F~u$w7sHq^MRZ6*TqIfLh$b?)sXZ$7*YQI;*;&VLTSo7Q7ya zz%U+dd~=_W+7Fv`*=^-UE}32$u(=d~QVBp8QUGEY1OeuEpJ_q#p%S4BQ6XUo3$W6x zRN!sH{5%UJfZ+Roe+Fz6_^>RX^4S1K0dAO-DBnE8G0oJ5s z0qI$=Y7Z={cH4>p;dx^H8$ zu>BoOPaY&eP-sI|gufm513*;)Dk;FKw4lF+b)mFLHnA==Zq_XR_BtoG8*&fh7))h} z1?ikHi7n{P&QD5&Y+_w#+@uyBsOJEtNw6l6bWT|9%NQ7)*$Iaa2-XD*CK&Km<}naU zCQ;jlY+l8he^AXNmC;Dff=4?81UTH0`4BD80Br$`HK8V085i_A@SrSUM+hC=f?$FH z*L{p!3V@cZfL7B%oZw1?Wq>mP25exuwmfZtvz>MUuUHeRnROsH0;Fm9W(2@>TLK8b zt^wKtC8paE*Y2V$mOf4D`IMBPxGj(5XtV}a-c^zHbX z0f=s>8r}a3U_1J(>|G9^D{d4nc%)59;iKM}x2D|YyRD6@l^RGH1DqRdveGxFDZ4Ed8aRaOiP!sG8vO&^=;uw?I0(h!Y zfZ9OYS%|mFLmTBcInBUGCppyi4 zN<{yM(3XHy3 Date: Fri, 12 Mar 2021 22:07:46 -0500 Subject: [PATCH 068/241] Added Slateport light palettes. --- data/tilesets/headers.inc | 2 +- .../secondary/slateport/metatiles.bin | Bin 6496 -> 6496 bytes .../secondary/slateport/palettes/06.pal | 4 +-- .../secondary/slateport/palettes/12.pal | 24 +++++++++--------- data/tilesets/secondary/slateport/tiles.png | Bin 6559 -> 6558 bytes 5 files changed, 15 insertions(+), 15 deletions(-) diff --git a/data/tilesets/headers.inc b/data/tilesets/headers.inc index 32eec2ab9..4ebfe80a5 100644 --- a/data/tilesets/headers.inc +++ b/data/tilesets/headers.inc @@ -46,7 +46,7 @@ gTileset_Dewford:: @ 83DF74C gTileset_Slateport:: @ 83DF764 .byte TRUE @ is compressed .byte TRUE @ is secondary tileset - .2byte 0 @ padding + .2byte 1 << 12 @ lightPalettes .4byte gTilesetTiles_Slateport .4byte gTilesetPalettes_Slateport .4byte gMetatiles_Slateport diff --git a/data/tilesets/secondary/slateport/metatiles.bin b/data/tilesets/secondary/slateport/metatiles.bin index 72f671f71def8f5a93264b76c854c5b797ee20b8..0cb7f64acaf96c38d35e004426fe9fc0bfca9d57 100644 GIT binary patch delta 89 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 XO+g0LU9D9F_$TAD=K3YNq`3b9I;wn& delta 6495 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 bEy{uBMuOlQf)_U{_)nKE8egb7Pm25>ez(A` From 56b9764aecf64aa3aed33b30acdc000e4098510e Mon Sep 17 00:00:00 2001 From: Ariel Antonitis Date: Fri, 12 Mar 2021 23:20:15 -0500 Subject: [PATCH 069/241] Added default light blending color. Fixed light palette header offsets. Changed blending function names. --- data/tilesets/headers.inc | 6 +++--- include/global.fieldmap.h | 3 ++- include/overworld.h | 2 +- include/palette.h | 4 ++-- src/field_weather_effect.c | 4 ++-- src/fieldmap.c | 4 +++- src/overworld.c | 8 ++++---- src/palette.c | 17 ++++++++++------- 8 files changed, 27 insertions(+), 21 deletions(-) diff --git a/data/tilesets/headers.inc b/data/tilesets/headers.inc index 4ebfe80a5..38e74bb66 100644 --- a/data/tilesets/headers.inc +++ b/data/tilesets/headers.inc @@ -13,7 +13,7 @@ gTileset_General:: @ 83DF704 gTileset_Petalburg:: @ 83DF71C .byte TRUE @ is compressed .byte TRUE @ is secondary tileset - .2byte 0xC0 @ lightPalettes 7,8 + .2byte 3 @ lightPalettes 6,7 .4byte gTilesetTiles_Petalburg .4byte gTilesetPalettes_Petalburg .4byte gMetatiles_Petalburg @@ -24,7 +24,7 @@ gTileset_Petalburg:: @ 83DF71C gTileset_Rustboro:: @ 83DF734 .byte TRUE @ is compressed .byte TRUE @ is secondary tileset - .2byte 1 << 6 @ lightPalettes + .2byte 1 @ lightPalettes 6 .4byte gTilesetTiles_Rustboro .4byte gTilesetPalettes_Rustboro .4byte gMetatiles_Rustboro @@ -46,7 +46,7 @@ gTileset_Dewford:: @ 83DF74C gTileset_Slateport:: @ 83DF764 .byte TRUE @ is compressed .byte TRUE @ is secondary tileset - .2byte 1 << 12 @ lightPalettes + .2byte 0x41 @ lightPalettes 6,12 .4byte gTilesetTiles_Slateport .4byte gTilesetPalettes_Slateport .4byte gMetatiles_Slateport diff --git a/include/global.fieldmap.h b/include/global.fieldmap.h index 248e2a6c0..84a9c14a6 100644 --- a/include/global.fieldmap.h +++ b/include/global.fieldmap.h @@ -29,7 +29,8 @@ struct Tileset { /*0x00*/ bool8 isCompressed; /*0x01*/ bool8 isSecondary; - /*0x02*/ u16 lightPalettes; + /*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*/ void *tiles; /*0x08*/ void *palettes; /*0x0c*/ u16 *metatiles; diff --git a/include/overworld.h b/include/overworld.h index 86d5426b2..918a5dcce 100644 --- a/include/overworld.h +++ b/include/overworld.h @@ -136,7 +136,7 @@ void CleanupOverworldWindowsAndTilemaps(void); bool32 IsUpdateLinkStateCBActive(void); void CB1_Overworld(void); void CB2_OverworldBasic(void); -void BlendPalettesWithTime(u32); +void UpdatePalettesWithTime(u32); void CB2_Overworld(void); void SetMainCallback1(void (*cb)(void)); void SetUnusedCallback(void *a0); diff --git a/include/palette.h b/include/palette.h index 4a54b1d55..f9bd20560 100644 --- a/include/palette.h +++ b/include/palette.h @@ -76,8 +76,8 @@ void BeginHardwarePaletteFade(u8, u8, u8, u8, u8); void BlendPalettes(u32 selectedPalettes, u8 coeff, u16 color); void BlendPalettesUnfaded(u32, u8, u16); void BlendPalettesGradually(u32 selectedPalettes, s8 delay, u8 coeff, u8 coeffTarget, u16 color, u8 priority, u8 id); -void TimePalette(u16 palOffset, u16 numEntries, u8 coeff, u16 blendColor); -void TimePalettes(u32 palettes, u8 coeff, u16 color); +void TimeBlendPalette(u16 palOffset, u16 numEntries, u8 coeff, u16 blendColor); +void TimeBlendPalettes(u32 palettes, u8 coeff, u16 color); void TintPalette_GrayScale(u16 *palette, u16 count); void TintPalette_GrayScale2(u16 *palette, u16 count); void TintPalette_SepiaTone(u16 *palette, u16 count); diff --git a/src/field_weather_effect.c b/src/field_weather_effect.c index 9f7894066..db480772c 100644 --- a/src/field_weather_effect.c +++ b/src/field_weather_effect.c @@ -1142,7 +1142,7 @@ void Thunderstorm_Main(void) { ApplyWeatherGammaShiftIfIdle(3); if (gTimeOfDay != TIME_OF_DAY_DAY) - BlendPalettesWithTime(0xFFFFFFFF); + UpdatePalettesWithTime(0xFFFFFFFF); gWeatherPtr->thunderAllowEnd = TRUE; if (--gWeatherPtr->thunderShortRetries != 0) { @@ -1183,7 +1183,7 @@ void Thunderstorm_Main(void) case TSTORM_STATE_FADE_THUNDER_LONG: if (--gWeatherPtr->thunderDelay == 0) { - gTimeOfDay == TIME_OF_DAY_DAY ? sub_80ABC7C(19, 3, 5) : BlendPalettesWithTime(0xFFFFFFFF); + gTimeOfDay == TIME_OF_DAY_DAY ? sub_80ABC7C(19, 3, 5) : UpdatePalettesWithTime(0xFFFFFFFF); gWeatherPtr->initStep++; } break; diff --git a/src/fieldmap.c b/src/fieldmap.c index d084dcf38..b3b35a7b0 100644 --- a/src/fieldmap.c +++ b/src/fieldmap.c @@ -887,9 +887,11 @@ void LoadTilesetPalette(struct Tileset const *tileset, u16 destOffset, u16 size) u8 i; LoadPalette(((u16*)tileset->palettes) + (NUM_PALS_IN_PRIMARY * 16), destOffset, size); for (i = NUM_PALS_IN_PRIMARY; i < NUM_PALS_TOTAL; i++) { - if (tileset->lightPalettes & (1 << i)) { + if (tileset->lightPalettes & (1 << (i - NUM_PALS_IN_PRIMARY))) { // Mark as light palette u16 index = i * 16; gPlttBufferFaded[index] = gPlttBufferUnfaded[index] |= 0x8000; + if (tileset->customLightColor & (1 << (i - NUM_PALS_IN_PRIMARY))) // Mark as custom light color + gPlttBufferFaded[index+15] = gPlttBufferUnfaded[index+15] |= 0x8000; } } } diff --git a/src/overworld.c b/src/overworld.c index 294bec37b..5a7ace7b8 100644 --- a/src/overworld.c +++ b/src/overworld.c @@ -846,7 +846,7 @@ void LoadMapFromCameraTransition(u8 mapGroup, u8 mapNum) RoamerMove(); DoCurrentWeather(); ResetFieldTasksArgs(); - BlendPalettesWithTime(0xFFFFFFFF); + UpdatePalettesWithTime(0xFFFFFFFF); RunOnResumeMapScript(); if (gMapHeader.regionMapSectionId != MAPSEC_BATTLE_FRONTIER @@ -1512,7 +1512,7 @@ static bool8 FadePalettesWithTime(void) { } } -void BlendPalettesWithTime(u32 palettes) { +void UpdatePalettesWithTime(u32 palettes) { // Only blend if not transitioning between times and the map type allows if (gTimeOfDayState == 0 && MapHasNaturalLight(gMapHeader.mapType)) { u8 i; @@ -1524,12 +1524,12 @@ void BlendPalettesWithTime(u32 palettes) { gTimeOfDay = min(TIME_OF_DAY_MAX, gTimeOfDay); if (!palettes) return; - TimePalettes(palettes, sTimeOfDayBlendVars[gTimeOfDay].coeff, sTimeOfDayBlendVars[gTimeOfDay].blendColor); + TimeBlendPalettes(palettes, sTimeOfDayBlendVars[gTimeOfDay].coeff, sTimeOfDayBlendVars[gTimeOfDay].blendColor); } } u8 UpdateSpritePaletteWithTime(u8 paletteNum) { // TODO: Optimize this - BlendPalettesWithTime(1 << (paletteNum + 16)); + UpdatePalettesWithTime(1 << (paletteNum + 16)); return paletteNum; } diff --git a/src/palette.c b/src/palette.c index f433f442b..1b38003df 100644 --- a/src/palette.c +++ b/src/palette.c @@ -496,13 +496,13 @@ static u8 UpdateTimeOfDayPaletteFade(void) if (gPaletteFade.yDec) { if (gPaletteFade.objPaletteToggle) { // sprite palettes if (gPaletteFade.y >= gPaletteFade.targetY || GetSpritePaletteTagByPaletteNum(paletteNum) & 0x8000) - TimePalette(paletteOffset, 16, gPaletteFade.y, gPaletteFade.blendColor); + TimeBlendPalette(paletteOffset, 16, gPaletteFade.y, gPaletteFade.blendColor); // tile palettes } else if (gPaletteFade.y >= gPaletteFade.targetY || (paletteNum >= 13 && paletteNum <= 15)) { - TimePalette(paletteOffset, 16, gPaletteFade.y, gPaletteFade.blendColor); + TimeBlendPalette(paletteOffset, 16, gPaletteFade.y, gPaletteFade.blendColor); } } else { - TimePalette(paletteOffset, 16, gPaletteFade.y, gPaletteFade.blendColor); + TimeBlendPalette(paletteOffset, 16, gPaletteFade.y, gPaletteFade.blendColor); } } } @@ -979,8 +979,9 @@ void BlendPalettes(u32 selectedPalettes, u8 coeff, u16 color) } // Like BlendPalette, but ignores blendColor if the transparency high bit is set -void TimePalette(u16 palOffset, u16 numEntries, u8 coeff, u16 blendColor) { +void TimeBlendPalette(u16 palOffset, u16 numEntries, u8 coeff, u16 blendColor) { u16 i; + u16 defaultBlendColor = 0x3f9f; s8 r, g, b; struct PlttData *data2 = (struct PlttData *)&blendColor; struct PlttData *data3; @@ -992,8 +993,10 @@ void TimePalette(u16 palOffset, u16 numEntries, u8 coeff, u16 blendColor) { if (i == 0) { if (data1->unused_15) { // Color 0 is a bitmask for which colors to blend; color 15 is the alt blend color gPlttBufferFaded[index] = gPlttBufferUnfaded[index]; - altBlendIndices = gPlttBufferUnfaded[index] & 0x7FFF; + altBlendIndices = gPlttBufferUnfaded[index] & 0x7FFF; // Note that color 15 will never be light-blended data3 = (struct PlttData *)&gPlttBufferUnfaded[index+15]; + if (!data3->unused_15) // use default blend color instead + data3 = (struct PlttData *)&defaultBlendColor; } continue; } @@ -1008,11 +1011,11 @@ void TimePalette(u16 palOffset, u16 numEntries, u8 coeff, u16 blendColor) { } // Apply time effect to a series of palettes -void TimePalettes(u32 palettes, u8 coeff, u16 color) { +void TimeBlendPalettes(u32 palettes, u8 coeff, u16 color) { u16 paletteOffset; for (paletteOffset = 0; palettes; paletteOffset += 16) { if (palettes & 1) - TimePalette(paletteOffset, 16, coeff, color); + TimeBlendPalette(paletteOffset, 16, coeff, color); palettes >>= 1; } } From 4a04282c0b6a8714fcc75cacea63decb9c746fea Mon Sep 17 00:00:00 2001 From: Ariel Antonitis Date: Mon, 15 Mar 2021 23:58:46 -0400 Subject: [PATCH 070/241] Added Mauville light palettes. --- data/tilesets/headers.inc | 2 +- .../tilesets/secondary/mauville/metatiles.bin | Bin 8160 -> 8160 bytes .../secondary/mauville/palettes/07.pal | 6 +++--- .../secondary/mauville/palettes/08.pal | 10 +++++----- .../secondary/mauville/palettes/09.pal | 12 ++++++------ .../secondary/mauville/palettes/10.pal | 6 +++--- data/tilesets/secondary/mauville/tiles.png | Bin 6069 -> 6068 bytes 7 files changed, 18 insertions(+), 18 deletions(-) diff --git a/data/tilesets/headers.inc b/data/tilesets/headers.inc index 38e74bb66..f495aae2c 100644 --- a/data/tilesets/headers.inc +++ b/data/tilesets/headers.inc @@ -57,7 +57,7 @@ gTileset_Slateport:: @ 83DF764 gTileset_Mauville:: @ 83DF77C .byte TRUE @ is compressed .byte TRUE @ is secondary tileset - .2byte 0 @ padding + .2byte 0x12 @ lightPalettes 7,10 .4byte gTilesetTiles_Mauville .4byte gTilesetPalettes_Mauville .4byte gMetatiles_Mauville diff --git a/data/tilesets/secondary/mauville/metatiles.bin b/data/tilesets/secondary/mauville/metatiles.bin index a71ead8e57b2e0e512ce2057d3a92e1d0fc62122..d1384046582c50a3fe9fc009d6dbbfce980deb88 100644 GIT binary patch delta 28 ecmaE0|G<7jp(KCu>*P1dZ-FF)-rOLWzy<)^#}35+ delta 28 ecmaE0|G<7jp(KCt>*6=XZ-FF)-rOLWzy<*0M-N2+ diff --git a/data/tilesets/secondary/mauville/palettes/07.pal b/data/tilesets/secondary/mauville/palettes/07.pal index fa1dbd296..b74a8c009 100644 --- 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 +16 64 0 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 +168 200 224 213 213 213 164 164 172 230 197 246 213 139 222 197 115 164 148 98 106 -172 205 230 +40 48 88 diff --git a/data/tilesets/secondary/mauville/palettes/08.pal b/data/tilesets/secondary/mauville/palettes/08.pal index bc7cb5c88..3742cfd9b 100644 --- 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 100644 --- 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..5b3c5e6ef 100644 --- 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 +16 128 8 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/tiles.png b/data/tilesets/secondary/mauville/tiles.png index 208a052c538867a6cc6837f5ce270b8d959dee6f..68e2f49dcd230ab4f02a0750dca913f8ed2bedf0 100644 GIT binary patch delta 6026 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 HNDlu$H%7Fc From b7d9b77e4697b84ccefe33056c5bece0c94cf557 Mon Sep 17 00:00:00 2001 From: Ariel Antonitis Date: Tue, 16 Mar 2021 01:00:14 -0400 Subject: [PATCH 071/241] Added Fortree/weather institute lights. --- data/tilesets/headers.inc | 4 ++-- data/tilesets/secondary/fortree/metatiles.bin | Bin 4480 -> 4480 bytes .../secondary/fortree/palettes/08.pal | 4 ++-- data/tilesets/secondary/fortree/tiles.png | Bin 4414 -> 4433 bytes .../tilesets/secondary/mauville/metatiles.bin | Bin 8160 -> 8160 bytes .../secondary/mauville/palettes/07.pal | 6 +++--- .../secondary/mauville/palettes/10.pal | 2 +- .../secondary/mauville/palettes/11.pal | 2 +- data/tilesets/secondary/mauville/tiles.png | Bin 6068 -> 6069 bytes .../secondary/petalburg/palettes/06.pal | 2 +- .../secondary/petalburg/palettes/07.pal | 2 +- .../secondary/rustboro/palettes/06.pal | 2 +- .../secondary/slateport/palettes/06.pal | 2 +- .../secondary/slateport/palettes/12.pal | 2 +- src/palette.c | 2 +- 15 files changed, 15 insertions(+), 15 deletions(-) diff --git a/data/tilesets/headers.inc b/data/tilesets/headers.inc index f495aae2c..c652587a0 100644 --- a/data/tilesets/headers.inc +++ b/data/tilesets/headers.inc @@ -57,7 +57,7 @@ gTileset_Slateport:: @ 83DF764 gTileset_Mauville:: @ 83DF77C .byte TRUE @ is compressed .byte TRUE @ is secondary tileset - .2byte 0x12 @ lightPalettes 7,10 + .2byte 0x32 @ lightPalettes 7,10,11 .4byte gTilesetTiles_Mauville .4byte gTilesetPalettes_Mauville .4byte gMetatiles_Mauville @@ -90,7 +90,7 @@ gTileset_Fallarbor:: @ 83DF7AC gTileset_Fortree:: @ 83DF7C4 .byte TRUE @ is compressed .byte TRUE @ is secondary tileset - .2byte 0 @ padding + .2byte 0x0404 @ lightPalettes 8, customLights 8 .4byte gTilesetTiles_Fortree .4byte gTilesetPalettes_Fortree .4byte gMetatiles_Fortree diff --git a/data/tilesets/secondary/fortree/metatiles.bin b/data/tilesets/secondary/fortree/metatiles.bin index ecc00d7e7092a272c134c4a9fdcaae507c44c11e..1b0958cbd1e07e44e47a8dc2a7f6e04356798110 100644 GIT binary patch delta 56 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 H!ZYrFhG_0n delta 4358 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 delta 28 ecmaE0|G<7jp(KCu>*P1dZ-FF)-rOLWzy<)^#}35+ diff --git a/data/tilesets/secondary/mauville/palettes/07.pal b/data/tilesets/secondary/mauville/palettes/07.pal index b74a8c009..6f43490ad 100644 --- a/data/tilesets/secondary/mauville/palettes/07.pal +++ b/data/tilesets/secondary/mauville/palettes/07.pal @@ -1,7 +1,7 @@ JASC-PAL 0100 16 -16 64 0 +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 -168 200 224 +40 48 88 213 213 213 164 164 172 230 197 246 213 139 222 197 115 164 148 98 106 -40 48 88 +168 200 224 diff --git a/data/tilesets/secondary/mauville/palettes/10.pal b/data/tilesets/secondary/mauville/palettes/10.pal index 5b3c5e6ef..b87549f6d 100644 --- a/data/tilesets/secondary/mauville/palettes/10.pal +++ b/data/tilesets/secondary/mauville/palettes/10.pal @@ -1,7 +1,7 @@ JASC-PAL 0100 16 -16 128 8 +8 192 0 255 255 255 148 222 205 123 180 172 diff --git a/data/tilesets/secondary/mauville/palettes/11.pal b/data/tilesets/secondary/mauville/palettes/11.pal index c73ec2fe8..48166182a 100644 --- 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 68e2f49dcd230ab4f02a0750dca913f8ed2bedf0..20da7198e89bf0890f4ec48261c9372907c2c4c6 100644 GIT binary patch delta 6027 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 Kv1K}x=>G%p*Srz{ delta 6026 zcmW+)c|6qr^MAeHyX#oXTK5$zlB=9)NvxbvK2nY(Eec)ElpMX^?ju))RAP%tC6pXF zSFY0G2(4V}7Rky@`1bqFU-QSzV`d(6J!eYQ-m0b25W~YJMkj)@W*?lnB-IkuvSM0| zH9B5^J)pk8$&#KCffs4N?Ui9AVs$!BsQ3}ZsTF@Xd_CZ$jjVXDKxy(h=|8E=;KS{p zbVM$TQ#ak&djuRF#Wp?sA;xjOYQL3SbJbp$2{j9 z#;!PjXh28P?s-?P<++assA%N0;%MBpGiw{eVQqowk5&z;kEAFvvT_0jwpjLLEH8P zu5E1=30(1dFQwbZwLHGg<@ZC89Mi|e+(Jq8Q;d-i|)rlT~qb~n5H z58^;lPX%svU%Qpztrw*)9IKufsPu?(Ft+BkHuPCAYpSfac+Le*d-myDEWgdMapzJe zLGV1G^@r}#$zw2?OPaVWjb$i-OPg+MPd3EWk7vuGHse_qmUu-9=ADu__RbwnSNBBe zPl!fneJJ1K?wss<+2Kd=T$<-B{gsvx46E|>c+8F?(*6Dol=bT&Eh&YAR-iaXfpL;= zPH=K0ub>pLZGk@FeotNVI75S$`F6P2qk$*_d$4Kd(@Q+HeBVx)B1L03yy^wfA=WW?#WLra* zge?|qt09~TiL7f~s`OmeJwa-}MBT*@`7eFbZ2m)A(d>uq+ki}Sg4CaK^JDqCMHp9t z)^5K{xUdtZ$)_CzLM3Q2o}YFgBy5{nFWsbXV-SaGt^y8iNL{U;gH>6;s@IU6NUqB5 zN-Ig}^imC`NNAyCN=eE^Ji@LHzt>)OHswq3V0+d8EVic{(o?cQAC7d)>96nbJF>>o z!RzUg05j@g$zFjeB5)t}rX#bQdsBZE@=n|Z{651=JpV2lMLP|x-FYiuiD!V-T{A5sR ztjk3|Hx6nIV>lU@D;0NS3+eB>8R<7wc9e$Nx6c&AEk}iY4X%Ho_&!r`M3&;BL5oKA zCZ`R}Q^Vu#C9KByYJ(-)w4q6ZDa==;6YY~t`(Fv&1w_4)WbiYUo zXHC|*+4o<=`dj~#7$P*pI|T}-1u>;iN#5SShNpycVNaPNK%M+EEdgC>DLVjLubK%a zMB=R7;)X5HRmY%XZ+ty*AWkyr`rF+&x79PB9s*Vlas$@a4HJj7hU4?NKh5yoQ;Z{# zbv6Ji`YOmUGzb~qG}H1{z$-VXg%r@ga7v`=xB`xmZ`&bL?Pd!T>#q`td4E$4$e^*F zW7YTIXyloSuB6K-Ukw$+MXuZ}scDzmG7S$+H5+*dwex&R^3eLo8BhE=^{K@`ZL(s6 zy#opD5-+|{;u=8yab7B`=QR#Bm?^q7*u#S%`+zD9??LD0M7Lbn->sB4Rgu{TGoWyk ztBNE~!AbF;ODeaJQ&a_k2KJkk7QwBJPy4^Sx6~`piS#3DTN0ml+1;z&1LR0RlGXU2 zJw8^BOJw0_G4ID!v-ZL+d5 z>%D;$la!qM#F2#ikmy~XTFDH;%$ zZeOoC{lV>N;ZeEw9ST}!Rww|il0c9K7>bGAs z#F}5lc9FnF-=9s(`ZMxKJttZ-i24W}+A^a@RchPnJdR#ChUaMmpvo)O{}4v#8`D)yMNs?Ojmv++6Z;JW zt?Jx&qW0uXw=J~WU77I`OW!cZ=ARZjj}u}yAClz}qk9CdNf+wQDE#^gpO!QMXE{w zvxyRftY6HhOZVbpcYoPTb_lglm59f-snmW%2Z}tvcbe!ZzzP-ftm8w(*&l|2o8V;B zBmyStqwKkK08-hO5#Mv+K0U`)?X8)j+opr=9TN+8UvxH85X5HIXsH0EO<32Ugz zKf_wqji*7EB$kmbasqAWDARc9-W1A6hni_T3^DB<$%QXVF~jX{L<{u53Fn&kvWdbA zkOPh>;MZIqidKQ3jc;7^((G#Yg`~;>pZd&*O2I#nL+}B1DtdSf@}Ol^#f@|#XWK4?@cXq68BIWPLDvf+EjCQVd z4Sj?m%bm^nXjpQ_?{9EP?UBUYSp7SGa?p za)-}%mGtj@K#KFSyHQKHu|Q~!h$}z4W@&BVGMH}u?4`=`Ix>RFuNo);(*q~=&#^Lo zgmkfoBHeE!s=W%(+dY-ZxDMN6s^z<<^BVW@(q_{2;@w>^>`T@jy96h=TZ&;?EUIjT zqWIvnOJ&q+NTI&Nhkv7IzPaZ z0~tvHWB{H9KwW+nI#P-bfnF7y)HnlU!nBekn7K)@6(p zT7Z-a%$^nvkEqE9gq1@C3!7rm9P`l%b6ln9qLVU{V)HRxeMR!7?obE&O`&E;1=T$(g8Bgg z+Td^mn54YAWE{?O$Ho%jwDhaCcRGIa*7|*nWRTUT+x{9^N_Wr8X1fqH?*@IeN3YfL zx7^{T-|XoNt8)|6t-Rp@{(41Q69ax>*|DPT{H)*61P=5ywtf5}l?!BXXS`Pr?ck@m zL_aP{dO`sZr*mdMM7NsSJ=*MbJp%dGD-!FatClS2s9Z&7czgr=~1@7Y;+229m zUhZ(zf9)jV6~Vz$f!!oFD5zy1$&1k_Iez`f{QL!crV)AsOeq68v5QN!yPgy8d-Zg| zV+*x*bmoaB#1IRSJrA#f+ziO5Gpf@>KgOKFJOO+TweBa`Jh`nS`vKU>q={^(&;MzepQ|ETzL9Pjw?*DrL>>ON7(?={x2efohF8hBJOjnyO}3K~ z{VzY6I<4TVJ9Avnn@+T)HgjtJPX5j|k{1B#p<(}gt~>_SUKfARE-!QTKKY7#hJ>G^ z9?o4r=48mPMt>c??CK*&D~t?S;_;>iHaNp)GGkZ^+U_z?!F_bu2nI4|&U!TZH*=FzDe&pi>z0BGl zXwYuFnmF^@7^tAN#8tIX1cRmKCfhuHmKC?_x}zBO4s(lFv1=tOG_rt5X?VH8GmvCf zHdgqc?`jQa%}#ah;~Ehw%BhT$K4NCh$rmSHcm%x;!FSr;COU!RDo;=D3<1u|Vc0Pt z#tjr49BxVl`5?qd$sI}(UeF@bl}YMRcgyc6F$SYiZ(e?7SvoRs{1!p|hyOgDn{lyc zFz{ZUa-4?r43g$yy6CG$xD^m{#F;5CIVoWK(Qm5n<}v*oGHur zOpE}K2Ogm{juq$syww7(^kNA73+DbaL1LiQkXgD|!ghn(Z^;%BzhC4AdNr+ZF-~|s z`7o%|%rQgPV2s2MX+EoefPY$L!1b^qgZTM$y}Ro*W+WQ4tF(_hif&h5a@WG=dhB11(i zkQ>BGMRhEK|A_-HX6d|TG~rsR5|XYXOJhV-H=!n0?` zQT7igJ5wty>|FsD*QzE^A1R6*{!B=q$#8Y>@w;`jFW;x4m#glJ#k+y`7lVWKPFVL7 zz;1=*1iHKIf|i+G^T&7AW)=|1X)QG z7a-75k4^F$lzX}U0-g+EQ_IEFT`t<$oIU|ARk%2?W?(qOmZ6DJFxkhGAK!fdR#u`a z;~v{vLESIBjxml}Kvo|3;tad}_AixyLSeu)8+F1rXI|8A4T1(=_C#^SU6>tu1C}Jm zpY3C@Lypik#)*n&+Y9`oIk_KCn0X^aF>m$oSsz!yT0VEzg96&_g*Vsr6Qj?-vs1_8u37fzDW z4noa6;*8wd*9L~>s9qs_o+D|5ETo@+zbo<@DtcVP^BoYd(NCl|TbWd%*#^UMw! zi7#1|*5iOoY?cXN^3}p+9q;>xFp4objPv7KLLFS0$FS!NzkteAtLHk{%uZB0jpXZI zwNr6Jl*^{-Hcr)!lsbbDD5Z9!v@jw@*>3SsBexOZz`tB!+j-In6;MFl?1coAWrY=Z z(8YPun0(-v8j9s`t`u^qyz)~M3Bh}wzmG2C$&a6o2@`tJWHL(PXUPwR{G0UMr%lNr zFyR%?Vct9sD-A;{AVBci+kR}R z-qH?(9Kn9z#X5?E#6l5jpw7aK3(+G~d$eK07omT`7x0M>xxPHH0;lbvJ6AO##a z_%37tx8S0eIw$)jBqe|U9&~}9i7y^Ta<>2V2MsW{#es8F(p~=I;Zgrf=D?8C1YO^A zgQM7h7`4LBhM4~qT*b26&hoc^O2M+&FjkD)(LPVNic2mGPrP=ikO3ajen!4%Qwt-J5}qT z^K2z-^+U+wC~YGtd0?vZ2gC4@{{7abljy%HOG>^a_Qw=6GJKp6^Z@vz<(Q+U*f-aN z>0zo!&8Ct#23dGBNi3og98f7#V@ zGXS;`jSL@MM@I5*cu9WA{Y_9(QA*!z|{y0bFp4>8y}#r(jN-YbA*9j zICO%GzYJRZ@2hmz_0vmQz~1lL;~ni8TZijSs;A$L`rnc?UV!?TosRnqj`U*1-mft@ zWpL<1cnXJCf3+ltN#?MT(qL4o0GIPiUE{eJ4ns|unused_15) { // Color 0 is a bitmask for which colors to blend; color 15 is the alt blend color gPlttBufferFaded[index] = gPlttBufferUnfaded[index]; - altBlendIndices = gPlttBufferUnfaded[index] & 0x7FFF; // Note that color 15 will never be light-blended + altBlendIndices = gPlttBufferUnfaded[index] << 1; // bit 0 species color 1, etc. data3 = (struct PlttData *)&gPlttBufferUnfaded[index+15]; if (!data3->unused_15) // use default blend color instead data3 = (struct PlttData *)&defaultBlendColor; From 806b4acda2cba48bf5c3c30a27fc37a7cd3001a7 Mon Sep 17 00:00:00 2001 From: Ariel Antonitis Date: Tue, 16 Mar 2021 21:13:57 -0400 Subject: [PATCH 072/241] Added Lilycove light palettes. --- data/tilesets/headers.inc | 2 +- .../tilesets/secondary/lilycove/metatiles.bin | Bin 5616 -> 5616 bytes .../secondary/lilycove/palettes/06.pal | 24 +++++++++--------- data/tilesets/secondary/lilycove/tiles.png | Bin 3652 -> 3666 bytes 4 files changed, 13 insertions(+), 13 deletions(-) diff --git a/data/tilesets/headers.inc b/data/tilesets/headers.inc index c652587a0..949799ef4 100644 --- a/data/tilesets/headers.inc +++ b/data/tilesets/headers.inc @@ -101,7 +101,7 @@ gTileset_Fortree:: @ 83DF7C4 gTileset_Lilycove:: @ 83DF7DC .byte TRUE @ is compressed .byte TRUE @ is secondary tileset - .2byte 0 @ padding + .2byte 0x01 @ lightPalettes 6 .4byte gTilesetTiles_Lilycove .4byte gTilesetPalettes_Lilycove .4byte gMetatiles_Lilycove diff --git a/data/tilesets/secondary/lilycove/metatiles.bin b/data/tilesets/secondary/lilycove/metatiles.bin index 6018ac8ec361c2dd067a8a420e7cf0e6ae7b0925..80561055b38b18a57c4251a8eb97c0bb8b30a1f3 100644 GIT binary patch delta 183 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%0Dm3|)TIc1<~F39 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 From 68068981a4f16a183dd7b329b02777d0de865178 Mon Sep 17 00:00:00 2001 From: Ariel Antonitis Date: Wed, 17 Mar 2021 01:52:07 -0400 Subject: [PATCH 073/241] Fixed TOD & weather fadeout. --- src/field_weather.c | 8 ++++---- src/field_weather_effect.c | 13 +++++++++---- 2 files changed, 13 insertions(+), 8 deletions(-) diff --git a/src/field_weather.c b/src/field_weather.c index bfd7f2afa..0b8427c29 100644 --- a/src/field_weather.c +++ b/src/field_weather.c @@ -110,8 +110,8 @@ void (*const gWeatherPalStateFuncs[])(void) = { [WEATHER_PAL_STATE_CHANGING_WEATHER] = UpdateWeatherGammaShift, [WEATHER_PAL_STATE_SCREEN_FADING_IN] = FadeInScreenWithWeather, - [WEATHER_PAL_STATE_SCREEN_FADING_OUT] = DoNothing, - [WEATHER_PAL_STATE_IDLE] = DoNothing, + [WEATHER_PAL_STATE_SCREEN_FADING_OUT] = DoNothing, + [WEATHER_PAL_STATE_IDLE] = DoNothing, }; // This table specifies which of the gamma shift tables should be @@ -779,7 +779,7 @@ void FadeScreen(u8 mode, s8 delay) if (fadeOut) { - if (useWeatherPal) + if (TRUE || useWeatherPal) // TODO: Can copying Faded to Unfaded before fadeout cause problems ? CpuFastCopy(gPlttBufferFaded, gPlttBufferUnfaded, 0x400); BeginNormalPaletteFade(PALETTES_ALL, delay, 0, 16, fadeColor); @@ -789,7 +789,7 @@ void FadeScreen(u8 mode, s8 delay) { gWeatherPtr->fadeDestColor = fadeColor; if (useWeatherPal) - gWeatherPtr->fadeScreenCounter = 0; + gWeatherPtr->fadeScreenCounter = 0; else BeginNormalPaletteFade(PALETTES_ALL, delay, 16, 0, fadeColor); diff --git a/src/field_weather_effect.c b/src/field_weather_effect.c index db480772c..d8eff78b7 100644 --- a/src/field_weather_effect.c +++ b/src/field_weather_effect.c @@ -481,6 +481,7 @@ void Rain_InitVars(void) gWeatherPtr->gammaTargetIndex = gTimeOfDay == TIME_OF_DAY_DAY ? 3 : 0; gWeatherPtr->gammaStepDelay = 20; SetRainStrengthFromSoundEffect(SE_RAIN); + Weather_SetBlendCoeffs(8, 12); // preserve shadow darkness } void Rain_InitAll(void) @@ -774,6 +775,7 @@ void Snow_InitVars(void) gWeatherPtr->gammaStepDelay = 20; gWeatherPtr->targetSnowflakeSpriteCount = 16; gWeatherPtr->snowflakeVisibleCounter = 0; + Weather_SetBlendCoeffs(8, 12); // preserve shadow darkness } void Snow_InitAll(void) @@ -1049,6 +1051,7 @@ void Thunderstorm_InitVars(void) gWeatherPtr->weatherGfxLoaded = FALSE; // duplicate assignment gWeatherPtr->thunderTriggered = FALSE; SetRainStrengthFromSoundEffect(SE_THUNDERSTORM); + Weather_SetBlendCoeffs(8, 12); // preserve shadow darkness } void Thunderstorm_InitAll(void) @@ -1077,6 +1080,7 @@ void Downpour_InitVars(void) gWeatherPtr->gammaStepDelay = 20; gWeatherPtr->weatherGfxLoaded = FALSE; // duplicate assignment SetRainStrengthFromSoundEffect(SE_DOWNPOUR); + Weather_SetBlendCoeffs(8, 12); // preserve shadow darkness } void Downpour_InitAll(void) @@ -1525,8 +1529,8 @@ 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! } } @@ -1553,7 +1557,7 @@ void Ash_Main(void) if (!gWeatherPtr->ashSpritesCreated) CreateAshSprites(); - Weather_SetTargetBlendCoeffs(16, 0, 1); + Weather_SetTargetBlendCoeffs(10, 12, 1); gWeatherPtr->initStep++; break; case 2: @@ -1574,7 +1578,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: @@ -2243,6 +2247,7 @@ void Shade_InitVars(void) gWeatherPtr->initStep = 0; gWeatherPtr->gammaTargetIndex = 3; gWeatherPtr->gammaStepDelay = 20; + Weather_SetBlendCoeffs(8, 12); // preserve shadow darkness } void Shade_InitAll(void) From cd9276c569f10c4d209967b2e13cb5d1db4b7664 Mon Sep 17 00:00:00 2001 From: Ariel Antonitis Date: Wed, 24 Mar 2021 00:34:42 -0400 Subject: [PATCH 074/241] Refactored light metatile caching. --- include/fieldmap.h | 1 + include/overworld.h | 1 - src/fieldmap.c | 21 +++++++++++++++++++++ src/overworld.c | 21 --------------------- 4 files changed, 22 insertions(+), 22 deletions(-) diff --git a/include/fieldmap.h b/include/fieldmap.h index 5bcbe20ea..d148fa582 100644 --- a/include/fieldmap.h +++ b/include/fieldmap.h @@ -12,6 +12,7 @@ #include "main.h" extern struct BackupMapLayout gBackupMapLayout; +extern struct Coords16 gLightMetatiles[32]; u32 MapGridGetMetatileIdAt(int, int); u32 MapGridGetMetatileBehaviorAt(int, int); diff --git a/include/overworld.h b/include/overworld.h index 918a5dcce..be7c33ff0 100644 --- a/include/overworld.h +++ b/include/overworld.h @@ -47,7 +47,6 @@ struct LinkPlayerObjectEvent // Exported RAM declarations extern struct WarpData gLastUsedWarp; extern struct LinkPlayerObjectEvent gLinkPlayerObjectEvents[4]; -extern struct Coords16 gLightMetatiles[32]; extern u16 *gBGTilemapBuffers1; extern u16 *gBGTilemapBuffers2; diff --git a/src/fieldmap.c b/src/fieldmap.c index b3b35a7b0..dfa617317 100644 --- a/src/fieldmap.c +++ b/src/fieldmap.c @@ -30,6 +30,7 @@ EWRAM_DATA struct MapHeader gMapHeader = {0}; EWRAM_DATA struct Camera gCamera = {0}; EWRAM_DATA static struct ConnectionFlags gMapConnectionFlags = {0}; EWRAM_DATA static u32 sFiller = 0; // without this, the next file won't align properly +EWRAM_DATA struct Coords16 gLightMetatiles[32] = {0}; struct BackupMapLayout gBackupMapLayout; @@ -62,6 +63,7 @@ static bool8 IsCoordInIncomingConnectingMap(int coord, int srcMax, int destMax, #define AreCoordsWithinMapGridBounds(x, y) (x >= 0 && x < gBackupMapLayout.width && y >= 0 && y < gBackupMapLayout.height) #define MapGridGetTileAt(x, y) (AreCoordsWithinMapGridBounds(x, y) ? gBackupMapLayout.map[x + gBackupMapLayout.width * y] : MapGridGetBorderTileAt(x, y)) +static void CacheLightMetatiles(void); struct MapHeader const *const GetMapHeaderFromConnection(struct MapConnection *connection) { @@ -73,6 +75,7 @@ void InitMap(void) InitMapLayoutData(&gMapHeader); SetOccupiedSecretBaseEntranceMetatiles(gMapHeader.events); RunOnLoadMapScript(); + CacheLightMetatiles(); } void InitMapFromSavedGame(void) @@ -82,6 +85,7 @@ void InitMapFromSavedGame(void) SetOccupiedSecretBaseEntranceMetatiles(gMapHeader.events); LoadSavedMapView(); RunOnLoadMapScript(); + CacheLightMetatiles(); UpdateTVScreensOnMap(gBackupMapLayout.width, gBackupMapLayout.height); } @@ -378,6 +382,23 @@ u32 MapGridGetMetatileBehaviorAt(int x, int y) return GetBehaviorByMetatileId(metatile) & METATILE_BEHAVIOR_MASK; } +// Caches light metatile coordinates +static void CacheLightMetatiles(void) { // TODO: Better way to dynamically generate lights + u8 i = 0; + s16 x, y; + for (x = 0; x < gBackupMapLayout.width; x++) { + for (y = 0; y < gBackupMapLayout.height; y++) { + if (MapGridGetMetatileBehaviorAt(x, y) == 0x04) { + gLightMetatiles[i].x = x; + gLightMetatiles[i].y = y; + i++; + } + } + } + gLightMetatiles[i].x = -1; + gLightMetatiles[i].y = -1; +} + u8 MapGridGetMetatileLayerTypeAt(int x, int y) { u16 metatile = MapGridGetMetatileIdAt(x, y); diff --git a/src/overworld.c b/src/overworld.c index 5a7ace7b8..6e7542109 100644 --- a/src/overworld.c +++ b/src/overworld.c @@ -211,7 +211,6 @@ EWRAM_DATA static struct InitialPlayerAvatarState sInitialPlayerAvatarState = {0 EWRAM_DATA static u16 sAmbientCrySpecies = 0; EWRAM_DATA static bool8 sIsAmbientCryWaterMon = FALSE; EWRAM_DATA struct LinkPlayerObjectEvent gLinkPlayerObjectEvents[4] = {0}; -EWRAM_DATA struct Coords16 gLightMetatiles[32] = {0}; // const rom data @@ -601,23 +600,6 @@ struct MapHeader const *const GetDestinationWarpMapHeader(void) return Overworld_GetMapHeaderByGroupAndId(sWarpDestination.mapGroup, sWarpDestination.mapNum); } -// Caches light metatile coordinates -static void CacheLightMetatiles(void) { // TODO: Better way to dynamically generate lights - u8 i = 0; - s16 x, y; - for (x = 0; x < gBackupMapLayout.width; x++) { - for (y = 0; y < gBackupMapLayout.height; y++) { - if (MapGridGetMetatileBehaviorAt(x, y) == 0x04) { - gLightMetatiles[i].x = x; - gLightMetatiles[i].y = y; - i++; - } - } - } - gLightMetatiles[i].x = -1; - gLightMetatiles[i].y = -1; -} - static void LoadCurrentMapData(void) { sLastMapSectionId = gMapHeader.regionMapSectionId; @@ -834,7 +816,6 @@ void LoadMapFromCameraTransition(u8 mapGroup, u8 mapNum) Overworld_ClearSavedMusic(); RunOnTransitionMapScript(); InitMap(); - CacheLightMetatiles(); CopySecondaryTilesetToVramUsingHeap(gMapHeader.mapLayout); LoadSecondaryTilesetPalette(gMapHeader.mapLayout); @@ -1823,7 +1804,6 @@ void CB2_ContinueSavedGame(void) } else { - CacheLightMetatiles(); TryPutTodaysRivalTrainerOnAir(); gFieldCallback = FieldCB_FadeTryShowMapPopup; SetMainCallback1(CB1_Overworld); @@ -1983,7 +1963,6 @@ static bool32 LoadMapInStepsLocal(u8 *state, bool32 a2) (*state)++; break; case 3: - CacheLightMetatiles(); InitObjectEventsLocal(); SetCameraToTrackPlayer(); (*state)++; From 1ebf94af90881d66329cb1d3d1a0eeddbba38557 Mon Sep 17 00:00:00 2001 From: Ariel Antonitis Date: Mon, 5 Apr 2021 18:22:28 -0400 Subject: [PATCH 075/241] Added more Lilycove window lights. --- .../tilesets/secondary/lilycove/metatiles.bin | Bin 5616 -> 5616 bytes .../secondary/lilycove/palettes/06.pal | 4 ++-- data/tilesets/secondary/lilycove/tiles.png | Bin 3666 -> 3674 bytes 3 files changed, 2 insertions(+), 2 deletions(-) diff --git a/data/tilesets/secondary/lilycove/metatiles.bin b/data/tilesets/secondary/lilycove/metatiles.bin index 80561055b38b18a57c4251a8eb97c0bb8b30a1f3..15b22292776bcba749ccf955107603eb5fec08fa 100644 GIT binary patch delta 56 zcmeyM{Xu(!0K3ezrfF@=3d}0glcuLFYg*REq%f_CS%FDmM$`19$vW&;xFFI@3e(dz Jb8$T51prRp6IB2J delta 56 zcmeyM{Xu(!0J{v60+R}}0<+4rrfF@4k|-0Q(}lOZ~^Z@CltktR2}k0!|# zioTI^g>)e04CVKI{)gvzJtHy`G7Kth!Pe4@5}mh@>v&uGUs=`@)z*$r#S9CVe{XY_ zad94sKYLPrnycGqlgu3PeIhI+Is$x3`zmFsmeICR20DU=7e-*RZ$NBdk<CtbKP_|h%UZ|J=%|_D{i-dRyqqJAeolV$ zl7~IPQJYfkGD+we=WPl4P7b^Px5(jrp8Sf>VZ(EGzwU&Y7~%8_&gqT!$k#19Ld7VA zhC@QKApS%cOF&vDe;L0Z4B8Zza$FPqW2dY3OgY*tZAu+_w=-R%o0;M~EordKhJBFW z%?U<|xe}+cJ{Y`}G!2+&8d25=tyczzRetfN=Zc{OP?XVPE1Lv^Pg$uExB^Ue=&$Wu z?SRGbC!@{Rr1+i~aYd(!@T^V@0^wxM8%JeH0lUXrr{i~H^xNK-C>JA`6kOX#1i20p z5oKzgm*6c&nOtd!h*=YoIFYVfeGs&8c-g`%l!4DvlGLd?r=w`F6dI4ah+Nq;xc~J6 zrG&SnRPwktgJYgAx$|01B7{^rQ<{WSkl|H5o!u zQXmbI3nC6H)VE?0%KZKhd5ANNY&51*;Y(ryYVOtm2HmTl5_8?NXLndg%4t9+UDyI| zxr6w4C?%Wr&piz5nudXad!k_{cfS}#hdm+K;@d|^dFKwq+EwKFg-a8P4) zI0*5|6TwS3009NjLe9S?y_Z;)xG5B)b*qTRNlK)MJ}U{WJuhq7Kd-Fa=?j_~Lwf#d zkkl1GM@41j42Md2xU_`ERmL^qC#%B}GY>Sv<=l;(dbMvY_VAqx?n$1sjB()q;;B(UgLVCH^S>m4?e$5no2n_)T z&liaWq#=1kVFkPm;3m1cirIehef40Q*LblY9U(;e z2Nn@6bPQoFBahO`(L~o42#$rBB?aCuNc;(!J*nZ8bX7J?(3z z8G_^!rg0FJ(B8Z?wC53r2FCa!`XE^?DyOt?CT&hF=| zZ~LYn!WAjYp)X#k)$ZC@@Zx;Iq4x+2$c>-@d&;ST1~Hs1kbKP5#MXBch6p33FO2n{ z`$&)`aFVpulUgKKZw>ajzsugB)Z89BASgPK3S2oay!0jAixJD{;4qaxwJxm0KCm8&y-If)IaS9O?aQ0MsUr*wS%sf)-(f0^pO;$9v znh9F$h$+at1F%gSKX+#Rd)_8{+oR{|GK@%pMcwvZW`+=a4d|MBS1rxN5VBuLQ^ zRLjS?UBe%ozWBw;T@(x$aMHe;&i1-V0HNMB5$=1C)@Iqt>05j!uRAJY-s{DuLcWW( z5Er5C$Rurgeg6=Jv6xM=eEioWd`DMEjnh%IT3D(#!a+9t9|`2P?3tABNOqlZ&lSzK zACw=di*=!$E{VL#;q690Vj6jhNq#2$2m0z~ZKnr(2W8P0IjG-{wbKG3Sb@u%3+tQB z!NXx4En*1vDrz|_q%l`eLmILE=s*CO9q7M&dH10=ypeBMeKKg>$lHTa#gctu^l;#- z6&1eknUoY6BKCJDumay`R)&FhhMX4PjZkV3%=!}lepLf}g-xChRTzvmE_8%H<-2?)_+;K*8KHB}P#*HzsS4OQGaes{ zXTKxJ=$d(j%gy9q--Jb0hVYRy_=2wUZqFP2i}H7}VWI7bxbeiAdQZVg@#7GW%2bRe z-&9!E&UNv<%{q+@4s&nCiuQ(Tw#zr~lRiKXQ`l3X<9Sc`X}tHP(1OoS9X-8|2J zEmhI;dq0K~5^oa~$9K%BSF1V)RV`fI^J5M+tC%pT4ON3xSp(W}!n<^_;$bs55*6^F zjR05;5X-;3S=0O*(oh)rS_@us0HJ5VYQ5MIhtVz=dHSq~fDMDLnsCbQ2hUAj5t8K2 z^**scn!${CGI;L;bQISE5YssuNeUnsNo!F7P3;x#Z3LaVahALu2WVpk`pK5~ch|i9 zLuc~NAH|wDBwl(qg8>zHf!|9(p7-9ugLEWlXlFg;C+&ApLsJPkALb3}+cSBV3s6Ej z*v&F@WwW(|c6)nE&{A0{ZjstH=Yb__;x*xxFLoSz zbM4RjDzHkDEQegarq*lJDX)$o6v@Lp$=PN#V*YaX09Jpk9*EdwkN~$tJrdj#231=> z0lP>mb|MNFu zmgfOl{|s%jH$8>!00_Rw-u`}_I|;nW$PO|T%%R~42G<-ot7}S<w7JO>PEXci<=>D<7Kl?HLAwwt zZ=#!{%X+c8yN|j8BvI0gbW9G7L#6 z8K`%>?M^!pB?Wgog6((|pgqRJtuBk8Y;3t7%c2CN^o;}2Q{NsKtupxw1KLnGU4@fh z17_A`dB7XdR>N#oC5_F&2yrvez>At+3xm&|yY=M~m~;Xne7@+!b{23vLpbjW(d<&} zLv09C;;e}ZZRsf`UsELWW8N+2{y883L0-$x$0nr;TOL5PHWlJl1FGqy=}Yj#bj8t3 zjtexMNC&IBQ^EXYDxm#a@RIh-qI0y`?KqOYcyBE`COB)X19+Bcb9e0Z`aCkWS%*c zIMkc+6(#o|s+mmnI@LG V8u_TAr5N}R+hb0amFCoh{{yKYP{05H delta 3605 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 Date: Mon, 5 Apr 2021 20:21:56 -0400 Subject: [PATCH 076/241] Added Dewford window lights. --- data/tilesets/headers.inc | 2 +- data/tilesets/secondary/dewford/metatiles.bin | Bin 6064 -> 6064 bytes .../secondary/dewford/palettes/12.pal | 26 +++++++++--------- data/tilesets/secondary/dewford/tiles.png | Bin 3810 -> 12295 bytes 4 files changed, 14 insertions(+), 14 deletions(-) diff --git a/data/tilesets/headers.inc b/data/tilesets/headers.inc index 949799ef4..b9a97c9e4 100644 --- a/data/tilesets/headers.inc +++ b/data/tilesets/headers.inc @@ -35,7 +35,7 @@ gTileset_Rustboro:: @ 83DF734 gTileset_Dewford:: @ 83DF74C .byte TRUE @ is compressed .byte TRUE @ is secondary tileset - .2byte 0 @ padding + .2byte 64 @ lightPalettes 12 .4byte gTilesetTiles_Dewford .4byte gTilesetPalettes_Dewford .4byte gMetatiles_Dewford diff --git a/data/tilesets/secondary/dewford/metatiles.bin b/data/tilesets/secondary/dewford/metatiles.bin index 728d5b6325cf60c959b13ab469249f2c6f39ba6e..d99fd8a3a80be7defee72bc7f5d4d2d9f3f208ea 100644 GIT binary patch delta 24 gcmdm>zd?V)Q%2@P$;T$YV60?5lzMD)3X_j00FD6)q5uE@ delta 24 gcmdm>zd?V)Q%2^X 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 delta 3755 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 DIY5C@ From 5e3fcaae15c7432b7b3e698b8dc3c95cdf257936 Mon Sep 17 00:00:00 2001 From: Ariel Antonitis Date: Mon, 5 Apr 2021 20:39:37 -0400 Subject: [PATCH 077/241] Added Fallarbor window lights. --- data/tilesets/headers.inc | 2 +- .../secondary/fallarbor/palettes/07.pal | 6 +++--- data/tilesets/secondary/fallarbor/tiles.png | Bin 4653 -> 15247 bytes 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/data/tilesets/headers.inc b/data/tilesets/headers.inc index b9a97c9e4..5977020be 100644 --- a/data/tilesets/headers.inc +++ b/data/tilesets/headers.inc @@ -79,7 +79,7 @@ gTileset_Lavaridge:: @ 83DF794 gTileset_Fallarbor:: @ 83DF7AC .byte TRUE @ is compressed .byte TRUE @ is secondary tileset - .2byte 0 @ padding + .2byte 2 @ lightPalettes 7 .4byte gTilesetTiles_Fallarbor .4byte gTilesetPalettes_Fallarbor .4byte gMetatiles_Fallarbor diff --git a/data/tilesets/secondary/fallarbor/palettes/07.pal b/data/tilesets/secondary/fallarbor/palettes/07.pal index 724a8f09d..f3a702073 100644 --- 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 3582d1d030d978025a2de580831db536aa401cf9..06b86ff956176ba4e616b0abb47c930de7c3aee5 100644 GIT binary patch literal 15247 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 Vu)Xnzs15)C002ovPDHLkV1n?oOm+YO delta 4604 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 d|EGB0c-z?>U2!hH?=i;0niVYxmf@_&Y9Oh^C# From dbd86a3cc328c40c9c6e46450782e706f54c29c7 Mon Sep 17 00:00:00 2001 From: Ariel Antonitis Date: Mon, 5 Apr 2021 21:05:39 -0400 Subject: [PATCH 078/241] Added Mossdeep window lights. --- data/tilesets/headers.inc | 2 +- .../secondary/mossdeep/palettes/08.pal | 2 +- .../secondary/mossdeep/palettes/09.pal | 8 ++++---- data/tilesets/secondary/mossdeep/tiles.png | Bin 4111 -> 4115 bytes 4 files changed, 6 insertions(+), 6 deletions(-) diff --git a/data/tilesets/headers.inc b/data/tilesets/headers.inc index 5977020be..dfa58de30 100644 --- a/data/tilesets/headers.inc +++ b/data/tilesets/headers.inc @@ -112,7 +112,7 @@ gTileset_Lilycove:: @ 83DF7DC gTileset_Mossdeep:: @ 83DF7F4 .byte TRUE @ is compressed .byte TRUE @ is secondary tileset - .2byte 0 @ padding + .2byte 0 @ lightPalettes 8,9 .4byte gTilesetTiles_Mossdeep .4byte gTilesetPalettes_Mossdeep .4byte gMetatiles_Mossdeep diff --git a/data/tilesets/secondary/mossdeep/palettes/08.pal b/data/tilesets/secondary/mossdeep/palettes/08.pal index 07d79210a..34e9db980 100644 --- 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..818ed6aa0 100644 --- a/data/tilesets/secondary/mossdeep/palettes/09.pal +++ b/data/tilesets/secondary/mossdeep/palettes/09.pal @@ -1,15 +1,15 @@ JASC-PAL 0100 16 -131 197 98 +0 32 0 255 255 255 -139 205 123 -98 172 98 +248 0 248 +248 0 248 65 131 98 123 123 148 98 98 123 65 74 106 -41 49 90 +64 72 104 189 189 197 164 164 156 246 222 156 diff --git a/data/tilesets/secondary/mossdeep/tiles.png b/data/tilesets/secondary/mossdeep/tiles.png index cc4591f8804be4f05f7d9e3de1ef91d110a41c43..3bd134f1a4578eb3aa39f07aa40d661c158a30ae 100644 GIT binary patch delta 3965 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 NhUR3>3Ioc6{{y4s3{U_7 From 898a09ff34436579171a44da55170acb4909e180 Mon Sep 17 00:00:00 2001 From: Ariel Antonitis Date: Mon, 5 Apr 2021 21:25:36 -0400 Subject: [PATCH 079/241] Added Sootopolis lights. --- data/tilesets/headers.inc | 2 +- .../secondary/sootopolis/palettes/06.pal | 8 ++++---- data/tilesets/secondary/sootopolis/tiles.png | Bin 2695 -> 13423 bytes 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/data/tilesets/headers.inc b/data/tilesets/headers.inc index dfa58de30..9ba29a2f4 100644 --- a/data/tilesets/headers.inc +++ b/data/tilesets/headers.inc @@ -145,7 +145,7 @@ gTileset_Pacifidlog:: @ 83DF824 gTileset_Sootopolis:: @ 83DF83C .byte TRUE @ is compressed .byte TRUE @ is secondary tileset - .2byte 0 @ padding + .2byte 0x101 @ lightPalettes 6, customLights 6 .4byte gTilesetTiles_Sootopolis .4byte gTilesetPalettes_Sootopolis .4byte gMetatiles_Sootopolis diff --git a/data/tilesets/secondary/sootopolis/palettes/06.pal b/data/tilesets/secondary/sootopolis/palettes/06.pal index b9e93fa5f..6bb529da6 100644 --- 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/tiles.png b/data/tilesets/secondary/sootopolis/tiles.png index d27c817f005a35cbf3850b42bc10d5a612b3d1eb..f9a6be2154a278142a6091b064c224a6cb95d9cc 100644 GIT binary patch literal 13423 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 From 2f488d685be3ddaad963110e777e3251951700ae Mon Sep 17 00:00:00 2001 From: Ariel Antonitis Date: Mon, 5 Apr 2021 21:41:57 -0400 Subject: [PATCH 080/241] Added Pacifidlog window lights. --- data/tilesets/headers.inc | 2 +- .../secondary/pacifidlog/palettes/09.pal | 4 ++-- data/tilesets/secondary/pacifidlog/tiles.png | Bin 4718 -> 12672 bytes 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/data/tilesets/headers.inc b/data/tilesets/headers.inc index 9ba29a2f4..dae108b59 100644 --- a/data/tilesets/headers.inc +++ b/data/tilesets/headers.inc @@ -134,7 +134,7 @@ gTileset_EverGrande:: @ 83DF80C gTileset_Pacifidlog:: @ 83DF824 .byte TRUE @ is compressed .byte TRUE @ is secondary tileset - .2byte 0 @ padding + .2byte 8 @ lightPalettes 9 .4byte gTilesetTiles_Pacifidlog .4byte gTilesetPalettes_Pacifidlog .4byte gMetatiles_Pacifidlog diff --git a/data/tilesets/secondary/pacifidlog/palettes/09.pal b/data/tilesets/secondary/pacifidlog/palettes/09.pal index 780f5b0ab..4f27efece 100644 --- 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 9fe620e1efc7e2ae908f7e145b15500e0048d378..31f78891d4898aabd5c2912e963d9bf1c56d19c1 100644 GIT binary patch literal 12672 zcmV-`F@Mg9P) zaB^>EX>4U6ba`-PAZ2)IW&i+q+O3;uavV95h5zFeeFW?d90#k}++dF1-$PQ=(p6>F zVU$v#?at)5@G=N<}??}_i}^AGiWy?^j}`S}6MU$4*KUw5`XKg9NRp|5}7!tYnoo%QqnTG7{qQvAFg zzW(m|*9S)ZWjkMg;`+Mm*Tw(*dp3fx3)f50#gjtv?`!;q6MtJ#h~IaPzpkk7(EYE!eu>|` zyWM*}yBoPW!d1UE^S>$R3F_P7XoApHCeH=0X5?bOK1B6EqCe$2od)#EG8r};A==F)Zi^f3xPN` z@-tX@OgT<65Q-~tv&xuLswAgH-J8!?c<+rReqIJ%NJL3B8L8=MkgS|buJl`@goZ1r z^DVbtyY2QnzOxp-+V;1s{h7Ic&RY1&T6~Gp`|M}dc-id7C4%6jC}(6W=0L_x z8K9t}a^_peIVy9?neQ>V1a7g)qU7wLjFG{7LM%6Y=k90b{x)xp=>E5Pi+`0lr_}v_ zWX>sdzhv$|^Y#~6+vCA)dI?e&5>pT|(SE#X#M#$8JI6dPckV6jXtlKC6ITYkDs3H= z5?-{m8^}UVS(D%WxD?6`Tl`c?o|EgOS&gWV-s@rg1vu-=Hdjo35a-p;BuYNFRchul z_4<6AmC$n@V*tT3jcMm>08#mB`&in0CL+=N+;C_jh_Ma*)CmZQv$75so~&qEVo&k% z!QBafFY}(;(`j|CSqC9q?QYgefNBc2SAFR2PPl=8K6Ki3rYtmHO5ba=MUMDtdx@JP ztM?}hccvCNDDYHAgf2oq(epVof)AfxM`TYbV~5qJ*jZWuxvI zCIxu1hXG<9o$8|)&&+K&e%NWOvMEr?FYI+#PhU6IvCE>pS_(~fwYm=XV0)o;-Zg6) z$Kq^f&Tj4qdvD2Pf1OSN&)#`sEc2XYJrJ|)$DD;gE#%X_R*61gsm+VTqz9~T7b3w6 zc^pXd9J0HO{m*STvEP~LG~jd?xvZ4SR(&CjcIqNZ-nLGhaTEtdlpcCVGx2X}_DhFC zb$!%MmVSR%kH698$u%cLL=u+pLzjLIi_0W!VErjXl<)(FdBC|ZmW%=%ONr=LvUR{+8)d()xA%;}qfNmh@ z$x>L|q4QV~JbhuFSwWaF$|)n;v77)g%2FSPG3V4xfQjh`B|*z18^qFA>YchSww)y; z2Bj3n>G4vY69B4x0gIJ_*`u^c{jH;1lWAf|VupI8PcX}7YU7sUGO4kc=@9~Gl&V4w zhV4NOQ&Q@><-x8~O4tofEhM~AnJuhw5)3 zwDV<#?Be1Ab>8H0!uG-n4Z<8XUfeW=1sU&a)r2}SsV{(`O2e%?Eg@cNNbfGq7HptB2~{O#m}{N;9QH zdjvIHWPdivuGAS4>_%E4aeIJ++^<_HfVx3Ga2KdAyJ54|3F%N@MT?$nbYub!yhPxg z`-mNv-QINrPoLaHRFQ-RZExC-Dm>nm0#I(Sx3&c_Y`AEs!D*^|YVR~Y`f(0_fmspE z#%&rKif03=Gpy3GSQajY{&_UDx?eH7D~r{Ct#Fmp&r z&`6P{B6Qq>vdxeky*6`t)q*g-L48MapB*aX$lC4!vdQl`uG)=fFDknOl_Y9+fV&O2 zphPH)IKop@4$=l8olzMGFF-5L)s7e}gZUx4dnz&w1{;&2L8*XF?12DPz5v=A>^}fQ z)Td5plNP6UAo7v0KU$V{?ate6n+H~&)T_{k&(al#5&_LDbIG)?C!zE#<#7~@K#MCZ zX_M^;u%Q%cvM2cij>BQkcPm*7F zGr<5$4cboyRp_BD6lub10H4rRZ4U2LmL zmSyxcjl)_bjQm3BKtvhKfT~F9qrRY%7C|Ph2pVo&8Pqc9)?R1~&)AQRz`NMaS>4dc z{!Zl#?V+tvQX}wsdiKb5s)o&NYBJfmRwzgM`tCwyQU5PDy;8sJ8Y({WW)swS)XE~y zD6oUHMvT($S_vA`E5;}_y#`q8)maN*2yL_-D`-b|7t}Fps#z(*15kdG7-b69q(>~F zc_d3&It&VWhB{^{4WCx^7O*442R=nMI-u?Y_)~I#2MV4R*6(1t&>is$eGqa)b*dr= z5|GF^Bu=w37kCfV?lQr^Z?U&#nvYTtR+P2^rGtDJ)js%+He%^}L2lUFo3THpoq}!A$7c45YF9 z$Zc(Ja@N1A0-2c)7;32N@@XbbER9GrL>E<1DZkP4O{0+T99!QETwQM z-wjvNqC(v;c?*h%Vmjzk?q~QlG#18@t#zRtIG)hOR0HS}%*TPJ+VCM@HKvT=*qD6a zPpU3blcVF0d`&2}s?XuE=IxzyOxz_4Fb# zos@ZLhYUa^&;+X;twE6BHw7$Q_U(ZJSc#NJoM5n6S?{_;pC3B~gPhi%^;_6Li9ir8 zPtqSF9lj8wd_i*1K2n~MdNCokR4rfIKn5L(gRKiqsb=W70i;}pAUU9AWn5ulnWSDH zA!#`64NkyJ7~vXH#4=$<(3Lq$SV3EqCl}{4U_2J@jmBV@IPjs!kecIWYnm5g610I5 z1%LsKHqe{g4nQ5Sf$16;rqL0wvp5K`4NPLOi)^9*BP0Zju&k!R8+upw1W*n{ygI2_ z3lGQMI-VPC7huGEU3xQ0AEX5)?9*ThLoyr8P$1v}TNfOnJP$q5gCr8QPs0*{E~P6) zFr1f*uBdrTFMbGX0a1h=EmH6kvO!qV0+Q7>z<=r(sHS5qMZpOg9Q8r3H9!zM1p=VJ z;4<*SPzx%CBxj zC;Ufl@oU850CT7Vlh!5-1GRbz@1y__EExXp4-tpP>y{xtB&eh-#-+$+p%+)4opxBZ zEA2&PQn+cM)+fkvJ1%TyS_jFBQURK~gy?*pK+VIN@U2dnV&7##5+=C@H4gz2IV-4S zPl%MH9a{2`yzygXUIeCYSiLTA*nXb z6U7ieY}k;uAS2gv69cY}HUS(^2y&1U$Y-K_wVGSGJuNDASz$H;Yitai`YIlfA`BQItJ(O1~f3pFasC|Yf|PCTia>WC)s99p60mDxyj_Wh00gs!t$AdCVu8et@bVHkD3U9q zXJg#925v~#!-pLA$5!JJA>H5 zq!TNmI&c%D6Mbd4B=r}z5a`;+Z%s$xy1iG{@3;_F@D)rCP~YrOpL90*ngGDiv!Tt3 za6$Bx5u~!JL?7U6*vYzs#OLu2q-uTV}y9AEWN|t8att9P5zIPEQIs6HSv-rr+iUpPu#TQ@WAj; zmf_pb9X|Nk64V#|pAtYJ_xl_hp{a<))?s77Y#msWwc|s;TCAwBV|IBBl29>ER9Z$E zay#6=(zkKnN<&9!(<)d_dJC+2ss)+GN?Ucf<{-oY@A1)uDfB_sDmqPr62$shWm6>K zBAXMp5WB1E~*A0K^vLyf^Nh{nI%)~7AJ|8q814`6vt+=+Uzc`&4MwA z(TnQx3oGgmfYY;)+4e!byP+p&Z7n2*&ujcwT9UIf~u8BVI zEtqFX4WKM07pQ|ksyr#d0kR)70^Wnx)v<`CY)BRAiTt%&kOT4q)Hsq4TZFMiI8Zf? z?um$xoOCe3wa8qd$2_n~LZMy^19&>10X!AlOYw(@eWSd0NE!+t9XzTQYPkIc9CCo( z{p6E|dbW3T$kq3zwDBa$8m6FNIW+rjRFL$chIK=OaagHk;FKG4In7r)em>?2bnPJR zh9;Pr%_?#%%_CDOaNJ+RP!E`x+Hf1JoHD(6hKvHy95RFBAcxT- zu;^AVkZ<2vrWK6ry)~0h_!PR!SjTsAQzqgXWnhj$b)Y%kDS*frr(>cm9M zfEm;v2t+$D?ZR+k!N!CpdT!JuqM*J=uH9G~JMqg)rQv;6pdHw^+2W$6GapNfso)|CJyR4wcwSA#voXk=-q|{ zN?F5^_@@4?;Wp6p>}Li|YQkp>KL8_&?P>&utN|V%w1>x0JxykJ)--(c`+znSgFThcsQ2I-x}WGQNiRw ztyeWNuoRr;5fG)At*A9vRl#MHsA1}PnS-!3h~^%4@!?Ai1U62cW^HPDH|R&{M_Ig4 zac&cfEvYh=zIY8*8eTMU*Dhe|C)hu7#iG~730{{cnOxB_9y zJD??+C6_mnyz{=!ZRs7((K%VeK=QbE1!{4pV6z5F0|}|YfK51>%52axr9zt{g5ZbC zzM>2~+4@aYt=gSNB* zlZH$>(||Ms)U6C;B;ZKOQKrZ;vgBrP0e}loC`}Iv(P43?3O$3!BXc2Sp*0wr*XWM+ zX7zXkoen)ajRc2ObkYb&O&y9L2#qX66h7Z{cx_`s*%a`zu|N?y*x{GWe+NP6|2Z!~ z^jwPh5f%!*;ea&b0{m$+YV`&nUjmb0TA`A169M7|K%=C2swI0y%%6a}ku9Kbc`$t}UB7wJlZ)U4Bj}c^` z0V^u90U+@}S3(`3hJn)qK*0A*$!j;`s5SDSU@07xQLs>b#j%_n57T=NURPU-1ba$5Uavs%@J7=#k{o)Y?q zdqNZxZk;-q$bt|WaKS9C>fyEBKr@PxPZp{7$3tsVE3&TM*W zAuXMvqB#*)aNQc3^1l;1p#z8>(cC2C*D~8q;$rAnU~Bdq-ok4kcL9prn#$oY-bphO zmjWWkuH4Rv+AC1?Ad_JJIYi;)>$P{MlJoHzdAwG zpnqN+iA^YykChoFA1HyfVr!-Cn|Eu0z7Kv+08%DG^2 z5>4Hub)r~CMAEAo)AzL8yu_a9oVwBN9jzW_TU#^=k z3QOMbXm)&oKiExPM8Spc162T`m}=CL#mvTw9+c6;L+{f-w=f%iMjcUFu$KHd^+5M7 zkNd|f`P0RXnkB*2fD1|m4lLjD>yZ_tobO0?i+ZH3WlsolEuf)o207`!1cC3gtP28me z)&YEB+gpPw7J3f6h`vF3L8_zsRpSxV$!Aq5gj$=PQOPzP(4(`uf}(q>M~VyJ`TJ$g zNa7(>2<-?Pi_VL&5WL~A6qpu$NV>TSv^4Q8_dNt54~aA{0TgTHiJAA@#(9@SseCRO z9et(^r^>2FTP5s3t6(G{0@J(6{XfL-`@8$?g`|3w0!o@qoCFRT(gA6T?0Oio^nh7= zRX-8Ncf|4eq?7v5@l#0^_e4KY1Gt<9G=NlaFgU&FlooVqg!a~l|6*P4k4Wmeh;C>a ziH?LE&(S`S!JrEy*qN^~5u-!=j=?Hq!`s}F5P=U=le4$h5nXZRJk{*)7 z7@fEOzI98;6PG})V7@XP3Jm^y&-HnjA%%*7IDiHOAU&=#lJ~pVT!jMMlN+lfF#|Ml zKrV3A>I~9=Ch!441oSm}ALSv9$kueQVh{>(H@Ob!RTP2d`2r0ysy-QQ8%XO;E z8>XxkA?2!`icqjBq6XO6L`M(CtOofdsafgWq`_k7?%iK$xE(vy2qvLk8cTP;vJ~n| zkJf;JSOLV4#zh_XgEen@9%<*KXE$MyQLdcYdqfXbmd_BXylJk;g{T$Oir0gARS$hA z+~^<$1~x+N>m0G6kMcW>3{VmD_y*Q=EC#R~#HVTi1L|RchIQ4z7G;PeUnoH^YHQA| z$)3aT=yZd61xw!nBt_faT*}wCVG1+hTxoGb>qtzZbQ=Izpoyg8Gd+vvh6+nni$O!z zQPF{&P0 z^5<3G^ZN24*mz{f(bVL2Jj5k%uzUTJZ}%vv@@_(}uGM`3hzqQSqh=6KhgHIlIe0 z0Q^JdQeq&GZC??DR|5oih&5k5$Ec9uE`Sk!(oq>0V397b+?IyZLzn2FNz_*Q+5pSypuPzY3wQc|j+)s7FX*4R)kw$@OFes%1Z9sXBVm%(}Jw zISQI{0219W$Aadi=?F+9>7obp`q7D{7_5E-=sKGFcRgH+Ak)YUL|P|!Q4ya)XHNm< zrV_7?5vbH?@9_ns5SY>AH#IqV&qSvx`321)+caSOKCcICTtj`Mu-hzp{HY)e&{Ic) zd#n-;Zw-%oz#EbsJsB>olPNRP5DjH8g)B8rx1ejZx)&9Ytc%r_G4~o;@!6yQ4aUf9 zmoU{+M86Iwu!#iTyMF`Rs8)9d>us?B00D$)LqkwWLqi~Na&Km7Y-Iodc$|HaJxIeq z9K~P1s7S@Z3L*{}s*4tiia1IYi(sL&6nNgNw7S4z7YA z_yOYP=A`H%CH^ldw21NGxF7HCJ?`EC-e#34hCc=oiA@z!H*3L4brhDyYIllvb4#18LfiyZDD~e~MfZxhi1fSU?R5MB5Mk2fw>Dic^zL zQYa1tUM%Zl6bSADt%hZNA6r)I1n@lrS8B&!YXY;Mq>RIO`ldWEa0~RVIlZ;_aryvcsjKB1;NTD#D^d2k%e#BJd;9lHyT2d0 zv~tAU-0m#^001yhOjJex|Nrjp?%v+s&CSidy}higtel*ji;IhMb8}*1Vp394K|w(= zF)<(@AP^7`0000(^x^sd0004EOGiWihy@);00009a7bBm001r{001r{0eGc9b^rhX z2XskIMF-^s1_3Do@jOj^000r=Nkl7%Smd6|RO57_o2KH)E@+!a{61z!r z#|dV}WHq_)WsI<^3CxZRW0zgM2#_qtB)bBCL_iJ`9gJKS*a2sglRdi#1G6B5ry{hWwM^mEY(*iD`)MSbE>wi_fdiAQBvaBh| zh9q^eZ{50O%7yS5=bX{6k`UACTWLrJP&{|;TnzA-yG)5O&+}&jH0@Y{?UdX?A%m&l z_{^CJP%g#_Y{qNLi#%>yEaG1mGM;0*Gbv#CVx)joay+e* z@0Qq905%dU`_S8sd@)i`tl3_u>Ib~WrUQNm$tY+HDS#$$fej0!;LapKniu~D35Nex zSpjY_modsY{Kc54F@e{SO7QZ8c?CoNL&(`H&=gcqEOCaJxo43e?X$v`3LqEb`ss9} z;1;DaQ-E7%1+y_{?Xwle$~9)&>}(SOsl`*KQtEUJPzth5ru%@w%_)06C}`RY+Rp+4 zEO1l*7pKP+lv&gV%w|z87j2e>9toNNxRP1Yb$*dPon9DGkZmwC3N(FmX3e5qLlXV>cK;6{Ut}=r3`OFwVDG-z@ z%yG0Gc;%4U6^GRTP=n!D3II@8%tS^tq(A|R*~kt`W$5@UI1@(zK&Fj?h2@1Y04flI zQ?iHbpbP`zz&JY47HhwC!A5|u09m-ZQBe+U@(HCtfcm+Mi2(WpgC>Nk2{!3>TvP$J z=M`~W102THhcf~gjU?7bjr zhYYx1)dTvg@svmoZzyn*gi|-$UnQwV(q%QHQ$+sS&_r6UJtv z?_sA}DQTs^fKmXlaABHz^>-I%0f72d{*bG12xp_z!QFJg*W^;xb%MI$A#D^`$yW{@ zmpW$6y*34KX%rB0n2c(Uh!(64r5bEET=Ymk|2!Em2*@)TfCRgh54|@L5c=>7##L~P zEq?Z!M8Ku572s_Hz;q*!qW}&o$fc)=fPqkeKWM-oB3}sr<#AzFAz+FneystQw1i8l z{yPYeYA2!rKTie-4d7Y=SAeGk*pqS%vI5NU{Q>&co)G}+;@TQU56?7UN-_W|S_Ck) z2q3Bcv%NzBln$r@3#$_F?Af6JdK9Sl4FHyY0L)*W2~d?0A$Vp06zWa|$oC-0@ih~$ zM!>UhUqJ9LZ(}m=ZwS=~u&Dp*C}3_1AS4CvnfDKQK)XnA$7KVM`vC$}upTSme47RV zrgF)&0VP2blEb_(R5nbJWhIM&KE@TeSBwF)YqO>)FaU=KJ{RapU@>Lj10uj4?Hi|b zVyHac;4*J&6O1bY0R|9;tzp30+TMPaXgraF zrU$Dj=#T-pFay|wBo!dJ3F{F6%%!COEd{8q!QC-wfOP;M00|z&j2r{i8$-AiK04n0`h46z!htl2I(S5MnN0@^Oa9wMm^iVk};bE$3hjMXT zf!Vq|f!944|9}8EgyfhR3w@Q4mjp0vKm}d2U$+5*2w7@O&~)8IKnqXlq6Cv6z$Q4b-}Hyd z!Bqy#N%Dy)?x_xP)CWC@5|~>aD|aMFNIDMGH*%@laI;P46pW3RJ9^tU(F4B6>2ug^ z4oQ_T60AI4?m&4n5#Vz+)>Z{jK~RY9v6NgUKX- zhl{BKKtIA9QnzY(9+gA?``mFHRh|IAU1f+ClV!ys+#j@}1n?k&%3W5;)m#`*M}=_- zorsGunL##7Mx%o3GA+{BrXu%2gsX$@Bufm@VzOr9Ip_&x-JxTZRXI%roR{1SalK9eU_49)=h8^hxlP@2%Bq~^GCBr`d|MCX>KoD3610F=aB* z&N9TVMt_705J|wzDwdniIou1T0U!venX`Q5)g?}6LFLhz>$JJhQUc-yh|{bKT1vpd zfD}~_MMtkdxJ8y>P%jHzuBa}(4TA(bs6rgqWHof3B?0!@;?&tp#^sJK$Bk`*Td&bG z6kJ9y3WN9(n_%IiB~^|d0-Hmfm}JT>K0a~;d0_;QJFuLg@*pZtm`o|SL*Qxv&H`*H zbX9q%Jc!EuBmkX}cm_ZrH7F=Y<(?;_^41gp8Vv%J%osrBzK~IQB0vZ~0!WP1(V79E z%OOOSQF-Vl+5s6O9aX?KF zNA5(a;uDTf_Y(hJJOFT=4jolW`g^qjfPYwDpAP74(_=2&pH2m=?+@skqrW2qZm7NY zb|Rp70N`40dt*O96G!3i_XB*oy?JAs&cU~*4&#~l0e2E$lJA9hmA4KMD~8oss}^oHs6PZeD=Avi@EK zxZdsFt6S}V7g3rXdCWC7R9ad8Wdyj_?Ov~2o&TH-u(`Rl1$kvXi~zsCe((F)6>O=r zvMyr4-rDyg3f`Cn@Lmk~?EByUr4D`}0&L9!_+E8!5}F9-ma zpaHRuOaPdtW>O3RzWa<6XbEq0_EBK*;WPp`Y>MNA|HlC1$x>_IeYST5Kp~pWzxwX8 zt49E=M1YU3-q|=jpb(uar#ip7x^;NKN;6W>`DjA}h8LNGk}SsxI$Ii`C(70=fM%0z zJQtwMHq7U)cDC-s&sZ?c2H3i7BKD5y!~KHH3BZNT$l+eSV**Vj;NC2N&8?3kK&l=! zhSH${Q92A@xCs;AOFLvI4h7ryaFMxw?~ucIv?k=U#*mKM2SxULeUQ&)pAV4uxx)aG z*U%LHn$0&%+u6NHFVc%N%XB?VeLUWI4uU#gIzremdcL%A=g0!o3f+^-IMXD=NbC9srWtkfAl^pIv>m2e9!?` zj-CkpA?CaHGbhJ4r1AT!@!io69{cG_-S)5VSmy4SyYK$_wN5| zg`05KI^?EOakp`Q`Ohc2YCjt7C!-B2EP-2Po%2|*TzqM3YoiXiNqO^b$YPbtaUowE1AqmYh8VQeG;JCkNt4$<|eKM8Pj&^hmHFu@tosj z^{vzB=+t}-)iQU-eC+!N(ORJH4*Bl=lUQ~}onA%9$NDrYW4&zKKYnKa_)in|aonD} zXuo2edE7g*^0>Ez*Hds^+UePqonGZY`#Rq5=NtY0E5~UmwUJ{k1eCy0owQ+`@lBb}84Y_d~+Fg0v`w3i|bj@U5IR<$G@K;5sTRBt7*}3DH z!qP>M+NeT?;cM7x80l)+wnf<_oYNmbMyt9Bx&7gjZ$5zh{_dmpO~?lhmjQh9{x|P` z3%T7NtbYJ`eb8^;gnS_2!$I1HgQ@`pGW*^q%Zu6WTr1 zg!g+hG=VC9`(#&tMY&Ia4>aK0835`WzdN9&JnBB8CiJ_i34`vz0PH;Y>1rq2Re(WP u0s03YiQU(Z;R{Xp0-FH&OKidn!}xz14B`KC%Z4Zb0000%Jbw}SNklNCBzjXhtR9 zEs==;G!iTO(AtfBF@I7}tXWj$((CIfy9Nh@e16o3hop{RC*NA12%S{BB3m0`I^HL0u3hX9PZGS-E;UarJC}>&)>?eT$ z%u`+e*Ox{Wlu6VE#3E5H7cF8#iv&#otYsHfonL1zW#)$z*bSn4K@1<2Nwa7bQ9{6p zVY&+oQ3G7fEDb5J8+oo3Bn1#sa!HN2j5h&bWu*Z>%>0nd7m|K(B?ep}Q6o_3LE@1T zaZBI~hS4fo(tm)3%+>Sck_Nnhq!nPYN$dwL;xYWp8ODPa5dbrD>3k-$SV#h{3<0zs zcwUPJA$;(`83ACrL;|i}g#lKWqyS8peo)NOR=~LnaiIh*4Y#&LH=2tilgVb6CMhVA z$PZ`;gMq-Ha6kgo{G)K?M&>*S$Yv)gsKng>Z5I|D+kbTc0Cmmvu5^OT)$9mBDqtd2 zh~p?f@X8^vDh{aupa$J96#$^Hkd2%wp+EwPcH{@8GBmsm!Ng$z;2Eu8erbLLfC?C+ zB3TJPC_{%h(2ow-VoXXnFIWihCBTNKYZc|t5;36^Fi<~xJryACAYei$O|XQ1$3+$3 zdtMRyHGjZvT-}=zKtxYsy%wb~kXc}R*p2`Eg{` zg~$jTFkw{!`u(r^QTncb7y+mP5S^@2i!u#p8pbdFAOKH4|I_2ng9jo%`0LaE)&OMz znt%_duH^>R5CA@dkRQM>_{lSA0W#QUn5`- zzC(sq4(jUGK+XpvfWct!%?a;y$d51I@C+7ITio_7B=d2b^i^x+5e zE2Fr!_{ASm0XM#pfOj;=-sxzyweHMgeXp z2{&Z@_YlD4PDBBInGRqIK$Qe40nY^BIp?<_OTa8W9-toWX#p@V-oA~ihkq9eFd=Dx z{w}|@1b~bBFP@(YAay_$m{_HN7cWi)P`w~pUjtz32f*CTsQ^_T5rP*QAeOol0sI3< zBPPJC0v(_M;jw_=U*E-~zi%?x1~94r+c02u0w5F$KG5IyD4OI`2*+g&;Ku<1RIn8* zpmbk!0u1GnwgDx93F*tcFn^RjELN5k8yEVxuE4!w3=q3EW0C?5aA@FDhM@!|Qvxv{ z0z4P{#tDrWsz`uKBMHD!&`blQo1g@2p=<$w{ts|@37iPv5^tgjIuwBb4G6UMjPsgMHseknofB+25W*OObqzFu zC&CG>1|nhOh@-G!1%F+vB{lTBAVDbbMRbwV0aV1tGv)`W0i}CzpxWT5k1z)n;JnsC z>7fi%%)?Yw0pX<61P26^p`1kJu*!qNG!w8s5dAIRUW zLPpCSwe1^g0e|14;y!FPM@Z$+6Qn#^?m&4n72wmPsc5SN$nuB)t(yu683rD>*OmuQ zKJHJrK|(P#;31|ftZ+nm8UU8mF04a~^1#3m0i7F;Do5jsz5~5TVMwO|WZZCwZ46zt#~m@Y7?r2&Kh zADh4yO;yGC#duk8ePY+}G|k0P#ZwiuU|WMX7Ky9oZ159`j6{AfKTkL%p3vN}Gi-CaSl6oP|*C_y84-1EL zMNf)zo4VnYWw{v37#LvX1M_X_Xq0<1DWE6-uzy8#%d#8=h+lyM=-d>*90q*-F2J^7 zjfSfu7>%&)tk#GOCSvV|Gfv7Y5*!O+If&0MI&v_D^)dwoA&Z^}lRPL$X+#rG4LnwJ zWJkKVN{9Kh?uWQdW3>c;r}jb%x7Z9%zhy^Oxg1P^5HJh~Q(c*fVcSFjqOHUlU#>== zHGi8)K>A=30)m&~;j_fRUt3f(HsNu(qsnn(JAVc+cul-R!D$3nVX(eL6AXN{B+D^EpgE!u z(_Gob*GCQ$Q5XRt92icbJc!Cu29pU-2wVlgQGk|0QCobaU6&g zlCsb&WapQx%H%iNYnI(0X%%%^x|+@9V10CEz{Mq}^1T3WX0uif7Ko<;B!gpie$mR2 z(*gMI_V%{^vXEW0Y+9N4rx7UtbN7>WyRE;u_);Av?^6J7p@2vM#8R=wK7Wk~Ly61v z3B|X2slP9t0N49IouSyjwzw1nmX$xWRniL9?|L z0}OY5L_s{5iczz-&vH5iD|a6BY)HK)^8%f!)|w@ZfyVObb#I6P6zVxRu}^|9&Svppd-`r7K;I# z4=Z?U8o&oJ;Qq$LTXl#F5uh^-;5RYgj{>kANqB4f7y!@8v>YY?w-5j!K>^|znF7#n z%{WT{*6#}iO2S*)$0#spG7SMvo8ooC|6_oTWF}v~&(8oTM1RBickB1p&j47C0H3Vi z-#I;?5S=TV+rL}yoF1^;j1+8tvZDaWN#>-)%dvv(jsmEGa?D_gQ?p5Sz89cOcJzJg z+nxLJQ&*+w0G)e=mZ014xJBj|;M#5!aMzUpV?zpfI1OO8^JxSybtkUNPB=9nN~ZxN zO^DK|+8}PkIDbKWhZfkFPC?v_aXO6&d0RWu83E;D%GT#JZIHL^?*~Y|?=*n)In=}- z)5V5KJG+XXx!SEIc9s0&r#t zw>}f=<@WX&0cJ-obGFZFL%AbY?Csy55wIL7*jYOpV1HLBXrB>~-;ESBPP+GHdYN9P zmq{k`vv&TocKbQxWymwHba&hTfu|We4am1KBJFhFzYw2#u899O6@Q2LkI`pY<(cfA z$J-FfF%n@s#Qfk<_QL3fH2%IGKON)X%+Fuxwts)$&`-zQegAJ4I`aO`7{G+5mLca= zp80v<4u3qg4!J2+JZL;x`rC!B+>b{4$!LQLQ(&j8avlqoim!A!J9WrSk#`?7-nR>5 z8`9|evU>7!Yy+^~n907XY{xdZy}jLC%VsYaTk`&`ae%TP+hOL;F3ts6ZM$fPokth& zoa0sbSEtd@ss1xmLq8q!%>O=)<^uV2$PXS}z<;t8d3qHcAFI=>tnsR4{q%+P)BhRs zk8{@Sb?Y@_7!+)2b0x2? zGY36vmkVP6YmrqJ^R1P|YGZ|7i9%n4%m157NulPbHo_1^@s607*qoM6N<$f?C{M AYybcN From 3c52e9b7ca466456eb1f71322f8aeac70c556e2d Mon Sep 17 00:00:00 2001 From: Ariel Antonitis Date: Mon, 5 Apr 2021 22:52:47 -0400 Subject: [PATCH 081/241] Experimental TOD tint. --- include/palette.h | 1 + src/palette.c | 56 +++++++++++++++++++++++++++++++++++++++++++++-- 2 files changed, 55 insertions(+), 2 deletions(-) diff --git a/include/palette.h b/include/palette.h index f9bd20560..0be99d3c6 100644 --- a/include/palette.h +++ b/include/palette.h @@ -77,6 +77,7 @@ void BlendPalettes(u32 selectedPalettes, u8 coeff, u16 color); void BlendPalettesUnfaded(u32, u8, u16); void BlendPalettesGradually(u32 selectedPalettes, s8 delay, u8 coeff, u8 coeffTarget, u16 color, u8 priority, u8 id); void TimeBlendPalette(u16 palOffset, u16 numEntries, u8 coeff, u16 blendColor); +void TintPalette_RGB_Copy(u16 palOffset, u16 numEntries, u8 coeff, u16 blendColor); void TimeBlendPalettes(u32 palettes, u8 coeff, u16 color); void TintPalette_GrayScale(u16 *palette, u16 count); void TintPalette_GrayScale2(u16 *palette, u16 count); diff --git a/src/palette.c b/src/palette.c index 3d57136f8..34cf0286d 100644 --- a/src/palette.c +++ b/src/palette.c @@ -978,10 +978,12 @@ void BlendPalettes(u32 selectedPalettes, u8 coeff, u16 color) } } +#define DEFAULT_LIGHT_COLOR 0x3f9f + // Like BlendPalette, but ignores blendColor if the transparency high bit is set void TimeBlendPalette(u16 palOffset, u16 numEntries, u8 coeff, u16 blendColor) { u16 i; - u16 defaultBlendColor = 0x3f9f; + u16 defaultBlendColor = DEFAULT_LIGHT_COLOR; s8 r, g, b; struct PlttData *data2 = (struct PlttData *)&blendColor; struct PlttData *data3; @@ -993,7 +995,7 @@ void TimeBlendPalette(u16 palOffset, u16 numEntries, u8 coeff, u16 blendColor) { if (i == 0) { if (data1->unused_15) { // Color 0 is a bitmask for which colors to blend; color 15 is the alt blend color gPlttBufferFaded[index] = gPlttBufferUnfaded[index]; - altBlendIndices = gPlttBufferUnfaded[index] << 1; // bit 0 species color 1, etc. + altBlendIndices = gPlttBufferUnfaded[index] << 1; // bit 0 specifies color 1, etc. data3 = (struct PlttData *)&gPlttBufferUnfaded[index+15]; if (!data3->unused_15) // use default blend color instead data3 = (struct PlttData *)&defaultBlendColor; @@ -1119,6 +1121,56 @@ 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, u16 numEntries, u8 coeff, u16 blendColor) { + u16 rTone, gTone, bTone; + u16 defaultBlendColor = DEFAULT_LIGHT_COLOR; + s32 r, g, b, i; + u32 gray; + struct PlttData *data2 = (struct PlttData *)&blendColor; + struct PlttData *data3; + struct PlttData *blendData; + u16 altBlendIndices = 0; + u16* palette = &gPlttBufferUnfaded[palOffset]; + for (i = 0; i < numEntries; i++) { + u16 index = i + palOffset; + struct PlttData *data1 = (struct PlttData *)palette; + if (i == 0) { + if (data1->unused_15) { // Color 0 is a bitmask for which colors to blend; color 15 is the alt blend color + gPlttBufferFaded[index] = gPlttBufferUnfaded[index]; + altBlendIndices = gPlttBufferUnfaded[index] << 1; // bit 0 specifies color 1, etc. + data3 = (struct PlttData *)&gPlttBufferUnfaded[index+15]; + if (!data3->unused_15) // use default blend color instead + data3 = (struct PlttData *)&defaultBlendColor; + } + palette++; + continue; + } + blendData = (altBlendIndices && altBlendIndices & (1 << i)) ? data3 : data2; + rTone = blendData->r << 3; + gTone = blendData->g << 3; + bTone = blendData->b << 3; + + r = GET_R(*palette); + g = GET_G(*palette); + b = GET_B(*palette); + gray = (r * Q_8_8(0.3) + g * Q_8_8(0.59) + b * Q_8_8(0.1133)) >> 8; + r = (u16)((rTone * gray)) >> 8; + g = (u16)((gTone * gray)) >> 8; + b = (u16)((bTone * gray)) >> 8; + + if (r > 31) + r = 31; + if (g > 31) + g = 31; + if (b > 31) + b = 31; + + gPlttBufferFaded[index] = RGB2(r, g, b); + palette++; + } +} + #define tCoeff data[0] #define tCoeffTarget data[1] #define tCoeffDelta data[2] From e11d050423d13abe773d38716c69628e582b38fd Mon Sep 17 00:00:00 2001 From: Ariel Antonitis Date: Tue, 6 Apr 2021 01:02:37 -0400 Subject: [PATCH 082/241] Added weighted palette average. --- include/palette.h | 1 + src/overworld.c | 13 +++++++++++-- src/palette.c | 29 +++++++++++++++++++++++++++++ 3 files changed, 41 insertions(+), 2 deletions(-) diff --git a/include/palette.h b/include/palette.h index 0be99d3c6..406f56b84 100644 --- a/include/palette.h +++ b/include/palette.h @@ -76,6 +76,7 @@ void BeginHardwarePaletteFade(u8, u8, u8, u8, u8); void BlendPalettes(u32 selectedPalettes, u8 coeff, u16 color); void BlendPalettesUnfaded(u32, u8, u16); void BlendPalettesGradually(u32 selectedPalettes, s8 delay, u8 coeff, u8 coeffTarget, u16 color, u8 priority, u8 id); +void AveragePalettes(u16 *palette0, u16* palette1, u16* dest, u16 weight); void TimeBlendPalette(u16 palOffset, u16 numEntries, u8 coeff, u16 blendColor); void TintPalette_RGB_Copy(u16 palOffset, u16 numEntries, u8 coeff, u16 blendColor); void TimeBlendPalettes(u32 palettes, u8 coeff, u16 color); diff --git a/src/overworld.c b/src/overworld.c index 6e7542109..cd1a1df96 100644 --- a/src/overworld.c +++ b/src/overworld.c @@ -1496,7 +1496,8 @@ static bool8 FadePalettesWithTime(void) { void UpdatePalettesWithTime(u32 palettes) { // Only blend if not transitioning between times and the map type allows if (gTimeOfDayState == 0 && MapHasNaturalLight(gMapHeader.mapType)) { - u8 i; + u8 i, j; + u16 tempPaletteBuffer[16]; for (i = 0; i < 16; i++) { if (GetSpritePaletteTagByPaletteNum(i) & 0x8000) // Don't blend special sprite palette tags palettes &= ~(1 << (i + 16)); @@ -1505,7 +1506,15 @@ void UpdatePalettesWithTime(u32 palettes) { gTimeOfDay = min(TIME_OF_DAY_MAX, gTimeOfDay); if (!palettes) return; - TimeBlendPalettes(palettes, sTimeOfDayBlendVars[gTimeOfDay].coeff, sTimeOfDayBlendVars[gTimeOfDay].blendColor); + for (i = 0; palettes; i++) { + if (palettes & 1) { + TimeBlendPalette(i*16, 16, sTimeOfDayBlendVars[gTimeOfDay].coeff, sTimeOfDayBlendVars[gTimeOfDay].blendColor); + CpuFastCopy(&gPlttBufferFaded[i*16], tempPaletteBuffer, 32); + TimeBlendPalette(i*16, 16, sTimeOfDayBlendVars[TIME_OF_DAY_TWILIGHT].coeff, sTimeOfDayBlendVars[TIME_OF_DAY_TWILIGHT].blendColor); + AveragePalettes(tempPaletteBuffer, &gPlttBufferFaded[i*16], &gPlttBufferFaded[i*16], 256); + } + palettes >>= 1; + } } } diff --git a/src/palette.c b/src/palette.c index 34cf0286d..a285a4825 100644 --- a/src/palette.c +++ b/src/palette.c @@ -978,6 +978,35 @@ void BlendPalettes(u32 selectedPalettes, u8 coeff, u16 color) } } +// Computes a weighted average of two palettes, as (p0*weight + (256-weight)*p1)/256 +void AveragePalettes(u16 *palette0, u16* palette1, u16* dest, u16 weight) { + u8 i; + u32 tempColor; + u16 r0, g0, b0, r1, g1, b1, r, g, b; + u16 color0, color1, destColor; + *dest++ = *palette0++; // Copy palette0's transparency color as is + palette1++; + for (i = 1; i < 16; i++) { // Skip transparent color + color0 = *palette0++; + color1 = *palette1++; + r0 = color0 & 0x1F; + g0 = (color0 >> 5) & 0x1F; + b0 = (color0 >> 10) & 0x1F; + r1 = color1 & 0x1F; + g1 = (color1 >> 5) & 0x1F; + b1 = (color1 >> 10) & 0x1F; + r = (weight*r0 + (256-weight)*r1) >> 8; + g = (weight*g0 + (256-weight)*g1) >> 8; + b = (weight*b0 + (256-weight)*b1) >> 8; + r = r > 31 ? 31 : r; + g = g > 31 ? 31 : g; + b = b > 31 ? 31 : b; + destColor = (color0 | color1) & 0x8000; + destColor += r + (g << 5) + (b << 10); + *dest++ = destColor; + } +} + #define DEFAULT_LIGHT_COLOR 0x3f9f // Like BlendPalette, but ignores blendColor if the transparency high bit is set From 3bd46b5b7aa4ee0add0f2d1e145e91c9087befb3 Mon Sep 17 00:00:00 2001 From: Ariel Antonitis Date: Sun, 18 Apr 2021 01:40:14 -0400 Subject: [PATCH 083/241] Fixed bug in MapHasNaturalLight for ocean routes. --- src/overworld.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/overworld.c b/src/overworld.c index cd1a1df96..0ac310e65 100644 --- a/src/overworld.c +++ b/src/overworld.c @@ -1481,7 +1481,8 @@ u8 UpdateTimeOfDay(void) { } static bool8 MapHasNaturalLight(u8 mapType) { // Weather a map type is naturally lit/outside - return mapType == MAP_TYPE_TOWN || mapType == MAP_TYPE_CITY || mapType == MAP_TYPE_ROUTE; + return mapType == MAP_TYPE_TOWN || mapType == MAP_TYPE_CITY || mapType == MAP_TYPE_ROUTE + || mapType == MAP_TYPE_OCEAN_ROUTE; } static bool8 FadePalettesWithTime(void) { From 22c429d0d6dc5c823b55e88c764be71b51d0db76 Mon Sep 17 00:00:00 2001 From: Ariel Antonitis Date: Mon, 19 Apr 2021 00:07:42 -0400 Subject: [PATCH 084/241] Added inter-time-of-day blending. --- include/overworld.h | 6 ++ include/palette.h | 4 +- src/overworld.c | 69 ++++++++++++++++---- src/palette.c | 154 +++++++++++++++++++++++++++++++++----------- 4 files changed, 181 insertions(+), 52 deletions(-) diff --git a/include/overworld.h b/include/overworld.h index be7c33ff0..2180a87a9 100644 --- a/include/overworld.h +++ b/include/overworld.h @@ -44,6 +44,12 @@ struct LinkPlayerObjectEvent u8 movementMode; }; +struct __attribute__((packed)) TimeBlendSettings { + u16 weight:9; + u16 time1:3; + u16 time0:3; +}; + // Exported RAM declarations extern struct WarpData gLastUsedWarp; extern struct LinkPlayerObjectEvent gLinkPlayerObjectEvents[4]; diff --git a/include/palette.h b/include/palette.h index 406f56b84..a9e6cd767 100644 --- a/include/palette.h +++ b/include/palette.h @@ -77,9 +77,9 @@ void BlendPalettes(u32 selectedPalettes, u8 coeff, u16 color); void BlendPalettesUnfaded(u32, u8, u16); void BlendPalettesGradually(u32 selectedPalettes, s8 delay, u8 coeff, u8 coeffTarget, u16 color, u8 priority, u8 id); void AveragePalettes(u16 *palette0, u16* palette1, u16* dest, u16 weight); -void TimeBlendPalette(u16 palOffset, u16 numEntries, u8 coeff, u16 blendColor); +void TimeBlendPalette(u16 palOffset, u32 coeff, u32 blendColor); void TintPalette_RGB_Copy(u16 palOffset, u16 numEntries, u8 coeff, u16 blendColor); -void TimeBlendPalettes(u32 palettes, u8 coeff, u16 color); +void TimeBlendPalettes(u32 palettes, u32 coeff, u32 blendColor); void TintPalette_GrayScale(u16 *palette, u16 count); void TintPalette_GrayScale2(u16 *palette, u16 count); void TintPalette_SepiaTone(u16 *palette, u16 count); diff --git a/src/overworld.c b/src/overworld.c index 0ac310e65..6c7196a51 100644 --- a/src/overworld.c +++ b/src/overworld.c @@ -186,7 +186,9 @@ static u16 (*sPlayerKeyInterceptCallback)(u32); static bool8 sReceivingFromLink; static u8 sRfuKeepAliveTimer; -u8 static gTimeOfDayState; +static u8 gTimeOfDayState; +static u8 timeCounter; +static struct TimeBlendSettings currentTimeBlend; // IWRAM common u16 *gBGTilemapBuffers1; @@ -1472,12 +1474,39 @@ static const struct TimeOfDayBlend sTimeOfDayBlendVars[] = }; u8 UpdateTimeOfDay(void) { + s8 hours, minutes; RtcCalcLocalTime(); - if (gLocalTime.hours >= 20 || gLocalTime.hours < 4) - return gTimeOfDay = TIME_OF_DAY_NIGHT; - else if (gLocalTime.hours >= 10 && gLocalTime.hours < 20) + hours = gLocalTime.hours; + minutes = gLocalTime.minutes; + if (hours >= 22 || hours < 4) { + currentTimeBlend.weight = 256; + return gTimeOfDay = currentTimeBlend.time0 = currentTimeBlend.time1 = TIME_OF_DAY_NIGHT; + } else if (hours >= 4 && 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); return gTimeOfDay = TIME_OF_DAY_DAY; - return gTimeOfDay = TIME_OF_DAY_TWILIGHT; + } else if (hours >= 7 && 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); + return gTimeOfDay = TIME_OF_DAY_DAY; + } else if (hours >= 10 && hours < 18) { // day + currentTimeBlend.weight = 256; + return gTimeOfDay = currentTimeBlend.time0 = currentTimeBlend.time1 = TIME_OF_DAY_DAY; + } else if (hours >= 18 && 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); + return gTimeOfDay = TIME_OF_DAY_TWILIGHT; + } else if (hours >= 20 && 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); + return gTimeOfDay = TIME_OF_DAY_NIGHT; + } else { // This should never occur + return TIME_OF_DAY_MAX; + } } static bool8 MapHasNaturalLight(u8 mapType) { // Weather a map type is naturally lit/outside @@ -1485,7 +1514,7 @@ static bool8 MapHasNaturalLight(u8 mapType) { // Weather a map type is naturally || mapType == MAP_TYPE_OCEAN_ROUTE; } -static bool8 FadePalettesWithTime(void) { +static bool8 FadePalettesWithTime(void) { // Only used to fade back in gTimeOfDayState = 0; gTimeOfDay = UpdateTimeOfDay(); if (MapHasNaturalLight(gMapHeader.mapType)) { @@ -1495,8 +1524,7 @@ static bool8 FadePalettesWithTime(void) { } void UpdatePalettesWithTime(u32 palettes) { - // Only blend if not transitioning between times and the map type allows - if (gTimeOfDayState == 0 && MapHasNaturalLight(gMapHeader.mapType)) { + if (MapHasNaturalLight(gMapHeader.mapType)) { u8 i, j; u16 tempPaletteBuffer[16]; for (i = 0; i < 16; i++) { @@ -1509,10 +1537,14 @@ void UpdatePalettesWithTime(u32 palettes) { return; for (i = 0; palettes; i++) { if (palettes & 1) { - TimeBlendPalette(i*16, 16, sTimeOfDayBlendVars[gTimeOfDay].coeff, sTimeOfDayBlendVars[gTimeOfDay].blendColor); + TimeBlendPalette(i*16, sTimeOfDayBlendVars[currentTimeBlend.time0].coeff, sTimeOfDayBlendVars[currentTimeBlend.time0].blendColor); + if (currentTimeBlend.weight == 256) { + palettes >>= 1; + continue; + } CpuFastCopy(&gPlttBufferFaded[i*16], tempPaletteBuffer, 32); - TimeBlendPalette(i*16, 16, sTimeOfDayBlendVars[TIME_OF_DAY_TWILIGHT].coeff, sTimeOfDayBlendVars[TIME_OF_DAY_TWILIGHT].blendColor); - AveragePalettes(tempPaletteBuffer, &gPlttBufferFaded[i*16], &gPlttBufferFaded[i*16], 256); + TimeBlendPalette(i*16, sTimeOfDayBlendVars[currentTimeBlend.time1].coeff, sTimeOfDayBlendVars[currentTimeBlend.time1].blendColor); + AveragePalettes(tempPaletteBuffer, &gPlttBufferFaded[i*16], &gPlttBufferFaded[i*16], currentTimeBlend.weight); } palettes >>= 1; } @@ -1535,6 +1567,19 @@ static void OverworldBasic(void) UpdatePaletteFade(); UpdateTilesetAnimations(); DoScheduledBgTilemapCopiesToVram(); + if (!(gPaletteFade.active || (timeCounter++ % 60))) { + struct TimeBlendSettings cachedBlend = { + .time0 = currentTimeBlend.time0, + .time1 = currentTimeBlend.time1, + .weight = currentTimeBlend.weight, + }; + timeCounter = 0; + UpdateTimeOfDay(); + if (cachedBlend.time0 != currentTimeBlend.time0 + || cachedBlend.time1 != currentTimeBlend.time1 + || cachedBlend.weight != currentTimeBlend.weight) + UpdatePalettesWithTime(0xFFFFFFFF); + } } // This CB2 is used when starting @@ -1545,9 +1590,7 @@ void CB2_OverworldBasic(void) void CB2_Overworld(void) { - u32 *debugPtr = (u32*) 0x0203de00; bool32 fading = (gPaletteFade.active != 0); - *debugPtr = (u32) &gTimeOfDay; if (fading) SetVBlankCallback(NULL); OverworldBasic(); diff --git a/src/palette.c b/src/palette.c index a285a4825..ff5f21060 100644 --- a/src/palette.c +++ b/src/palette.c @@ -496,13 +496,13 @@ static u8 UpdateTimeOfDayPaletteFade(void) if (gPaletteFade.yDec) { if (gPaletteFade.objPaletteToggle) { // sprite palettes if (gPaletteFade.y >= gPaletteFade.targetY || GetSpritePaletteTagByPaletteNum(paletteNum) & 0x8000) - TimeBlendPalette(paletteOffset, 16, gPaletteFade.y, gPaletteFade.blendColor); + TimeBlendPalette(paletteOffset, gPaletteFade.y, gPaletteFade.blendColor); // tile palettes } else if (gPaletteFade.y >= gPaletteFade.targetY || (paletteNum >= 13 && paletteNum <= 15)) { - TimeBlendPalette(paletteOffset, 16, gPaletteFade.y, gPaletteFade.blendColor); + TimeBlendPalette(paletteOffset, gPaletteFade.y, gPaletteFade.blendColor); } } else { - TimeBlendPalette(paletteOffset, 16, gPaletteFade.y, gPaletteFade.blendColor); + TimeBlendPalette(paletteOffset, gPaletteFade.y, gPaletteFade.blendColor); } } } @@ -1010,45 +1010,125 @@ void AveragePalettes(u16 *palette0, u16* palette1, u16* dest, u16 weight) { #define DEFAULT_LIGHT_COLOR 0x3f9f // Like BlendPalette, but ignores blendColor if the transparency high bit is set -void TimeBlendPalette(u16 palOffset, u16 numEntries, u8 coeff, u16 blendColor) { - u16 i; - u16 defaultBlendColor = DEFAULT_LIGHT_COLOR; - s8 r, g, b; - struct PlttData *data2 = (struct PlttData *)&blendColor; - struct PlttData *data3; - struct PlttData *blendData; - u16 altBlendIndices = 0; - for (i = 0; i < numEntries; i++) { - u16 index = i + palOffset; - struct PlttData *data1 = (struct PlttData *)&gPlttBufferUnfaded[index]; - if (i == 0) { - if (data1->unused_15) { // Color 0 is a bitmask for which colors to blend; color 15 is the alt blend color - gPlttBufferFaded[index] = gPlttBufferUnfaded[index]; - altBlendIndices = gPlttBufferUnfaded[index] << 1; // bit 0 specifies color 1, etc. - data3 = (struct PlttData *)&gPlttBufferUnfaded[index+15]; - if (!data3->unused_15) // use default blend color instead - data3 = (struct PlttData *)&defaultBlendColor; - } - continue; +// Optimization help by lucktyphlosion +void TimeBlendPalette(u16 palOffset, u32 coeff, u32 blendColor) { + s32 newR, newG, newB, defR, defG, defB; + u16 * palDataSrc = gPlttBufferUnfaded + palOffset; + u16 * palDataDst = gPlttBufferFaded + palOffset; + u32 defaultBlendColor = DEFAULT_LIGHT_COLOR; + u16 *palDataSrcEnd = palDataSrc + 16; + u16 altBlendIndices = *palDataDst++ = *palDataSrc++; // 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 = palDataSrc[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; } - r = data1->r; - g = data1->g; - b = data1->b; - blendData = (altBlendIndices && altBlendIndices & (1 << i)) ? data3 : data2; - gPlttBufferFaded[index] = RGB(r + (((blendData->r - r) * coeff) >> 4), - g + (((blendData->g - g) * coeff) >> 4), - b + (((blendData->b - b) * coeff) >> 4)); + } else { + altBlendIndices = 0; + } + while (palDataSrc != palDataSrcEnd) { + u32 palDataSrcColor = *palDataSrc; + s32 r = (palDataSrcColor << 27) >> 27; + s32 g = (palDataSrcColor << 22) >> 27; + s32 b = (palDataSrcColor << 17) >> 27; + + if (altBlendIndices & 1) { + *palDataDst = ((r + (((defR - r) * coeff) >> 5)) << 0) + | ((g + (((defG - g) * coeff) >> 5)) << 5) + | ((b + (((defB - b) * coeff) >> 5)) << 10); + } else { // Use provided blend color + *palDataDst = ((r + (((newR - r) * coeff) >> 5)) << 0) + | ((g + (((newG - g) * coeff) >> 5)) << 5) + | ((b + (((newB - b) * coeff) >> 5)) << 10); + } + palDataSrc++; + palDataDst++; + altBlendIndices >>= 1; } } -// Apply time effect to a series of palettes -void TimeBlendPalettes(u32 palettes, u8 coeff, u16 color) { - u16 paletteOffset; - for (paletteOffset = 0; palettes; paletteOffset += 16) { - if (palettes & 1) - TimeBlendPalette(paletteOffset, 16, coeff, color); +void TimeBlendPalettes(u32 palettes, u32 coeff, u32 blendColor) { + s32 newR, newG, newB, defR, defG, defB, altR, altG, altB; + u16 * palDataSrc; + u16 * palDataDst; + u32 defaultBlendColor = DEFAULT_LIGHT_COLOR; + + if (!palettes) + return; + + coeff *= 2; + newR = (blendColor << 27) >> 27; + newG = (blendColor << 22) >> 27; + newB = (blendColor << 17) >> 27; + defR = (defaultBlendColor << 27) >> 27; + defG = (defaultBlendColor << 22) >> 27; + defB = (defaultBlendColor << 17) >> 27; + palDataSrc = gPlttBufferUnfaded; + palDataDst = gPlttBufferFaded; + + do { + if (palettes & 1) { + u16 *palDataSrcEnd = palDataSrc + 16; + u16 altBlendIndices = *palDataDst++ = *palDataSrc++; // 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 = palDataSrc[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 (palDataSrc != palDataSrcEnd) { + u32 palDataSrcColor = *palDataSrc; + s32 r = (palDataSrcColor << 27) >> 27; + s32 g = (palDataSrcColor << 22) >> 27; + s32 b = (palDataSrcColor << 17) >> 27; + + if (altBlendIndices & 1) { + if (altBlendColor) { // Use alternate blend color + *palDataDst = ((r + (((altR - r) * coeff) >> 5)) << 0) + | ((g + (((altG - g) * coeff) >> 5)) << 5) + | ((b + (((altB - b) * coeff) >> 5)) << 10); + } else { // Use default blend color + *palDataDst = ((r + (((defR - r) * coeff) >> 5)) << 0) + | ((g + (((defG - g) * coeff) >> 5)) << 5) + | ((b + (((defB - b) * coeff) >> 5)) << 10); + } + } else { // Use provided blend color + *palDataDst = ((r + (((newR - r) * coeff) >> 5)) << 0) + | ((g + (((newG - g) * coeff) >> 5)) << 5) + | ((b + (((newB - b) * coeff) >> 5)) << 10); + } + palDataSrc++; + palDataDst++; + altBlendIndices >>= 1; + } + } else { + palDataSrc += 16; + palDataDst += 16; + } palettes >>= 1; - } + } while (palettes); } void BlendPalettesUnfaded(u32 selectedPalettes, u8 coeff, u16 color) From def9d39fbb7a62e0d6cd7501aa07964e212f1c6f Mon Sep 17 00:00:00 2001 From: Ariel Antonitis Date: Mon, 19 Apr 2021 19:59:26 -0400 Subject: [PATCH 085/241] Testing evening tint. --- include/palette.h | 2 +- src/overworld.c | 17 +++++++--- src/palette.c | 82 +++++++++++++++++++++++++---------------------- 3 files changed, 57 insertions(+), 44 deletions(-) diff --git a/include/palette.h b/include/palette.h index a9e6cd767..071af1c12 100644 --- a/include/palette.h +++ b/include/palette.h @@ -78,7 +78,7 @@ void BlendPalettesUnfaded(u32, u8, u16); void BlendPalettesGradually(u32 selectedPalettes, s8 delay, u8 coeff, u8 coeffTarget, u16 color, u8 priority, u8 id); void AveragePalettes(u16 *palette0, u16* palette1, u16* dest, u16 weight); void TimeBlendPalette(u16 palOffset, u32 coeff, u32 blendColor); -void TintPalette_RGB_Copy(u16 palOffset, u16 numEntries, u8 coeff, u16 blendColor); +void TintPalette_RGB_Copy(u16 palOffset, u32 blendColor); void TimeBlendPalettes(u32 palettes, u32 coeff, u32 blendColor); void TintPalette_GrayScale(u16 *palette, u16 count); void TintPalette_GrayScale2(u16 *palette, u16 count); diff --git a/src/overworld.c b/src/overworld.c index 6c7196a51..8b0712436 100644 --- a/src/overworld.c +++ b/src/overworld.c @@ -1462,14 +1462,15 @@ void CB1_Overworld(void) } struct TimeOfDayBlend { - u8 coeff:4; - u16 blendColor; + u8 coeff:5; + u16 blendColor:15; + u16 isTint:1; }; static const struct TimeOfDayBlend sTimeOfDayBlendVars[] = { [TIME_OF_DAY_NIGHT] = {.coeff = 10, .blendColor = 0x1400}, - [TIME_OF_DAY_TWILIGHT] = {.coeff = 4, .blendColor = 0x155D}, + [TIME_OF_DAY_TWILIGHT] = {.coeff = 4, .blendColor = 0x56dc, .isTint = TRUE}, [TIME_OF_DAY_DAY] = {.coeff = 0, .blendColor = 0}, }; @@ -1537,13 +1538,19 @@ void UpdatePalettesWithTime(u32 palettes) { return; for (i = 0; palettes; i++) { if (palettes & 1) { - TimeBlendPalette(i*16, sTimeOfDayBlendVars[currentTimeBlend.time0].coeff, sTimeOfDayBlendVars[currentTimeBlend.time0].blendColor); + if (sTimeOfDayBlendVars[currentTimeBlend.time0].isTint) + TintPalette_RGB_Copy(i*16, sTimeOfDayBlendVars[currentTimeBlend.time0].blendColor); + else + TimeBlendPalette(i*16, sTimeOfDayBlendVars[currentTimeBlend.time0].coeff, sTimeOfDayBlendVars[currentTimeBlend.time0].blendColor); if (currentTimeBlend.weight == 256) { palettes >>= 1; continue; } CpuFastCopy(&gPlttBufferFaded[i*16], tempPaletteBuffer, 32); - TimeBlendPalette(i*16, sTimeOfDayBlendVars[currentTimeBlend.time1].coeff, sTimeOfDayBlendVars[currentTimeBlend.time1].blendColor); + if (sTimeOfDayBlendVars[currentTimeBlend.time1].isTint) + TintPalette_RGB_Copy(i*16, sTimeOfDayBlendVars[currentTimeBlend.time1].blendColor); + else + TimeBlendPalette(i*16, sTimeOfDayBlendVars[currentTimeBlend.time1].coeff, sTimeOfDayBlendVars[currentTimeBlend.time1].blendColor); AveragePalettes(tempPaletteBuffer, &gPlttBufferFaded[i*16], &gPlttBufferFaded[i*16], currentTimeBlend.weight); } palettes >>= 1; diff --git a/src/palette.c b/src/palette.c index ff5f21060..36dfdfffa 100644 --- a/src/palette.c +++ b/src/palette.c @@ -1231,52 +1231,58 @@ 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, u16 numEntries, u8 coeff, u16 blendColor) { - u16 rTone, gTone, bTone; - u16 defaultBlendColor = DEFAULT_LIGHT_COLOR; - s32 r, g, b, i; - u32 gray; - struct PlttData *data2 = (struct PlttData *)&blendColor; - struct PlttData *data3; - struct PlttData *blendData; - u16 altBlendIndices = 0; - u16* palette = &gPlttBufferUnfaded[palOffset]; - for (i = 0; i < numEntries; i++) { - u16 index = i + palOffset; - struct PlttData *data1 = (struct PlttData *)palette; - if (i == 0) { - if (data1->unused_15) { // Color 0 is a bitmask for which colors to blend; color 15 is the alt blend color - gPlttBufferFaded[index] = gPlttBufferUnfaded[index]; - altBlendIndices = gPlttBufferUnfaded[index] << 1; // bit 0 specifies color 1, etc. - data3 = (struct PlttData *)&gPlttBufferUnfaded[index+15]; - if (!data3->unused_15) // use default blend color instead - data3 = (struct PlttData *)&defaultBlendColor; - } - palette++; - continue; +void TintPalette_RGB_Copy(u16 palOffset, u32 blendColor) { + s32 newR, newG, newB, rTone, gTone, bTone; + u16 * palDataSrc = gPlttBufferUnfaded + palOffset; + u16 * palDataDst = gPlttBufferFaded + palOffset; + u32 defaultBlendColor = DEFAULT_LIGHT_COLOR; + u16 *palDataSrcEnd = palDataSrc + 16; + u16 altBlendIndices = *palDataDst++ = *palDataSrc++; // 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 = palDataSrc[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; } - blendData = (altBlendIndices && altBlendIndices & (1 << i)) ? data3 : data2; - rTone = blendData->r << 3; - gTone = blendData->g << 3; - bTone = blendData->b << 3; - - r = GET_R(*palette); - g = GET_G(*palette); - b = GET_B(*palette); - gray = (r * Q_8_8(0.3) + g * Q_8_8(0.59) + b * Q_8_8(0.1133)) >> 8; - r = (u16)((rTone * gray)) >> 8; - g = (u16)((gTone * gray)) >> 8; - b = (u16)((bTone * gray)) >> 8; + } else { + altBlendIndices = 0; + } + while (palDataSrc != palDataSrcEnd) { + u32 palDataSrcColor = *palDataSrc; + s32 r = (palDataSrcColor << 27) >> 27; + s32 g = (palDataSrcColor << 22) >> 27; + s32 b = (palDataSrcColor << 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; - - gPlttBufferFaded[index] = RGB2(r, g, b); - palette++; + palDataSrc++; + *palDataDst++ = RGB2(r, g, b); + altBlendIndices >>= 1; } } From a80de91463743c030585fd1584a303d9b8b80de6 Mon Sep 17 00:00:00 2001 From: Ariel Antonitis Date: Mon, 19 Apr 2021 22:07:47 -0400 Subject: [PATCH 086/241] Fixed bugged interaction between reflections & light sprites. --- src/event_object_movement.c | 1 + src/field_effect_helpers.c | 28 +++++++++++++++------------- 2 files changed, 16 insertions(+), 13 deletions(-) diff --git a/src/event_object_movement.c b/src/event_object_movement.c index fc99a172a..62c64718f 100644 --- a/src/event_object_movement.c +++ b/src/event_object_movement.c @@ -1943,6 +1943,7 @@ void UpdateLightSprite(struct Sprite *sprite) { DestroySprite(sprite); FieldEffectFreeTilesIfUnused(sheetTileStart); FieldEffectFreePaletteIfUnused(paletteNum); + Weather_SetBlendCoeffs(7, 12); // TODO: Restore original blend coeffs at dawn return; } diff --git a/src/field_effect_helpers.c b/src/field_effect_helpers.c index db58cb9a7..f3d4d7149 100755 --- a/src/field_effect_helpers.c +++ b/src/field_effect_helpers.c @@ -97,39 +97,41 @@ static void LoadObjectReflectionPalette(struct ObjectEvent *objectEvent, struct // Apply a blue tint effect to a palette static void ApplyPondFilter(u8 paletteNum, u16 *dest) { - u8 i, val, r, g, b; - // CpuCopy16(gPlttBufferUnfaded + 0x100 + paletteNum * 16, dest, 32); + u8 i; + s32 r, g, b; u16 *src = gPlttBufferUnfaded + 0x100 + paletteNum * 16; for (i = 0; i < 16; i++) { - r = src[i] & 0x1F; - g = (src[i] >> 5) & 0x1F; - b = (src[i] >> 10) & 0x1F; + u32 color = *src++; + r = (color << 27) >> 27; + g = (color << 22) >> 27; + b = (color << 17) >> 27; b += 10; if (b > 31) b = 31; - *dest++ = (b << 10) | (g << 5) | r; + *dest++ = r | (g << 5) | (b << 10); } } // Apply a ice tint effect to a palette static void ApplyIceFilter(u8 paletteNum, u16 *dest) { - u8 i, val, r, g, b; - // CpuCopy16(gPlttBufferUnfaded + 0x100 + paletteNum * 16, dest, 32); + u8 i; + s32 r, g, b; u16 *src = gPlttBufferUnfaded + 0x100 + paletteNum * 16; for (i = 0; i < 16; i++) { - r = src[i] & 0x1F; + u32 color = *src++; + r = (color << 27) >> 27; + g = (color << 22) >> 27; + b = (color << 17) >> 27; r -= 5; - if (r > 31) + if (r < 0) r = 0; - g = (src[i] >> 5) & 0x1F; g += 3; if (g > 31) g = 31; - b = (src[i] >> 10) & 0x1F; b += 16; if (b > 31) b = 31; - *dest++ = (b << 10) | (g << 5) | r; + *dest++ = r | (g << 5) | (b << 10); } } From 0d8467c2a922d3df0256a9019b4f7ff531e46716 Mon Sep 17 00:00:00 2001 From: Ariel Antonitis Date: Mon, 19 Apr 2021 23:17:13 -0400 Subject: [PATCH 087/241] Slight palette update optimization. --- src/overworld.c | 19 +++++++++---------- 1 file changed, 9 insertions(+), 10 deletions(-) diff --git a/src/overworld.c b/src/overworld.c index 8b0712436..aa66280fc 100644 --- a/src/overworld.c +++ b/src/overworld.c @@ -1526,32 +1526,31 @@ static bool8 FadePalettesWithTime(void) { // Only used to fade back in void UpdatePalettesWithTime(u32 palettes) { if (MapHasNaturalLight(gMapHeader.mapType)) { - u8 i, j; + u16 i; u16 tempPaletteBuffer[16]; for (i = 0; i < 16; i++) { - if (GetSpritePaletteTagByPaletteNum(i) & 0x8000) // Don't blend special sprite palette tags + if (GetSpritePaletteTagByPaletteNum(i) >> 15) // Don't blend special sprite palette tags palettes &= ~(1 << (i + 16)); } palettes &= ~0xE000; // Don't blend tile palettes [13,15] - gTimeOfDay = min(TIME_OF_DAY_MAX, gTimeOfDay); if (!palettes) return; - for (i = 0; palettes; i++) { + for (i = 0; palettes; i+=16) { if (palettes & 1) { if (sTimeOfDayBlendVars[currentTimeBlend.time0].isTint) - TintPalette_RGB_Copy(i*16, sTimeOfDayBlendVars[currentTimeBlend.time0].blendColor); + TintPalette_RGB_Copy(i, sTimeOfDayBlendVars[currentTimeBlend.time0].blendColor); else - TimeBlendPalette(i*16, sTimeOfDayBlendVars[currentTimeBlend.time0].coeff, sTimeOfDayBlendVars[currentTimeBlend.time0].blendColor); + TimeBlendPalette(i, sTimeOfDayBlendVars[currentTimeBlend.time0].coeff, sTimeOfDayBlendVars[currentTimeBlend.time0].blendColor); if (currentTimeBlend.weight == 256) { palettes >>= 1; continue; } - CpuFastCopy(&gPlttBufferFaded[i*16], tempPaletteBuffer, 32); + CpuFastCopy(&gPlttBufferFaded[i], tempPaletteBuffer, 32); if (sTimeOfDayBlendVars[currentTimeBlend.time1].isTint) - TintPalette_RGB_Copy(i*16, sTimeOfDayBlendVars[currentTimeBlend.time1].blendColor); + TintPalette_RGB_Copy(i, sTimeOfDayBlendVars[currentTimeBlend.time1].blendColor); else - TimeBlendPalette(i*16, sTimeOfDayBlendVars[currentTimeBlend.time1].coeff, sTimeOfDayBlendVars[currentTimeBlend.time1].blendColor); - AveragePalettes(tempPaletteBuffer, &gPlttBufferFaded[i*16], &gPlttBufferFaded[i*16], currentTimeBlend.weight); + TimeBlendPalette(i, sTimeOfDayBlendVars[currentTimeBlend.time1].coeff, sTimeOfDayBlendVars[currentTimeBlend.time1].blendColor); + AveragePalettes(tempPaletteBuffer, &gPlttBufferFaded[i], &gPlttBufferFaded[i], currentTimeBlend.weight); } palettes >>= 1; } From 93ab4451fc155bc1e841d3daafc4c85099dfb292 Mon Sep 17 00:00:00 2001 From: Ariel Antonitis Date: Mon, 19 Apr 2021 23:50:50 -0400 Subject: [PATCH 088/241] Testing combined averaging function. --- include/palette.h | 1 + src/overworld.c | 25 ++++----------- src/palette.c | 77 +++++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 84 insertions(+), 19 deletions(-) diff --git a/include/palette.h b/include/palette.h index 071af1c12..346091c64 100644 --- a/include/palette.h +++ b/include/palette.h @@ -80,6 +80,7 @@ void AveragePalettes(u16 *palette0, u16* palette1, u16* dest, u16 weight); void TimeBlendPalette(u16 palOffset, u32 coeff, u32 blendColor); void TintPalette_RGB_Copy(u16 palOffset, u32 blendColor); void TimeBlendPalettes(u32 palettes, u32 coeff, u32 blendColor); +void TimeMixPalettes(u32 palettes, u32 coeff0, u32 color0, u32 coeff1, u32 color1, u16 weight); void TintPalette_GrayScale(u16 *palette, u16 count); void TintPalette_GrayScale2(u16 *palette, u16 count); void TintPalette_SepiaTone(u16 *palette, u16 count); diff --git a/src/overworld.c b/src/overworld.c index aa66280fc..8ccdf412b 100644 --- a/src/overworld.c +++ b/src/overworld.c @@ -1535,25 +1535,12 @@ void UpdatePalettesWithTime(u32 palettes) { palettes &= ~0xE000; // Don't blend tile palettes [13,15] if (!palettes) return; - for (i = 0; palettes; i+=16) { - if (palettes & 1) { - if (sTimeOfDayBlendVars[currentTimeBlend.time0].isTint) - TintPalette_RGB_Copy(i, sTimeOfDayBlendVars[currentTimeBlend.time0].blendColor); - else - TimeBlendPalette(i, sTimeOfDayBlendVars[currentTimeBlend.time0].coeff, sTimeOfDayBlendVars[currentTimeBlend.time0].blendColor); - if (currentTimeBlend.weight == 256) { - palettes >>= 1; - continue; - } - CpuFastCopy(&gPlttBufferFaded[i], tempPaletteBuffer, 32); - if (sTimeOfDayBlendVars[currentTimeBlend.time1].isTint) - TintPalette_RGB_Copy(i, sTimeOfDayBlendVars[currentTimeBlend.time1].blendColor); - else - TimeBlendPalette(i, sTimeOfDayBlendVars[currentTimeBlend.time1].coeff, sTimeOfDayBlendVars[currentTimeBlend.time1].blendColor); - AveragePalettes(tempPaletteBuffer, &gPlttBufferFaded[i], &gPlttBufferFaded[i], currentTimeBlend.weight); - } - palettes >>= 1; - } + TimeMixPalettes(palettes, + sTimeOfDayBlendVars[currentTimeBlend.time0].coeff, + sTimeOfDayBlendVars[currentTimeBlend.time0].blendColor, + sTimeOfDayBlendVars[currentTimeBlend.time1].coeff, + sTimeOfDayBlendVars[currentTimeBlend.time1].blendColor, + currentTimeBlend.weight); } } diff --git a/src/palette.c b/src/palette.c index 36dfdfffa..c2029adf0 100644 --- a/src/palette.c +++ b/src/palette.c @@ -1131,6 +1131,83 @@ void TimeBlendPalettes(u32 palettes, u32 coeff, u32 blendColor) { } while (palettes); } +// Blends a weighted average of two blend parameters +void TimeMixPalettes(u32 palettes, u32 coeff0, u32 color0, u32 coeff1, u32 color1, u16 weight) { + s32 r0, g0, b0, r1, g1, b1, defR, defG, defB, altR, altG, altB; + u16 * palDataSrc; + u16 * palDataDst; + u32 defaultColor = DEFAULT_LIGHT_COLOR; + + if (!palettes) + return; + + // TODO: Check coeff for tint + coeff0 *= 2; + coeff1 *= 2; + r0 = (color0 << 27) >> 27; + g0 = (color0 << 22) >> 27; + b0 = (color0 << 17) >> 27; + r1 = (color1 << 27) >> 27; + g1 = (color1 << 22) >> 27; + b1 = (color1 << 17) >> 27; + defR = (defaultColor << 27) >> 27; + defG = (defaultColor << 22) >> 27; + defB = (defaultColor << 17) >> 27; + palDataSrc = gPlttBufferUnfaded; + palDataDst = gPlttBufferFaded; + + do { + if (palettes & 1) { + u16 *palDataSrcEnd = palDataSrc + 16; + u16 altBlendIndices = *palDataDst++ = *palDataSrc++; // 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 = palDataSrc[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 (palDataSrc != palDataSrcEnd) { + u32 palDataSrcColor = *palDataSrc; + s32 r = (palDataSrcColor << 27) >> 27; + s32 g = (palDataSrcColor << 22) >> 27; + s32 b = (palDataSrcColor << 17) >> 27; + + if (altBlendIndices & 1) { // No need to average; colors will be the same + if (altBlendColor) { // Use alternate blend color + *palDataDst = ((r + (((altR - r) * coeff0) >> 5)) << 0) + | ((g + (((altG - g) * coeff0) >> 5)) << 5) + | ((b + (((altB - b) * coeff0) >> 5)) << 10); + } else { // Use default blend color + *palDataDst = ((r + (((defR - r) * coeff0) >> 5)) << 0) + | ((g + (((defG - g) * coeff0) >> 5)) << 5) + | ((b + (((defB - b) * coeff0) >> 5)) << 10); + } + } else { // Use provided blend colors + r = (weight*(r + (((r0 - r) * coeff0) >> 5)) + (256-weight)*(r + (((r1 - r) * coeff1) >> 5))) >> 8; + g = (weight*(g + (((g0 - g) * coeff0) >> 5)) + (256-weight)*(g + (((g1 - g) * coeff1) >> 5))) >> 8; + b = (weight*(b + (((b0 - b) * coeff0) >> 5)) + (256-weight)*(b + (((b1 - b) * coeff1) >> 5))) >> 8; + *palDataDst = RGB2(r, g, b); + } + palDataSrc++; + palDataDst++; + altBlendIndices >>= 1; + } + } else { + palDataSrc += 16; + palDataDst += 16; + } + palettes >>= 1; + } while (palettes); +} + void BlendPalettesUnfaded(u32 selectedPalettes, u8 coeff, u16 color) { void *src = gPlttBufferUnfaded; From ae4f59688556375142c3b4d1931fff6e699f9544 Mon Sep 17 00:00:00 2001 From: Ariel Antonitis Date: Tue, 20 Apr 2021 00:19:07 -0400 Subject: [PATCH 089/241] Averaging function can now tint. --- include/palette.h | 2 +- src/overworld.c | 4 ++- src/palette.c | 63 ++++++++++++++++++++++++++++++++++++----------- 3 files changed, 53 insertions(+), 16 deletions(-) diff --git a/include/palette.h b/include/palette.h index 346091c64..d0a8e67a8 100644 --- a/include/palette.h +++ b/include/palette.h @@ -80,7 +80,7 @@ void AveragePalettes(u16 *palette0, u16* palette1, u16* dest, u16 weight); void TimeBlendPalette(u16 palOffset, u32 coeff, u32 blendColor); void TintPalette_RGB_Copy(u16 palOffset, u32 blendColor); void TimeBlendPalettes(u32 palettes, u32 coeff, u32 blendColor); -void TimeMixPalettes(u32 palettes, u32 coeff0, u32 color0, u32 coeff1, u32 color1, u16 weight); +void TimeMixPalettes(u32 palettes, u32 coeff0, u32 color0, u32 coeff1, u32 color1, u16 weight, bool8 tint0, bool8 tint1); void TintPalette_GrayScale(u16 *palette, u16 count); void TintPalette_GrayScale2(u16 *palette, u16 count); void TintPalette_SepiaTone(u16 *palette, u16 count); diff --git a/src/overworld.c b/src/overworld.c index 8ccdf412b..5bf44433f 100644 --- a/src/overworld.c +++ b/src/overworld.c @@ -1540,7 +1540,9 @@ void UpdatePalettesWithTime(u32 palettes) { sTimeOfDayBlendVars[currentTimeBlend.time0].blendColor, sTimeOfDayBlendVars[currentTimeBlend.time1].coeff, sTimeOfDayBlendVars[currentTimeBlend.time1].blendColor, - currentTimeBlend.weight); + currentTimeBlend.weight, + sTimeOfDayBlendVars[currentTimeBlend.time0].isTint, + sTimeOfDayBlendVars[currentTimeBlend.time1].isTint); } } diff --git a/src/palette.c b/src/palette.c index c2029adf0..c4e12cd8b 100644 --- a/src/palette.c +++ b/src/palette.c @@ -1132,7 +1132,7 @@ void TimeBlendPalettes(u32 palettes, u32 coeff, u32 blendColor) { } // Blends a weighted average of two blend parameters -void TimeMixPalettes(u32 palettes, u32 coeff0, u32 color0, u32 coeff1, u32 color1, u16 weight) { +void TimeMixPalettes(u32 palettes, u32 coeff0, u32 color0, u32 coeff1, u32 color1, u16 weight, bool8 tint0, bool8 tint1) { s32 r0, g0, b0, r1, g1, b1, defR, defG, defB, altR, altG, altB; u16 * palDataSrc; u16 * palDataDst; @@ -1141,9 +1141,8 @@ void TimeMixPalettes(u32 palettes, u32 coeff0, u32 color0, u32 coeff1, u32 color if (!palettes) return; - // TODO: Check coeff for tint - coeff0 *= 2; - coeff1 *= 2; + coeff0 = tint0 ? 8*2 : coeff0 * 2; + coeff1 = tint1 ? 8*2 : coeff1 * 2; r0 = (color0 << 27) >> 27; g0 = (color0 << 22) >> 27; b0 = (color0 << 17) >> 27; @@ -1180,20 +1179,56 @@ void TimeMixPalettes(u32 palettes, u32 coeff0, u32 color0, u32 coeff1, u32 color s32 g = (palDataSrcColor << 22) >> 27; s32 b = (palDataSrcColor << 17) >> 27; - if (altBlendIndices & 1) { // No need to average; colors will be the same + if (altBlendIndices & 1) { if (altBlendColor) { // Use alternate blend color - *palDataDst = ((r + (((altR - r) * coeff0) >> 5)) << 0) - | ((g + (((altG - g) * coeff0) >> 5)) << 5) - | ((b + (((altB - b) * coeff0) >> 5)) << 10); + r = (weight*(r + (((altR - r) * coeff0) >> 5)) + (256-weight)*(r + (((altR - r) * coeff1) >> 5))) >> 8; + g = (weight*(g + (((altG - g) * coeff0) >> 5)) + (256-weight)*(g + (((altG - g) * coeff1) >> 5))) >> 8; + b = (weight*(b + (((altB - b) * coeff0) >> 5)) + (256-weight)*(b + (((altB - b) * coeff1) >> 5))) >> 8; + *palDataDst = RGB2(r, g, b); } else { // Use default blend color - *palDataDst = ((r + (((defR - r) * coeff0) >> 5)) << 0) - | ((g + (((defG - g) * coeff0) >> 5)) << 5) - | ((b + (((defB - b) * coeff0) >> 5)) << 10); + r = (weight*(r + (((defR - r) * coeff0) >> 5)) + (256-weight)*(r + (((defR - r) * coeff1) >> 5))) >> 8; + g = (weight*(g + (((defG - g) * coeff0) >> 5)) + (256-weight)*(g + (((defG - g) * coeff1) >> 5))) >> 8; + b = (weight*(b + (((defB - b) * coeff0) >> 5)) + (256-weight)*(b + (((defB - b) * coeff1) >> 5))) >> 8; + *palDataDst = RGB2(r, g, b); } } else { // Use provided blend colors - r = (weight*(r + (((r0 - r) * coeff0) >> 5)) + (256-weight)*(r + (((r1 - r) * coeff1) >> 5))) >> 8; - g = (weight*(g + (((g0 - g) * coeff0) >> 5)) + (256-weight)*(g + (((g1 - g) * coeff1) >> 5))) >> 8; - b = (weight*(b + (((b0 - b) * coeff0) >> 5)) + (256-weight)*(b + (((b1 - b) * coeff1) >> 5))) >> 8; + 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 << 3) * r)) >> 8; + g2 = (u16)(((g0 << 3) * g)) >> 8; + b2 = (u16)(((b0 << 3) * 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 << 3) * r)) >> 8; + g3 = (u16)(((g1 << 3) * g)) >> 8; + b3 = (u16)(((b1 << 3) * b)) >> 8; + if (r3 > 31) + r3 = 31; + if (g3 > 31) + g3 = 31; + if (b3 > 31) + b3 = 31; + } + r = (weight*r2 + (256-weight)*r3) >> 8; + g = (weight*g2 + (256-weight)*g3) >> 8; + b = (weight*b2 + (256-weight)*b3) >> 8; + // r = (weight*(r + (((r0 - r) * coeff0) >> 5)) + (256-weight)*(r + (((r1 - r) * coeff1) >> 5))) >> 8; + // g = (weight*(g + (((g0 - g) * coeff0) >> 5)) + (256-weight)*(g + (((g1 - g) * coeff1) >> 5))) >> 8; + // b = (weight*(b + (((b0 - b) * coeff0) >> 5)) + (256-weight)*(b + (((b1 - b) * coeff1) >> 5))) >> 8; *palDataDst = RGB2(r, g, b); } palDataSrc++; From 73d060b3b61a49b47990813cac5afbbef1e30c2b Mon Sep 17 00:00:00 2001 From: Ariel Antonitis Date: Tue, 20 Apr 2021 01:49:02 -0400 Subject: [PATCH 090/241] Added glowing colors for some follower pokemon (Ampharos). --- .../object_events/pics/pokemon/ampharos.png | Bin 703 -> 5069 bytes graphics/pokemon/ampharos/normal.pal | 6 +++--- graphics/pokemon/ampharos/shiny.pal | 6 +++--- src/event_object_movement.c | 12 ++++++++++++ 4 files changed, 18 insertions(+), 6 deletions(-) diff --git a/graphics/object_events/pics/pokemon/ampharos.png b/graphics/object_events/pics/pokemon/ampharos.png index 076d853d035d00096907463e52259562df05647b..2386f6d45263ab682cff969859bd8c75e2a23ea0 100644 GIT binary patch delta 5039 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 FV1g;Or11a% delta 640 zcmV-`0)PF@C%*-dBa;CU7z6(R|C1aM7=Ql&|KrMtUH||BN=ZaPRCt{2m9dH&F%X7T zTqA*>W(;8$0tZ$R?dx1+Lb@wl8Z0pDO0X)tI+q85BYuITIk>`vaPJan*DKA)k*^3T z0ymBMMyr2DqZyg8cYC-0!h|!dZHJ#fa5-pU+qM55)K{e~K#Ggmld zTx1S+P@$6N99&_;y39jPti%HRoqt!X$iYHaTw^Zfy2wMp&~na$Z-Fat=2yg;P7>uF zfRsFPQs7Fj@%RUxeNHSCot%tY?S_meg)<|C8?A2H>BumPA4!92h0gq%aTxAlD5Ap1 zNI@&D*x`v0o*KdDWmOt0Hv9TaI7rFi&ZEMaV=M86l=HPPl&9riU-%qg5r0z_-+IEq zWrw0ig)_%t6R=%^NdX3SQ;rYcIqeI_^F9$E!`Ivp<}R&=05%IS#TO=<3wJRm8wh>N zqr%92ETitW%UY%38#$)qG)O#Iou%wOm6T1N1V>JdVAXc1n{;g>#{+fF0-iikQ}$=l zQp#2}g!`mmOpEGqm~rfeLW1Jnk$)t=ZWZOe#q7^a9nL!#HCKc&rYV!ReM6b&j=!~wh!>83 aWxoOMtag) == 0xFF) { // Load compressed palette LoadCompressedSpritePalette(spritePalette); sprite->oam.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 ? + // REGIS ? + u16 * palette = &gPlttBufferUnfaded[(sprite->oam.paletteNum+16)*16]; + palette[0] |= 0x8000; + if (palette[0] & 0x4000) // If color 15 is blended, use it as the alternate color + palette[15] |= 0x8000; + } UpdateSpritePaletteWithTime(sprite->oam.paletteNum); } else sprite->oam.paletteNum = IndexOfSpritePaletteTag(spritePalette->tag); // Tag is always present From da345c1eeb94dfd9d329efe5ce8270d3c13ddc52 Mon Sep 17 00:00:00 2001 From: Ariel Antonitis Date: Tue, 20 Apr 2021 03:34:14 -0400 Subject: [PATCH 091/241] Optimized time-of-day & native palette blending. --- include/palette.h | 9 +- src/overworld.c | 22 ++--- src/palette.c | 229 +++++++++++++++++++++++----------------------- 3 files changed, 129 insertions(+), 131 deletions(-) diff --git a/include/palette.h b/include/palette.h index d0a8e67a8..4fbde048a 100644 --- a/include/palette.h +++ b/include/palette.h @@ -46,6 +46,12 @@ struct PaletteFadeControl u8 deltaY:4; // rate of change of blend coefficient }; +struct BlendSettings { + u16 blendColor:15; + u16 isTint:1; + u8 coeff:5; +}; + extern struct PaletteFadeControl gPaletteFade; extern u32 gPlttBufferTransferPending; extern u8 gPaletteDecompressionBuffer[]; @@ -76,11 +82,10 @@ void BeginHardwarePaletteFade(u8, u8, u8, u8, u8); void BlendPalettes(u32 selectedPalettes, u8 coeff, u16 color); void BlendPalettesUnfaded(u32, u8, u16); void BlendPalettesGradually(u32 selectedPalettes, s8 delay, u8 coeff, u8 coeffTarget, u16 color, u8 priority, u8 id); -void AveragePalettes(u16 *palette0, u16* palette1, u16* dest, u16 weight); void TimeBlendPalette(u16 palOffset, u32 coeff, u32 blendColor); void TintPalette_RGB_Copy(u16 palOffset, u32 blendColor); void TimeBlendPalettes(u32 palettes, u32 coeff, u32 blendColor); -void TimeMixPalettes(u32 palettes, u32 coeff0, u32 color0, u32 coeff1, u32 color1, u16 weight, bool8 tint0, bool8 tint1); +void TimeMixPalettes(u32, u16 *, u16 *, struct BlendSettings *, struct BlendSettings *, u16); void TintPalette_GrayScale(u16 *palette, u16 count); void TintPalette_GrayScale2(u16 *palette, u16 count); void TintPalette_SepiaTone(u16 *palette, u16 count); diff --git a/src/overworld.c b/src/overworld.c index 5bf44433f..0028d976f 100644 --- a/src/overworld.c +++ b/src/overworld.c @@ -186,7 +186,6 @@ static u16 (*sPlayerKeyInterceptCallback)(u32); static bool8 sReceivingFromLink; static u8 sRfuKeepAliveTimer; -static u8 gTimeOfDayState; static u8 timeCounter; static struct TimeBlendSettings currentTimeBlend; @@ -1461,13 +1460,9 @@ void CB1_Overworld(void) DoCB1_Overworld(gMain.newKeys, gMain.heldKeys); } -struct TimeOfDayBlend { - u8 coeff:5; - u16 blendColor:15; - u16 isTint:1; -}; -static const struct TimeOfDayBlend sTimeOfDayBlendVars[] = + +static const struct BlendSettings sTimeOfDayBlendVars[] = { [TIME_OF_DAY_NIGHT] = {.coeff = 10, .blendColor = 0x1400}, [TIME_OF_DAY_TWILIGHT] = {.coeff = 4, .blendColor = 0x56dc, .isTint = TRUE}, @@ -1516,7 +1511,6 @@ static bool8 MapHasNaturalLight(u8 mapType) { // Weather a map type is naturally } static bool8 FadePalettesWithTime(void) { // Only used to fade back in - gTimeOfDayState = 0; gTimeOfDay = UpdateTimeOfDay(); if (MapHasNaturalLight(gMapHeader.mapType)) { ResetPaletteFade(); @@ -1536,13 +1530,11 @@ void UpdatePalettesWithTime(u32 palettes) { if (!palettes) return; TimeMixPalettes(palettes, - sTimeOfDayBlendVars[currentTimeBlend.time0].coeff, - sTimeOfDayBlendVars[currentTimeBlend.time0].blendColor, - sTimeOfDayBlendVars[currentTimeBlend.time1].coeff, - sTimeOfDayBlendVars[currentTimeBlend.time1].blendColor, - currentTimeBlend.weight, - sTimeOfDayBlendVars[currentTimeBlend.time0].isTint, - sTimeOfDayBlendVars[currentTimeBlend.time1].isTint); + gPlttBufferUnfaded, + gPlttBufferFaded, + (struct BlendSettings *)&sTimeOfDayBlendVars[currentTimeBlend.time0], + (struct BlendSettings *)&sTimeOfDayBlendVars[currentTimeBlend.time1], + currentTimeBlend.weight); } } diff --git a/src/palette.c b/src/palette.c index c4e12cd8b..e1c9628aa 100644 --- a/src/palette.c +++ b/src/palette.c @@ -966,45 +966,43 @@ static bool8 IsSoftwarePaletteFadeFinishing(void) } } -void BlendPalettes(u32 selectedPalettes, u8 coeff, u16 color) -{ - u16 paletteOffset; +// optimized based on lucktyphlosion's BlendPalettesFine +static 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; + *dst++ = *src++; // transparency is copied-through + while (src != srcEnd) { + 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); } -// Computes a weighted average of two palettes, as (p0*weight + (256-weight)*p1)/256 -void AveragePalettes(u16 *palette0, u16* palette1, u16* dest, u16 weight) { - u8 i; - u32 tempColor; - u16 r0, g0, b0, r1, g1, b1, r, g, b; - u16 color0, color1, destColor; - *dest++ = *palette0++; // Copy palette0's transparency color as is - palette1++; - for (i = 1; i < 16; i++) { // Skip transparent color - color0 = *palette0++; - color1 = *palette1++; - r0 = color0 & 0x1F; - g0 = (color0 >> 5) & 0x1F; - b0 = (color0 >> 10) & 0x1F; - r1 = color1 & 0x1F; - g1 = (color1 >> 5) & 0x1F; - b1 = (color1 >> 10) & 0x1F; - r = (weight*r0 + (256-weight)*r1) >> 8; - g = (weight*g0 + (256-weight)*g1) >> 8; - b = (weight*b0 + (256-weight)*b1) >> 8; - r = r > 31 ? 31 : r; - g = g > 31 ? 31 : g; - b = b > 31 ? 31 : b; - destColor = (color0 | color1) & 0x8000; - destColor += r + (g << 5) + (b << 10); - *dest++ = destColor; - } +void BlendPalettes(u32 palettes, u8 coeff, u16 color) { + BlendPalettesFine(palettes, gPlttBufferUnfaded, gPlttBufferFaded, coeff, color); } #define DEFAULT_LIGHT_COLOR 0x3f9f @@ -1013,11 +1011,11 @@ void AveragePalettes(u16 *palette0, u16* palette1, u16* dest, u16 weight) { // Optimization help by lucktyphlosion void TimeBlendPalette(u16 palOffset, u32 coeff, u32 blendColor) { s32 newR, newG, newB, defR, defG, defB; - u16 * palDataSrc = gPlttBufferUnfaded + palOffset; - u16 * palDataDst = gPlttBufferFaded + palOffset; + u16 * src = gPlttBufferUnfaded + palOffset; + u16 * dst = gPlttBufferFaded + palOffset; u32 defaultBlendColor = DEFAULT_LIGHT_COLOR; - u16 *palDataSrcEnd = palDataSrc + 16; - u16 altBlendIndices = *palDataDst++ = *palDataSrc++; // color 0 is copied through unchanged + u16 *srcEnd = src + 16; + u16 altBlendIndices = *dst++ = *src++; // color 0 is copied through unchanged u32 altBlendColor; coeff *= 2; @@ -1027,7 +1025,7 @@ void TimeBlendPalette(u16 palOffset, u32 coeff, u32 blendColor) { if (altBlendIndices >> 15) { // High bit set; bitmask of which colors to alt-blend // Note that bit 0 of altBlendIndices specifies color 1 - altBlendColor = palDataSrc[14]; // color 15 + altBlendColor = src[14]; // color 15 if (altBlendColor >> 15) { // Set alternate blend color defR = (altBlendColor << 27) >> 27; defG = (altBlendColor << 22) >> 27; @@ -1040,31 +1038,31 @@ void TimeBlendPalette(u16 palOffset, u32 coeff, u32 blendColor) { } else { altBlendIndices = 0; } - while (palDataSrc != palDataSrcEnd) { - u32 palDataSrcColor = *palDataSrc; - s32 r = (palDataSrcColor << 27) >> 27; - s32 g = (palDataSrcColor << 22) >> 27; - s32 b = (palDataSrcColor << 17) >> 27; + while (src != srcEnd) { + u32 srcColor = *src; + s32 r = (srcColor << 27) >> 27; + s32 g = (srcColor << 22) >> 27; + s32 b = (srcColor << 17) >> 27; if (altBlendIndices & 1) { - *palDataDst = ((r + (((defR - r) * coeff) >> 5)) << 0) + *dst = ((r + (((defR - r) * coeff) >> 5)) << 0) | ((g + (((defG - g) * coeff) >> 5)) << 5) | ((b + (((defB - b) * coeff) >> 5)) << 10); } else { // Use provided blend color - *palDataDst = ((r + (((newR - r) * coeff) >> 5)) << 0) + *dst = ((r + (((newR - r) * coeff) >> 5)) << 0) | ((g + (((newG - g) * coeff) >> 5)) << 5) | ((b + (((newB - b) * coeff) >> 5)) << 10); } - palDataSrc++; - palDataDst++; + src++; + dst++; altBlendIndices >>= 1; } } void TimeBlendPalettes(u32 palettes, u32 coeff, u32 blendColor) { s32 newR, newG, newB, defR, defG, defB, altR, altG, altB; - u16 * palDataSrc; - u16 * palDataDst; + u16 * src; + u16 * dst; u32 defaultBlendColor = DEFAULT_LIGHT_COLOR; if (!palettes) @@ -1077,17 +1075,17 @@ void TimeBlendPalettes(u32 palettes, u32 coeff, u32 blendColor) { defR = (defaultBlendColor << 27) >> 27; defG = (defaultBlendColor << 22) >> 27; defB = (defaultBlendColor << 17) >> 27; - palDataSrc = gPlttBufferUnfaded; - palDataDst = gPlttBufferFaded; + src = gPlttBufferUnfaded; + dst = gPlttBufferFaded; do { if (palettes & 1) { - u16 *palDataSrcEnd = palDataSrc + 16; - u16 altBlendIndices = *palDataDst++ = *palDataSrc++; // color 0 is copied through + 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 = palDataSrc[14]; // color 15 + altBlendColor = src[14]; // color 15 if (altBlendColor >> 15) { // Set alternate blend color altR = (altBlendColor << 27) >> 27; altG = (altBlendColor << 22) >> 27; @@ -1098,51 +1096,58 @@ void TimeBlendPalettes(u32 palettes, u32 coeff, u32 blendColor) { } else { altBlendIndices = 0; } - while (palDataSrc != palDataSrcEnd) { - u32 palDataSrcColor = *palDataSrc; - s32 r = (palDataSrcColor << 27) >> 27; - s32 g = (palDataSrcColor << 22) >> 27; - s32 b = (palDataSrcColor << 17) >> 27; + 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 - *palDataDst = ((r + (((altR - r) * coeff) >> 5)) << 0) + *dst = ((r + (((altR - r) * coeff) >> 5)) << 0) | ((g + (((altG - g) * coeff) >> 5)) << 5) | ((b + (((altB - b) * coeff) >> 5)) << 10); } else { // Use default blend color - *palDataDst = ((r + (((defR - r) * coeff) >> 5)) << 0) + *dst = ((r + (((defR - r) * coeff) >> 5)) << 0) | ((g + (((defG - g) * coeff) >> 5)) << 5) | ((b + (((defB - b) * coeff) >> 5)) << 10); } } else { // Use provided blend color - *palDataDst = ((r + (((newR - r) * coeff) >> 5)) << 0) + *dst = ((r + (((newR - r) * coeff) >> 5)) << 0) | ((g + (((newG - g) * coeff) >> 5)) << 5) | ((b + (((newB - b) * coeff) >> 5)) << 10); } - palDataSrc++; - palDataDst++; + src++; + dst++; altBlendIndices >>= 1; } } else { - palDataSrc += 16; - palDataDst += 16; + src += 16; + dst += 16; } palettes >>= 1; } while (palettes); } // Blends a weighted average of two blend parameters -void TimeMixPalettes(u32 palettes, u32 coeff0, u32 color0, u32 coeff1, u32 color1, u16 weight, bool8 tint0, bool8 tint1) { +// TODO: Should pointers be marked as const? +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; - u16 * palDataSrc; - u16 * palDataDst; + u32 color0, coeff0, color1, coeff1; + bool8 tint0, tint1; + u16 weight1; u32 defaultColor = DEFAULT_LIGHT_COLOR; if (!palettes) return; - coeff0 = tint0 ? 8*2 : coeff0 * 2; - coeff1 = tint1 ? 8*2 : coeff1 * 2; + 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; + r0 = (color0 << 27) >> 27; g0 = (color0 << 22) >> 27; b0 = (color0 << 17) >> 27; @@ -1152,17 +1157,16 @@ void TimeMixPalettes(u32 palettes, u32 coeff0, u32 color0, u32 coeff1, u32 color defR = (defaultColor << 27) >> 27; defG = (defaultColor << 22) >> 27; defB = (defaultColor << 17) >> 27; - palDataSrc = gPlttBufferUnfaded; - palDataDst = gPlttBufferFaded; + weight1 = 256 - weight0; do { if (palettes & 1) { - u16 *palDataSrcEnd = palDataSrc + 16; - u16 altBlendIndices = *palDataDst++ = *palDataSrc++; // color 0 is copied through + 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 = palDataSrc[14]; // color 15 + altBlendColor = src[14]; // color 15 if (altBlendColor >> 15) { // Set alternate blend color altR = (altBlendColor << 27) >> 27; altG = (altBlendColor << 22) >> 27; @@ -1173,23 +1177,23 @@ void TimeMixPalettes(u32 palettes, u32 coeff0, u32 color0, u32 coeff1, u32 color } else { altBlendIndices = 0; } - while (palDataSrc != palDataSrcEnd) { - u32 palDataSrcColor = *palDataSrc; - s32 r = (palDataSrcColor << 27) >> 27; - s32 g = (palDataSrcColor << 22) >> 27; - s32 b = (palDataSrcColor << 17) >> 27; + 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 = (weight*(r + (((altR - r) * coeff0) >> 5)) + (256-weight)*(r + (((altR - r) * coeff1) >> 5))) >> 8; - g = (weight*(g + (((altG - g) * coeff0) >> 5)) + (256-weight)*(g + (((altG - g) * coeff1) >> 5))) >> 8; - b = (weight*(b + (((altB - b) * coeff0) >> 5)) + (256-weight)*(b + (((altB - b) * coeff1) >> 5))) >> 8; - *palDataDst = RGB2(r, g, b); + 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 = (weight*(r + (((defR - r) * coeff0) >> 5)) + (256-weight)*(r + (((defR - r) * coeff1) >> 5))) >> 8; - g = (weight*(g + (((defG - g) * coeff0) >> 5)) + (256-weight)*(g + (((defG - g) * coeff1) >> 5))) >> 8; - b = (weight*(b + (((defB - b) * coeff0) >> 5)) + (256-weight)*(b + (((defB - b) * coeff1) >> 5))) >> 8; - *palDataDst = RGB2(r, g, b); + 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; @@ -1223,21 +1227,18 @@ void TimeMixPalettes(u32 palettes, u32 coeff0, u32 color0, u32 coeff1, u32 color if (b3 > 31) b3 = 31; } - r = (weight*r2 + (256-weight)*r3) >> 8; - g = (weight*g2 + (256-weight)*g3) >> 8; - b = (weight*b2 + (256-weight)*b3) >> 8; - // r = (weight*(r + (((r0 - r) * coeff0) >> 5)) + (256-weight)*(r + (((r1 - r) * coeff1) >> 5))) >> 8; - // g = (weight*(g + (((g0 - g) * coeff0) >> 5)) + (256-weight)*(g + (((g1 - g) * coeff1) >> 5))) >> 8; - // b = (weight*(b + (((b0 - b) * coeff0) >> 5)) + (256-weight)*(b + (((b1 - b) * coeff1) >> 5))) >> 8; - *palDataDst = RGB2(r, g, b); + r = (weight0*r2 + weight1*r3) >> 8; + g = (weight0*g2 + weight1*g3) >> 8; + b = (weight0*b2 + weight1*b3) >> 8; + *dst = RGB2(r, g, b); } - palDataSrc++; - palDataDst++; + src++; + dst++; altBlendIndices >>= 1; } } else { - palDataSrc += 16; - palDataDst += 16; + src += 16; + dst += 16; } palettes >>= 1; } while (palettes); @@ -1345,11 +1346,11 @@ 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 * palDataSrc = gPlttBufferUnfaded + palOffset; - u16 * palDataDst = gPlttBufferFaded + palOffset; + u16 * src = gPlttBufferUnfaded + palOffset; + u16 * dst = gPlttBufferFaded + palOffset; u32 defaultBlendColor = DEFAULT_LIGHT_COLOR; - u16 *palDataSrcEnd = palDataSrc + 16; - u16 altBlendIndices = *palDataDst++ = *palDataSrc++; // color 0 is copied through unchanged + u16 *srcEnd = src + 16; + u16 altBlendIndices = *dst++ = *src++; // color 0 is copied through unchanged u32 altBlendColor; newR = ((blendColor << 27) >> 27) << 3; @@ -1358,7 +1359,7 @@ void TintPalette_RGB_Copy(u16 palOffset, u32 blendColor) { if (altBlendIndices >> 15) { // High bit set; bitmask of which colors to alt-blend // Note that bit 0 of altBlendIndices specifies color 1 - altBlendColor = palDataSrc[14]; // color 15 + altBlendColor = src[14]; // color 15 if (altBlendColor >> 15) { // Set alternate blend color rTone = ((altBlendColor << 27) >> 27) << 3; gTone = ((altBlendColor << 22) >> 27) << 3; @@ -1371,11 +1372,11 @@ void TintPalette_RGB_Copy(u16 palOffset, u32 blendColor) { } else { altBlendIndices = 0; } - while (palDataSrc != palDataSrcEnd) { - u32 palDataSrcColor = *palDataSrc; - s32 r = (palDataSrcColor << 27) >> 27; - s32 g = (palDataSrcColor << 22) >> 27; - s32 b = (palDataSrcColor << 17) >> 27; + 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; @@ -1392,8 +1393,8 @@ void TintPalette_RGB_Copy(u16 palOffset, u32 blendColor) { g = 31; if (b > 31) b = 31; - palDataSrc++; - *palDataDst++ = RGB2(r, g, b); + src++; + *dst++ = RGB2(r, g, b); altBlendIndices >>= 1; } } From 4bb7abb520dabd862cc0be3e85fd6e8f5f9b8878 Mon Sep 17 00:00:00 2001 From: Ariel Antonitis Date: Wed, 21 Apr 2021 02:53:24 -0400 Subject: [PATCH 092/241] Fixed palette fades during intermediate times of day. --- include/palette.h | 10 +++++-- src/overworld.c | 5 +++- src/palette.c | 74 +++++++++++++++++++++++++++++++++++------------ 3 files changed, 68 insertions(+), 21 deletions(-) diff --git a/include/palette.h b/include/palette.h index 4fbde048a..4b7abd865 100644 --- a/include/palette.h +++ b/include/palette.h @@ -28,7 +28,13 @@ enum struct PaletteFadeControl { - u32 multipurpose1; + u32 multipurpose1; // This field needs to exist or errors will occur + u16 blendColor1:15; + u16 tint1:1; + u32 tint0:1; + u32 coeff0:5; + u32 coeff1:5; + u32 weight:9; u8 delayCounter:6; u16 y:5; // blend coefficient u16 targetY:5; // target blend coefficient @@ -66,7 +72,7 @@ u8 UpdatePaletteFade(void); void ResetPaletteFade(void); void ReadPlttIntoBuffers(void); bool8 BeginNormalPaletteFade(u32, s8, u8, u8, u16); -bool8 BeginTimeOfDayPaletteFade(u32, s8, u8, u8, u16); +bool8 BeginTimeOfDayPaletteFade(u32, s8, u8, u8, struct BlendSettings *, struct BlendSettings *, u16); bool8 unref_sub_8073D3C(u32, u8, u8, u8, u16); void unref_sub_8073D84(u8, u32 *); void ResetPaletteStructByUid(u16); diff --git a/src/overworld.c b/src/overworld.c index 0028d976f..53b693a83 100644 --- a/src/overworld.c +++ b/src/overworld.c @@ -1514,7 +1514,10 @@ static bool8 FadePalettesWithTime(void) { // Only used to fade back in gTimeOfDay = UpdateTimeOfDay(); if (MapHasNaturalLight(gMapHeader.mapType)) { ResetPaletteFade(); - BeginTimeOfDayPaletteFade(0xFFFFFFFF, 0, 16, sTimeOfDayBlendVars[gTimeOfDay].coeff, sTimeOfDayBlendVars[gTimeOfDay].blendColor); + BeginTimeOfDayPaletteFade(0xFFFFFFFF, 0, 16, 0, + (struct BlendSettings *)&sTimeOfDayBlendVars[currentTimeBlend.time0], + (struct BlendSettings *)&sTimeOfDayBlendVars[currentTimeBlend.time1], + currentTimeBlend.weight); } } diff --git a/src/palette.c b/src/palette.c index e1c9628aa..9015a42ee 100644 --- a/src/palette.c +++ b/src/palette.c @@ -55,6 +55,7 @@ static u8 UpdateTimeOfDayPaletteFade(void); static void UpdateBlendRegisters(void); static bool8 IsSoftwarePaletteFadeFinishing(void); static void Task_BlendPalettesGradually(u8 taskId); +static void BlendPalettesFine(u32 palettes, u16 *src, u16 *dst, u32 coeff, u32 color); // palette buffers require alignment with agbcc because // unaligned word reads are issued in BlendPalette otherwise @@ -204,10 +205,10 @@ 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, u16 blendColor) +// Blend color here is always assumed to be 0 (black). +bool8 BeginTimeOfDayPaletteFade(u32 selectedPalettes, s8 delay, u8 startY, u8 targetY, struct BlendSettings *bld0, struct BlendSettings *bld1, u16 weight) { u8 temp; - u16 color = blendColor; if (gPaletteFade.active) { @@ -228,10 +229,17 @@ bool8 BeginTimeOfDayPaletteFade(u32 selectedPalettes, s8 delay, u8 startY, u8 ta gPaletteFade_delay = delay; gPaletteFade.y = startY; gPaletteFade.targetY = targetY; - gPaletteFade.blendColor = color; gPaletteFade.active = 1; gPaletteFade.mode = TIME_OF_DAY_FADE; + gPaletteFade.blendColor = bld0->blendColor; + gPaletteFade.coeff0 = bld0->coeff; + gPaletteFade.tint0 = bld0->isTint; + gPaletteFade.blendColor1 = bld1->blendColor; + gPaletteFade.coeff1 = bld1->coeff; + gPaletteFade.tint1 = bld1->isTint; + gPaletteFade.weight = weight; + if (startY < targetY) gPaletteFade.yDec = 0; else @@ -462,6 +470,12 @@ 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; + struct BlendSettings bld0; + struct BlendSettings bld1; if (!gPaletteFade.active) return PALETTE_FADE_STATUS_DONE; @@ -491,22 +505,47 @@ static u8 UpdateTimeOfDayPaletteFade(void) paletteOffset = 256; } - for (paletteNum = 0; paletteNum < 16; paletteNum++, selectedPalettes >>= 1, paletteOffset += 16) { - if (selectedPalettes & 1) { - if (gPaletteFade.yDec) { - if (gPaletteFade.objPaletteToggle) { // sprite palettes - if (gPaletteFade.y >= gPaletteFade.targetY || GetSpritePaletteTagByPaletteNum(paletteNum) & 0x8000) - TimeBlendPalette(paletteOffset, gPaletteFade.y, gPaletteFade.blendColor); - // tile palettes - } else if (gPaletteFade.y >= gPaletteFade.targetY || (paletteNum >= 13 && paletteNum <= 15)) { - TimeBlendPalette(paletteOffset, gPaletteFade.y, gPaletteFade.blendColor); - } - } else { - TimeBlendPalette(paletteOffset, gPaletteFade.y, gPaletteFade.blendColor); - } + // Extract blend settings from palette fade struct TODO: Embed struct within gPaletteFade + bld0.blendColor = gPaletteFade.blendColor; + bld0.coeff = gPaletteFade.coeff0; + bld0.isTint = gPaletteFade.tint0; + bld1.blendColor = gPaletteFade.blendColor1; + bld1.coeff = gPaletteFade.coeff1; + bld1.isTint = gPaletteFade.tint1; + + 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 &= ~0xE000; + } + TimeMixPalettes(timePalettes, src, dst, &bld0, &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, 64); + copyPalettes >>= 1; + src1 += 16; + dst1 += 16; } } + // Then, blend from faded->faded with native BlendPalettes + BlendPalettesFine(selectedPalettes, dst, dst, gPaletteFade.y, 0); + gPaletteFade.objPaletteToggle ^= 1; if (!gPaletteFade.objPaletteToggle) @@ -981,8 +1020,7 @@ static void BlendPalettesFine(u32 palettes, u16 *src, u16 *dst, u32 coeff, u32 c do { if (palettes & 1) { u16 *srcEnd = src + 16; - *dst++ = *src++; // transparency is copied-through - while (src != srcEnd) { + 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; From 96d0f7ed7d78eb18fb618a7a04f6766bbf34caa8 Mon Sep 17 00:00:00 2001 From: Ariel Antonitis Date: Thu, 22 Apr 2021 03:54:42 -0400 Subject: [PATCH 093/241] Fixed bug in TOD blending. --- src/overworld.c | 2 +- src/palette.c | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/overworld.c b/src/overworld.c index 53b693a83..8bcbc17aa 100644 --- a/src/overworld.c +++ b/src/overworld.c @@ -1529,7 +1529,7 @@ void UpdatePalettesWithTime(u32 palettes) { if (GetSpritePaletteTagByPaletteNum(i) >> 15) // Don't blend special sprite palette tags palettes &= ~(1 << (i + 16)); } - palettes &= ~0xE000; // Don't blend tile palettes [13,15] + palettes &= 0xFFFF1FFF; // Don't blend tile palettes [13,15] if (!palettes) return; TimeMixPalettes(palettes, diff --git a/src/palette.c b/src/palette.c index 9015a42ee..704740a06 100644 --- a/src/palette.c +++ b/src/palette.c @@ -526,7 +526,7 @@ static u8 UpdateTimeOfDayPaletteFade(void) } } else { // tile palettes, don't blend [13, 15] - timePalettes = selectedPalettes &= ~0xE000; + timePalettes = selectedPalettes & 0x1FFF; } TimeMixPalettes(timePalettes, src, dst, &bld0, &bld1, gPaletteFade.weight); From 741e880c245bbeaff47599ae120a8d3a2d3cbd2a Mon Sep 17 00:00:00 2001 From: Ariel Antonitis Date: Sat, 24 Apr 2021 00:43:53 -0400 Subject: [PATCH 094/241] Increased TOD update interval. --- src/overworld.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/overworld.c b/src/overworld.c index 8bcbc17aa..ce68cfbd8 100644 --- a/src/overworld.c +++ b/src/overworld.c @@ -1557,7 +1557,7 @@ static void OverworldBasic(void) UpdatePaletteFade(); UpdateTilesetAnimations(); DoScheduledBgTilemapCopiesToVram(); - if (!(gPaletteFade.active || (timeCounter++ % 60))) { + if (!(gPaletteFade.active || (timeCounter++ % 3600))) { struct TimeBlendSettings cachedBlend = { .time0 = currentTimeBlend.time0, .time1 = currentTimeBlend.time1, From a4680ed572c831138450a673677c5cb439db53a2 Mon Sep 17 00:00:00 2001 From: Ariel Antonitis Date: Sat, 24 Apr 2021 00:57:11 -0400 Subject: [PATCH 095/241] Minor TOD documentation. --- src/overworld.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/overworld.c b/src/overworld.c index ce68cfbd8..659d8bec9 100644 --- a/src/overworld.c +++ b/src/overworld.c @@ -1474,7 +1474,7 @@ u8 UpdateTimeOfDay(void) { RtcCalcLocalTime(); hours = gLocalTime.hours; minutes = gLocalTime.minutes; - if (hours >= 22 || hours < 4) { + if (hours >= 22 || hours < 4) { // night currentTimeBlend.weight = 256; return gTimeOfDay = currentTimeBlend.time0 = currentTimeBlend.time1 = TIME_OF_DAY_NIGHT; } else if (hours >= 4 && hours < 7) { // night->twilight @@ -1501,7 +1501,8 @@ u8 UpdateTimeOfDay(void) { currentTimeBlend.weight = 256 - 256 * ((hours - 20) * 60 + minutes) / ((22-20)*60); return gTimeOfDay = TIME_OF_DAY_NIGHT; } else { // This should never occur - return TIME_OF_DAY_MAX; + currentTimeBlend.weight = 256; + return gTimeOfDay = currentTimeBlend.time0 = currentTimeBlend.time1 = TIME_OF_DAY_DAY; } } @@ -1557,6 +1558,7 @@ static void OverworldBasic(void) UpdatePaletteFade(); UpdateTilesetAnimations(); DoScheduledBgTilemapCopiesToVram(); + // Every minute if no palette fade is active, update TOD blending as needed if (!(gPaletteFade.active || (timeCounter++ % 3600))) { struct TimeBlendSettings cachedBlend = { .time0 = currentTimeBlend.time0, From dbc4cb82932414cee4ef00f4d2d61e5f2a6f1001 Mon Sep 17 00:00:00 2001 From: Ariel Antonitis Date: Sat, 24 Apr 2021 01:12:04 -0400 Subject: [PATCH 096/241] Refactored BlendSettings storage inside gPaletteFade. --- include/palette.h | 22 ++++++++++------------ src/overworld.c | 2 +- src/palette.c | 21 ++++----------------- 3 files changed, 15 insertions(+), 30 deletions(-) diff --git a/include/palette.h b/include/palette.h index 4b7abd865..886c05c38 100644 --- a/include/palette.h +++ b/include/palette.h @@ -26,15 +26,19 @@ enum FAST_FADE_OUT_TO_BLACK, }; +struct BlendSettings { + u16 blendColor:15; + u16 isTint:1; + u8 coeff:5; +}; + struct PaletteFadeControl { u32 multipurpose1; // This field needs to exist or errors will occur - u16 blendColor1:15; - u16 tint1:1; - u32 tint0:1; - u32 coeff0:5; - u32 coeff1:5; - u32 weight:9; + // 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 @@ -52,12 +56,6 @@ struct PaletteFadeControl u8 deltaY:4; // rate of change of blend coefficient }; -struct BlendSettings { - u16 blendColor:15; - u16 isTint:1; - u8 coeff:5; -}; - extern struct PaletteFadeControl gPaletteFade; extern u32 gPlttBufferTransferPending; extern u8 gPaletteDecompressionBuffer[]; diff --git a/src/overworld.c b/src/overworld.c index 659d8bec9..a3b3649fa 100644 --- a/src/overworld.c +++ b/src/overworld.c @@ -1506,7 +1506,7 @@ u8 UpdateTimeOfDay(void) { } } -static bool8 MapHasNaturalLight(u8 mapType) { // Weather a map type is naturally lit/outside +static 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; } diff --git a/src/palette.c b/src/palette.c index 704740a06..d7974779c 100644 --- a/src/palette.c +++ b/src/palette.c @@ -232,12 +232,9 @@ bool8 BeginTimeOfDayPaletteFade(u32 selectedPalettes, s8 delay, u8 startY, u8 ta gPaletteFade.active = 1; gPaletteFade.mode = TIME_OF_DAY_FADE; - gPaletteFade.blendColor = bld0->blendColor; - gPaletteFade.coeff0 = bld0->coeff; - gPaletteFade.tint0 = bld0->isTint; - gPaletteFade.blendColor1 = bld1->blendColor; - gPaletteFade.coeff1 = bld1->coeff; - gPaletteFade.tint1 = bld1->isTint; + gPaletteFade.blendColor = 0; + gPaletteFade.bld0 = bld0; + gPaletteFade.bld1 = bld1; gPaletteFade.weight = weight; if (startY < targetY) @@ -474,8 +471,6 @@ static u8 UpdateTimeOfDayPaletteFade(void) u16 copyPalettes; u16 * src; u16 * dst; - struct BlendSettings bld0; - struct BlendSettings bld1; if (!gPaletteFade.active) return PALETTE_FADE_STATUS_DONE; @@ -505,14 +500,6 @@ static u8 UpdateTimeOfDayPaletteFade(void) paletteOffset = 256; } - // Extract blend settings from palette fade struct TODO: Embed struct within gPaletteFade - bld0.blendColor = gPaletteFade.blendColor; - bld0.coeff = gPaletteFade.coeff0; - bld0.isTint = gPaletteFade.tint0; - bld1.blendColor = gPaletteFade.blendColor1; - bld1.coeff = gPaletteFade.coeff1; - bld1.isTint = gPaletteFade.tint1; - src = gPlttBufferUnfaded + paletteOffset; dst = gPlttBufferFaded + paletteOffset; @@ -528,7 +515,7 @@ static u8 UpdateTimeOfDayPaletteFade(void) } else { // tile palettes, don't blend [13, 15] timePalettes = selectedPalettes & 0x1FFF; } - TimeMixPalettes(timePalettes, src, dst, &bld0, &bld1, gPaletteFade.weight); + TimeMixPalettes(timePalettes, src, dst, gPaletteFade.bld0, gPaletteFade.bld1, gPaletteFade.weight); // palettes that were not blended above must be copied through if ((copyPalettes = ~timePalettes)) { From 4454a6397b3c0006916ad071f788781ffa61e2ef Mon Sep 17 00:00:00 2001 From: Ariel Antonitis Date: Sat, 24 Apr 2021 01:17:39 -0400 Subject: [PATCH 097/241] Fixed bug where TOD was updated too frequently. --- include/overworld.h | 1 + include/palette.h | 1 - src/overworld.c | 8 ++--- src/palette.c | 72 +-------------------------------------------- 4 files changed, 6 insertions(+), 76 deletions(-) diff --git a/include/overworld.h b/include/overworld.h index 2180a87a9..58cf5b16a 100644 --- a/include/overworld.h +++ b/include/overworld.h @@ -141,6 +141,7 @@ void CleanupOverworldWindowsAndTilemaps(void); bool32 IsUpdateLinkStateCBActive(void); void CB1_Overworld(void); void CB2_OverworldBasic(void); +u8 UpdateTimeOfDay(void); void UpdatePalettesWithTime(u32); void CB2_Overworld(void); void SetMainCallback1(void (*cb)(void)); diff --git a/include/palette.h b/include/palette.h index 886c05c38..89de237c2 100644 --- a/include/palette.h +++ b/include/palette.h @@ -88,7 +88,6 @@ void BlendPalettesUnfaded(u32, u8, u16); 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 TimeBlendPalettes(u32 palettes, u32 coeff, u32 blendColor); void TimeMixPalettes(u32, u16 *, u16 *, struct BlendSettings *, struct BlendSettings *, u16); void TintPalette_GrayScale(u16 *palette, u16 count); void TintPalette_GrayScale2(u16 *palette, u16 count); diff --git a/src/overworld.c b/src/overworld.c index a3b3649fa..51e4279fb 100644 --- a/src/overworld.c +++ b/src/overworld.c @@ -186,7 +186,7 @@ static u16 (*sPlayerKeyInterceptCallback)(u32); static bool8 sReceivingFromLink; static u8 sRfuKeepAliveTimer; -static u8 timeCounter; +static u16 sTimeUpdateCounter; // playTimeVBlanks will eventually overflow, so this is used to update TOD static struct TimeBlendSettings currentTimeBlend; // IWRAM common @@ -1542,7 +1542,7 @@ void UpdatePalettesWithTime(u32 palettes) { } } -u8 UpdateSpritePaletteWithTime(u8 paletteNum) { // TODO: Optimize this +u8 UpdateSpritePaletteWithTime(u8 paletteNum) { UpdatePalettesWithTime(1 << (paletteNum + 16)); return paletteNum; } @@ -1559,13 +1559,13 @@ static void OverworldBasic(void) UpdateTilesetAnimations(); DoScheduledBgTilemapCopiesToVram(); // Every minute if no palette fade is active, update TOD blending as needed - if (!(gPaletteFade.active || (timeCounter++ % 3600))) { + if (!(gPaletteFade.active || (++sTimeUpdateCounter % 3600))) { struct TimeBlendSettings cachedBlend = { .time0 = currentTimeBlend.time0, .time1 = currentTimeBlend.time1, .weight = currentTimeBlend.weight, }; - timeCounter = 0; + sTimeUpdateCounter = 0; UpdateTimeOfDay(); if (cachedBlend.time0 != currentTimeBlend.time0 || cachedBlend.time1 != currentTimeBlend.time1 diff --git a/src/palette.c b/src/palette.c index d7974779c..37b30d0c3 100644 --- a/src/palette.c +++ b/src/palette.c @@ -1084,78 +1084,8 @@ void TimeBlendPalette(u16 palOffset, u32 coeff, u32 blendColor) { } } -void TimeBlendPalettes(u32 palettes, u32 coeff, u32 blendColor) { - s32 newR, newG, newB, defR, defG, defB, altR, altG, altB; - u16 * src; - u16 * dst; - u32 defaultBlendColor = DEFAULT_LIGHT_COLOR; - - if (!palettes) - return; - - coeff *= 2; - newR = (blendColor << 27) >> 27; - newG = (blendColor << 22) >> 27; - newB = (blendColor << 17) >> 27; - defR = (defaultBlendColor << 27) >> 27; - defG = (defaultBlendColor << 22) >> 27; - defB = (defaultBlendColor << 17) >> 27; - src = gPlttBufferUnfaded; - dst = gPlttBufferFaded; - - 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 - *dst = ((r + (((altR - r) * coeff) >> 5)) << 0) - | ((g + (((altG - g) * coeff) >> 5)) << 5) - | ((b + (((altB - b) * coeff) >> 5)) << 10); - } else { // Use default blend color - *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; - } - } else { - src += 16; - dst += 16; - } - palettes >>= 1; - } while (palettes); -} - // Blends a weighted average of two blend parameters -// TODO: Should pointers be marked as const? +// 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; From 68e43a8f0453d44077cbf992f780cad17ada8483 Mon Sep 17 00:00:00 2001 From: Ariel Antonitis Date: Sat, 24 Apr 2021 01:35:19 -0400 Subject: [PATCH 098/241] Updated time-of-day-based evolution methods. --- src/pokemon.c | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/src/pokemon.c b/src/pokemon.c index 0b50a72f3..21daf2ec6 100644 --- a/src/pokemon.c +++ b/src/pokemon.c @@ -4878,7 +4878,7 @@ bool8 PokemonUseItemEffects(struct Pokemon *mon, u16 item, u8 partyIndex, u8 mov temp2 = itemEffect[itemEffectParam]; dataSigned = GetMonData(mon, sGetMonDataEVConstants[temp1], NULL); evChange = temp2; - + if (evChange > 0) // Increasing EV (HP or Atk) { // Has EV increase limit already been reached? @@ -4976,7 +4976,7 @@ bool8 PokemonUseItemEffects(struct Pokemon *mon, u16 item, u8 partyIndex, u8 mov { if (!usedByAI) { - // Restore HP + // Restore HP dataUnsigned = GetMonData(mon, MON_DATA_HP, NULL) + dataUnsigned; if (dataUnsigned > GetMonData(mon, MON_DATA_MAX_HP, NULL)) dataUnsigned = GetMonData(mon, MON_DATA_MAX_HP, NULL); @@ -5055,7 +5055,7 @@ bool8 PokemonUseItemEffects(struct Pokemon *mon, u16 item, u8 partyIndex, u8 mov dataUnsigned = CalculatePPWithBonus(moveId, GetMonData(mon, MON_DATA_PP_BONUSES, NULL), moveIndex); } SetMonData(mon, MON_DATA_PP1 + moveIndex, &dataUnsigned); - + // Heal battler PP too (if applicable) if (gMain.inBattle && battlerId != MAX_BATTLERS_COUNT && !(gBattleMons[battlerId].status2 & STATUS2_TRANSFORMED) @@ -5092,7 +5092,7 @@ bool8 PokemonUseItemEffects(struct Pokemon *mon, u16 item, u8 partyIndex, u8 mov case 5: effectFlags = itemEffect[i]; temp1 = 0; - + // Loop through and try each of the ITEM5 effects while (effectFlags != 0) { @@ -5437,13 +5437,13 @@ u16 GetEvolutionTargetSpecies(struct Pokemon *mon, u8 mode, u16 evolutionItem) targetSpecies = gEvolutionTable[species][i].targetSpecies; break; case EVO_FRIENDSHIP_DAY: - RtcCalcLocalTime(); - if (gLocalTime.hours >= 12 && gLocalTime.hours < 24 && 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 < 12 && friendship >= 220) + UpdateTimeOfDay(); + if (gTimeOfDay == TIME_OF_DAY_NIGHT && friendship >= 220) targetSpecies = gEvolutionTable[species][i].targetSpecies; break; case EVO_LEVEL: From a160012dbfd6eebbec05fd2442154055c3da8419 Mon Sep 17 00:00:00 2001 From: Ariel Antonitis Date: Sat, 24 Apr 2021 02:18:41 -0400 Subject: [PATCH 099/241] Added shadow toggle to weather structure. --- include/field_weather.h | 3 ++- src/event_object_movement.c | 4 ++-- src/field_effect_helpers.c | 1 + src/field_weather.c | 1 + src/field_weather_effect.c | 13 +++++++++++++ 5 files changed, 19 insertions(+), 3 deletions(-) diff --git a/include/field_weather.h b/include/field_weather.h index 9c6a4ab7a..c462707f9 100644 --- a/include/field_weather.h +++ b/include/field_weather.h @@ -45,7 +45,8 @@ struct Weather s8 gammaTargetIndex; u8 gammaStepDelay; u8 gammaStepFrameCounter; - 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; diff --git a/src/event_object_movement.c b/src/event_object_movement.c index ce94116aa..939ff3ca6 100644 --- a/src/event_object_movement.c +++ b/src/event_object_movement.c @@ -8856,14 +8856,14 @@ static void GroundEffect_Shadow(struct ObjectEvent *objEvent, struct Sprite *spr 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); - GroundEffect_Shadow(objEvent, sprite); + if (!gWeatherPtr->noShadows) + GroundEffect_Shadow(objEvent, sprite); } void filters_out_some_ground_effects(struct ObjectEvent *objEvent, u32 *flags) diff --git a/src/field_effect_helpers.c b/src/field_effect_helpers.c index f3d4d7149..ed5ffecd6 100755 --- a/src/field_effect_helpers.c +++ b/src/field_effect_helpers.c @@ -349,6 +349,7 @@ void UpdateShadowFieldEffect(struct Sprite *sprite) sprite->invisible = linkedSprite->invisible; if (!objectEvent->active || objectEvent->noShadow + || gWeatherPtr->noShadows || MetatileBehavior_IsPokeGrass(objectEvent->currentMetatileBehavior) || MetatileBehavior_IsSurfableWaterOrUnderwater(objectEvent->currentMetatileBehavior) || MetatileBehavior_IsSurfableWaterOrUnderwater(objectEvent->previousMetatileBehavior)) diff --git a/src/field_weather.c b/src/field_weather.c index 0b8427c29..e94d6f254 100644 --- a/src/field_weather.c +++ b/src/field_weather.c @@ -255,6 +255,7 @@ static void Task_WeatherMain(u8 taskId) static void None_Init(void) { Weather_SetBlendCoeffs(8, 12); // Indoor shadows + gWeatherPtr->noShadows = FALSE; gWeatherPtr->gammaTargetIndex = 0; gWeatherPtr->gammaStepDelay = 0; } diff --git a/src/field_weather_effect.c b/src/field_weather_effect.c index d8eff78b7..36ca937b6 100644 --- a/src/field_weather_effect.c +++ b/src/field_weather_effect.c @@ -95,6 +95,7 @@ static const struct SpriteTemplate sCloudSpriteTemplate = void Clouds_InitVars(void) { + gWeatherPtr->noShadows = FALSE; gWeatherPtr->gammaTargetIndex = 0; gWeatherPtr->gammaStepDelay = 20; gWeatherPtr->weatherGfxLoaded = FALSE; @@ -156,6 +157,7 @@ void Sunny_InitVars(void) gWeatherPtr->gammaTargetIndex = 0; gWeatherPtr->gammaStepDelay = 20; Weather_SetBlendCoeffs(8, 12); + gWeatherPtr->noShadows = FALSE; } void Sunny_InitAll(void) @@ -239,6 +241,7 @@ void Drought_InitVars(void) gWeatherPtr->weatherGfxLoaded = FALSE; gWeatherPtr->gammaTargetIndex = 0; gWeatherPtr->gammaStepDelay = 0; + gWeatherPtr->noShadows = FALSE; } void Drought_InitAll(void) @@ -482,6 +485,7 @@ void Rain_InitVars(void) gWeatherPtr->gammaStepDelay = 20; SetRainStrengthFromSoundEffect(SE_RAIN); Weather_SetBlendCoeffs(8, 12); // preserve shadow darkness + gWeatherPtr->noShadows = FALSE; } void Rain_InitAll(void) @@ -776,6 +780,7 @@ void Snow_InitVars(void) gWeatherPtr->targetSnowflakeSpriteCount = 16; gWeatherPtr->snowflakeVisibleCounter = 0; Weather_SetBlendCoeffs(8, 12); // preserve shadow darkness + gWeatherPtr->noShadows = FALSE; } void Snow_InitAll(void) @@ -1052,6 +1057,7 @@ void Thunderstorm_InitVars(void) gWeatherPtr->thunderTriggered = FALSE; SetRainStrengthFromSoundEffect(SE_THUNDERSTORM); Weather_SetBlendCoeffs(8, 12); // preserve shadow darkness + gWeatherPtr->noShadows = FALSE; } void Thunderstorm_InitAll(void) @@ -1081,6 +1087,7 @@ void Downpour_InitVars(void) gWeatherPtr->weatherGfxLoaded = FALSE; // duplicate assignment SetRainStrengthFromSoundEffect(SE_DOWNPOUR); Weather_SetBlendCoeffs(8, 12); // preserve shadow darkness + gWeatherPtr->noShadows = FALSE; } void Downpour_InitAll(void) @@ -1378,6 +1385,7 @@ void FogHorizontal_InitVars(void) gWeatherPtr->fogHScrollPosX = 0; Weather_SetBlendCoeffs(0, 16); } + gWeatherPtr->noShadows = TRUE; // TODO: Can fog be made compatible with shadows? } void FogHorizontal_InitAll(void) @@ -1532,6 +1540,7 @@ void Ash_InitVars(void) 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) @@ -1748,6 +1757,7 @@ void FogDiagonal_InitVars(void) gWeatherPtr->fogDPosY = 0; Weather_SetBlendCoeffs(0, 16); } + gWeatherPtr->noShadows = TRUE; } void FogDiagonal_InitAll(void) @@ -1961,6 +1971,7 @@ void Sandstorm_InitVars(void) Weather_SetBlendCoeffs(0, 16); } + gWeatherPtr->noShadows = TRUE; // TODO: Can sandstorm be compatible with shadows? } void Sandstorm_InitAll(void) @@ -2248,6 +2259,7 @@ void Shade_InitVars(void) gWeatherPtr->gammaTargetIndex = 3; gWeatherPtr->gammaStepDelay = 20; Weather_SetBlendCoeffs(8, 12); // preserve shadow darkness + gWeatherPtr->noShadows = FALSE; } void Shade_InitAll(void) @@ -2309,6 +2321,7 @@ void Bubbles_InitVars(void) gWeatherPtr->bubblesCoordsIndex = 0; gWeatherPtr->bubblesSpriteCount = 0; } + gWeatherPtr->noShadows = TRUE; } void Bubbles_InitAll(void) From 0cc6c7b111e60ee941a5b858a9ce54e19a5d83a3 Mon Sep 17 00:00:00 2001 From: Ariel Antonitis Date: Sat, 24 Apr 2021 02:56:16 -0400 Subject: [PATCH 100/241] Made BlendPalettesFine global. --- include/palette.h | 1 + src/palette.c | 3 +-- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/include/palette.h b/include/palette.h index 89de237c2..3b0368aca 100644 --- a/include/palette.h +++ b/include/palette.h @@ -84,6 +84,7 @@ void UnfadePlttBuffer(u32); void BeginFastPaletteFade(u8); void BeginHardwarePaletteFade(u8, u8, u8, u8, u8); void BlendPalettes(u32 selectedPalettes, u8 coeff, u16 color); +void BlendPalettesFine(u32 palettes, u16 *src, u16 *dst, u32 coeff, u32 color); void BlendPalettesUnfaded(u32, u8, u16); void BlendPalettesGradually(u32 selectedPalettes, s8 delay, u8 coeff, u8 coeffTarget, u16 color, u8 priority, u8 id); void TimeBlendPalette(u16 palOffset, u32 coeff, u32 blendColor); diff --git a/src/palette.c b/src/palette.c index 37b30d0c3..8b08eb9e4 100644 --- a/src/palette.c +++ b/src/palette.c @@ -55,7 +55,6 @@ static u8 UpdateTimeOfDayPaletteFade(void); static void UpdateBlendRegisters(void); static bool8 IsSoftwarePaletteFadeFinishing(void); static void Task_BlendPalettesGradually(u8 taskId); -static void BlendPalettesFine(u32 palettes, u16 *src, u16 *dst, u32 coeff, u32 color); // palette buffers require alignment with agbcc because // unaligned word reads are issued in BlendPalette otherwise @@ -993,7 +992,7 @@ static bool8 IsSoftwarePaletteFadeFinishing(void) } // optimized based on lucktyphlosion's BlendPalettesFine -static void BlendPalettesFine(u32 palettes, u16 *src, u16 *dst, u32 coeff, u32 color) { +void BlendPalettesFine(u32 palettes, u16 *src, u16 *dst, u32 coeff, u32 color) { s32 newR, newG, newB; if (!palettes) From c0d6692ce8a43abb1968eb779a3273351da7911a Mon Sep 17 00:00:00 2001 From: Ariel Antonitis Date: Sat, 24 Apr 2021 02:56:33 -0400 Subject: [PATCH 101/241] Fixed weather gamma blending. --- src/field_weather.c | 12 ++++++++---- src/overworld.c | 1 + 2 files changed, 9 insertions(+), 4 deletions(-) diff --git a/src/field_weather.c b/src/field_weather.c index e94d6f254..089fcf989 100644 --- a/src/field_weather.c +++ b/src/field_weather.c @@ -16,6 +16,7 @@ #include "task.h" #include "trig.h" #include "gpu_regs.h" +#include "overworld.h" #define DROUGHT_COLOR_INDEX(color) ((((color) >> 1) & 0xF) | (((color) >> 2) & 0xF0) | (((color) >> 3) & 0xF00)) @@ -473,10 +474,12 @@ static void ApplyGammaShift(u8 startPalIndex, u8 numPalettes, s8 gammaIndex) // Loop through the speficied palette range and apply necessary gamma shifts to the colors. while (curPalIndex < numPalettes) { + CpuFastCopy(gPlttBufferUnfaded + palOffset, gPlttBufferFaded + palOffset, 16 * sizeof(u16)); + UpdatePalettesWithTime(1 << (palOffset >> 4)); if (sPaletteGammaTypes[curPalIndex] == GAMMA_NONE) { // No palette change. - CpuFastCopy(gPlttBufferUnfaded + palOffset, gPlttBufferFaded + palOffset, 16 * sizeof(u16)); + // CpuFastCopy(gPlttBufferUnfaded + palOffset, gPlttBufferFaded + palOffset, 16 * sizeof(u16)); palOffset += 16; } else @@ -491,7 +494,7 @@ static void ApplyGammaShift(u8 startPalIndex, u8 numPalettes, s8 gammaIndex) for (i = 0; i < 16; i++) { // Apply gamma shift to the original color. - struct RGBColor baseColor = *(struct RGBColor *)&gPlttBufferUnfaded[palOffset]; + struct RGBColor baseColor = *(struct RGBColor *)&gPlttBufferFaded[palOffset]; r = gammaTable[baseColor.r]; g = gammaTable[baseColor.g]; b = gammaTable[baseColor.b]; @@ -554,10 +557,11 @@ static void ApplyGammaShiftWithBlend(u8 startPalIndex, u8 numPalettes, s8 gammaI while (curPalIndex < numPalettes) { + UpdatePalettesWithTime(1 << (palOffset >> 4)); // Apply TOD blend if (sPaletteGammaTypes[curPalIndex] == GAMMA_NONE) { // No gamma shift. Simply blend the colors. - BlendPalette(palOffset, 16, blendCoeff, blendColor); + BlendPalettesFine(1 << (palOffset >> 4), gPlttBufferFaded, gPlttBufferFaded, blendCoeff, blendColor); palOffset += 16; } else @@ -571,7 +575,7 @@ static void ApplyGammaShiftWithBlend(u8 startPalIndex, u8 numPalettes, s8 gammaI for (i = 0; i < 16; i++) { - struct RGBColor baseColor = *(struct RGBColor *)&gPlttBufferUnfaded[palOffset]; + struct RGBColor baseColor = *(struct RGBColor *)&gPlttBufferFaded[palOffset]; u8 r = gammaTable[baseColor.r]; u8 g = gammaTable[baseColor.g]; u8 b = gammaTable[baseColor.b]; diff --git a/src/overworld.c b/src/overworld.c index 51e4279fb..99d829494 100644 --- a/src/overworld.c +++ b/src/overworld.c @@ -1511,6 +1511,7 @@ static bool8 MapHasNaturalLight(u8 mapType) { // Whether a map type is naturally || mapType == MAP_TYPE_OCEAN_ROUTE; } +// TODO: Rewrite palette fading to work with FadeScreen static bool8 FadePalettesWithTime(void) { // Only used to fade back in gTimeOfDay = UpdateTimeOfDay(); if (MapHasNaturalLight(gMapHeader.mapType)) { From 65e616342b8ea414dd175e0fee116f7aaf7105eb Mon Sep 17 00:00:00 2001 From: Ariel Antonitis Date: Sat, 24 Apr 2021 03:24:14 -0400 Subject: [PATCH 102/241] Changed time blending to work with FadeScreen. --- common_syms/overworld.txt | 1 + include/overworld.h | 5 +++++ include/palette.h | 2 +- src/field_weather.c | 16 +++++++++++++--- src/overworld.c | 30 ++++++++++++++++-------------- src/palette.c | 9 ++++----- 6 files changed, 40 insertions(+), 23 deletions(-) diff --git a/common_syms/overworld.txt b/common_syms/overworld.txt index 483336209..cc92cee1e 100644 --- a/common_syms/overworld.txt +++ b/common_syms/overworld.txt @@ -7,3 +7,4 @@ gFieldCallback2 gLocalLinkPlayerId gFieldLinkPlayerCount gTimeOfDay +currentTimeBlend diff --git a/include/overworld.h b/include/overworld.h index 58cf5b16a..2a1353b7b 100644 --- a/include/overworld.h +++ b/include/overworld.h @@ -62,11 +62,15 @@ extern void (*gFieldCallback)(void); extern bool8 (*gFieldCallback2)(void); extern u8 gLocalLinkPlayerId; extern u8 gFieldLinkPlayerCount; + extern u8 gTimeOfDay; +extern struct TimeBlendSettings currentTimeBlend; // Exported ROM declarations extern const struct UCoords32 gDirectionToVectors[]; +extern const struct BlendSettings gTimeOfDayBlend[]; + void DoWhiteOut(void); void Overworld_ResetStateAfterFly(void); void Overworld_ResetStateAfterTeleport(void); @@ -142,6 +146,7 @@ bool32 IsUpdateLinkStateCBActive(void); void CB1_Overworld(void); void CB2_OverworldBasic(void); u8 UpdateTimeOfDay(void); +bool8 MapHasNaturalLight(u8 mapType); void UpdatePalettesWithTime(u32); void CB2_Overworld(void); void SetMainCallback1(void (*cb)(void)); diff --git a/include/palette.h b/include/palette.h index 3b0368aca..201e85380 100644 --- a/include/palette.h +++ b/include/palette.h @@ -70,7 +70,7 @@ u8 UpdatePaletteFade(void); void ResetPaletteFade(void); void ReadPlttIntoBuffers(void); bool8 BeginNormalPaletteFade(u32, s8, u8, u8, u16); -bool8 BeginTimeOfDayPaletteFade(u32, s8, u8, u8, struct BlendSettings *, struct BlendSettings *, u16); +bool8 BeginTimeOfDayPaletteFade(u32, s8, u8, u8, struct BlendSettings *, struct BlendSettings *, u16, u16); bool8 unref_sub_8073D3C(u32, u8, u8, u8, u16); void unref_sub_8073D84(u8, u32 *); void ResetPaletteStructByUid(u16); diff --git a/src/field_weather.c b/src/field_weather.c index 089fcf989..bbc7506e3 100644 --- a/src/field_weather.c +++ b/src/field_weather.c @@ -472,6 +472,7 @@ static void ApplyGammaShift(u8 startPalIndex, u8 numPalettes, s8 gammaIndex) curPalIndex = startPalIndex; // Loop through the speficied palette range and apply necessary gamma shifts to the colors. + // TODO: Optimize this to work with time blending while (curPalIndex < numPalettes) { CpuFastCopy(gPlttBufferUnfaded + palOffset, gPlttBufferFaded + palOffset, 16 * sizeof(u16)); @@ -647,7 +648,7 @@ static void ApplyDroughtGammaShiftWithBlend(s8 gammaIndex, u8 blendCoeff, u16 bl } } -static void ApplyFogBlend(u8 blendCoeff, u16 blendColor) +static void ApplyFogBlend(u8 blendCoeff, u16 blendColor) // TODO: How does this interact with time { struct RGBColor color; u8 rBlend; @@ -794,9 +795,18 @@ void FadeScreen(u8 mode, s8 delay) { gWeatherPtr->fadeDestColor = fadeColor; if (useWeatherPal) - gWeatherPtr->fadeScreenCounter = 0; - else + gWeatherPtr->fadeScreenCounter = 0; // Triggers gamma-shift-based fade-in + else { + UpdateTimeOfDay(); + if (MapHasNaturalLight(gMapHeader.mapType)) { + 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; diff --git a/src/overworld.c b/src/overworld.c index 99d829494..5e4aa1a32 100644 --- a/src/overworld.c +++ b/src/overworld.c @@ -187,7 +187,7 @@ static bool8 sReceivingFromLink; static u8 sRfuKeepAliveTimer; static u16 sTimeUpdateCounter; // playTimeVBlanks will eventually overflow, so this is used to update TOD -static struct TimeBlendSettings currentTimeBlend; + // IWRAM common u16 *gBGTilemapBuffers1; @@ -200,6 +200,7 @@ u8 gLocalLinkPlayerId; // This is our player id in a multiplayer mode. u8 gFieldLinkPlayerCount; u8 gTimeOfDay; +struct TimeBlendSettings currentTimeBlend; // EWRAM vars EWRAM_DATA static u8 sObjectEventLoadFlag = 0; @@ -828,7 +829,7 @@ void LoadMapFromCameraTransition(u8 mapGroup, u8 mapNum) RoamerMove(); DoCurrentWeather(); ResetFieldTasksArgs(); - UpdatePalettesWithTime(0xFFFFFFFF); + UpdatePalettesWithTime(PALETTES_ALL); RunOnResumeMapScript(); if (gMapHeader.regionMapSectionId != MAPSEC_BATTLE_FRONTIER @@ -1462,7 +1463,7 @@ void CB1_Overworld(void) -static const struct BlendSettings sTimeOfDayBlendVars[] = +const struct BlendSettings gTimeOfDayBlend[] = { [TIME_OF_DAY_NIGHT] = {.coeff = 10, .blendColor = 0x1400}, [TIME_OF_DAY_TWILIGHT] = {.coeff = 4, .blendColor = 0x56dc, .isTint = TRUE}, @@ -1506,20 +1507,21 @@ u8 UpdateTimeOfDay(void) { } } -static bool8 MapHasNaturalLight(u8 mapType) { // Whether a map type is naturally lit/outside +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; } // TODO: Rewrite palette fading to work with FadeScreen +// Currently, this cancels the "Normal" palette fade started by FadeScreen static bool8 FadePalettesWithTime(void) { // Only used to fade back in - gTimeOfDay = UpdateTimeOfDay(); + UpdateTimeOfDay(); if (MapHasNaturalLight(gMapHeader.mapType)) { ResetPaletteFade(); - BeginTimeOfDayPaletteFade(0xFFFFFFFF, 0, 16, 0, - (struct BlendSettings *)&sTimeOfDayBlendVars[currentTimeBlend.time0], - (struct BlendSettings *)&sTimeOfDayBlendVars[currentTimeBlend.time1], - currentTimeBlend.weight); + BeginTimeOfDayPaletteFade(PALETTES_ALL, 0, 16, 0, + (struct BlendSettings *)&gTimeOfDayBlend[currentTimeBlend.time0], + (struct BlendSettings *)&gTimeOfDayBlend[currentTimeBlend.time1], + currentTimeBlend.weight, 0); } } @@ -1537,8 +1539,8 @@ void UpdatePalettesWithTime(u32 palettes) { TimeMixPalettes(palettes, gPlttBufferUnfaded, gPlttBufferFaded, - (struct BlendSettings *)&sTimeOfDayBlendVars[currentTimeBlend.time0], - (struct BlendSettings *)&sTimeOfDayBlendVars[currentTimeBlend.time1], + (struct BlendSettings *)&gTimeOfDayBlend[currentTimeBlend.time0], + (struct BlendSettings *)&gTimeOfDayBlend[currentTimeBlend.time1], currentTimeBlend.weight); } } @@ -1571,7 +1573,7 @@ static void OverworldBasic(void) if (cachedBlend.time0 != currentTimeBlend.time0 || cachedBlend.time1 != currentTimeBlend.time1 || cachedBlend.weight != currentTimeBlend.weight) - UpdatePalettesWithTime(0xFFFFFFFF); + UpdatePalettesWithTime(PALETTES_ALL); } } @@ -1686,7 +1688,7 @@ static void CB2_LoadMap2(void) DoMapLoadLoop(&gMain.state); SetFieldVBlankCallback(); SetMainCallback1(CB1_Overworld); - FadePalettesWithTime(); + // FadePalettesWithTime(); SetMainCallback2(CB2_Overworld); } @@ -1743,7 +1745,7 @@ static void CB2_ReturnToFieldLocal(void) if (ReturnToFieldLocal(&gMain.state)) { SetFieldVBlankCallback(); - FadePalettesWithTime(); + // FadePalettesWithTime(); SetMainCallback2(CB2_Overworld); } } diff --git a/src/palette.c b/src/palette.c index 8b08eb9e4..b947f464c 100644 --- a/src/palette.c +++ b/src/palette.c @@ -204,8 +204,7 @@ 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 -// Blend color here is always assumed to be 0 (black). -bool8 BeginTimeOfDayPaletteFade(u32 selectedPalettes, s8 delay, u8 startY, u8 targetY, struct BlendSettings *bld0, struct BlendSettings *bld1, u16 weight) +bool8 BeginTimeOfDayPaletteFade(u32 selectedPalettes, s8 delay, u8 startY, u8 targetY, struct BlendSettings *bld0, struct BlendSettings *bld1, u16 weight, u16 color) { u8 temp; @@ -231,7 +230,7 @@ bool8 BeginTimeOfDayPaletteFade(u32 selectedPalettes, s8 delay, u8 startY, u8 ta gPaletteFade.active = 1; gPaletteFade.mode = TIME_OF_DAY_FADE; - gPaletteFade.blendColor = 0; + gPaletteFade.blendColor = color; gPaletteFade.bld0 = bld0; gPaletteFade.bld1 = bld1; gPaletteFade.weight = weight; @@ -522,7 +521,7 @@ static u8 UpdateTimeOfDayPaletteFade(void) u16 * dst1 = dst; while (copyPalettes) { if (copyPalettes & 1) - CpuFastCopy(src1, dst1, 64); + CpuFastCopy(src1, dst1, 32); copyPalettes >>= 1; src1 += 16; dst1 += 16; @@ -530,7 +529,7 @@ static u8 UpdateTimeOfDayPaletteFade(void) } // Then, blend from faded->faded with native BlendPalettes - BlendPalettesFine(selectedPalettes, dst, dst, gPaletteFade.y, 0); + BlendPalettesFine(selectedPalettes, dst, dst, gPaletteFade.y, gPaletteFade.blendColor); gPaletteFade.objPaletteToggle ^= 1; From 7b59eabbcff3c07bebd31e97a264d172f2bb23c9 Mon Sep 17 00:00:00 2001 From: Ariel Antonitis Date: Sat, 24 Apr 2021 17:23:35 -0400 Subject: [PATCH 103/241] Changed fog to be compatible with transparent shadows. --- .../field_effects/pics/shadow_extra_large.png | Bin 152 -> 5188 bytes graphics/field_effects/pics/shadow_large.png | Bin 144 -> 4911 bytes graphics/field_effects/pics/shadow_medium.png | Bin 143 -> 4767 bytes graphics/field_effects/pics/shadow_small.png | Bin 143 -> 4807 bytes graphics/weather/fog.pal | 2 +- src/data/field_effects/field_effect_objects.h | 8 +++--- src/field_weather_effect.c | 23 +++++++++++++++--- 7 files changed, 24 insertions(+), 9 deletions(-) diff --git a/graphics/field_effects/pics/shadow_extra_large.png b/graphics/field_effects/pics/shadow_extra_large.png index 765a5291a8d9eb0f6508e5d9e223c421112ca56b..eb334a976c597db39f56470dcb6e90b9123a3dd4 100644 GIT binary patch literal 5188 zcmeHKX;@Ro8V*~56p&RAgM?regzO1fWDyCF2%#822#9c!oP+>bOacV#?R5i-OGO0{ z1r)HBi()Gvf-5MC3aGe%Wzn{X;tFU*tWfSr!0oyHDOh1N2xeK8d9#13B}1EQk5E zgu&E3Pa|WFI=h-oifpR&lW|#tBe_Du>IqubGU?9V&Kmk8kz)%tw;gPy-S)44ef4hJ zWabuD)s|9PUasfSDBf?ISz`|>PAzmyJNJ{i|NPX#`hi~4ESGqb2eOdvKlc?rgI@{7 z?=tkSkE8Uw*rq7BKT$eVg=lx)w>@Ziy|sZiWr!2{b(DABk?l@3=`E|b%-_Gi8gpNC z;@o890g8UA?h6xZ&kVCss`-;ZOn5LVqpx8p{N#g;-dPG)J*3b1OFrtsRowcktD-K+ zn8pu}$jv=B6g(T4H8>ypJgB7C+$YLxa_?w$;lA!}x%AxefYhW8tJrPEIfvZJW4>FH zm1&x@X)n>&2=T5U{ieaM_FL*Of`T#Mp(QU7p)%%&2IDZbdyZs<1N zyxUrSVNdnE!%K`Rd%bs>j#Qpm)sh6;Pz78u`uWe)a8gN<>=$qNzM-|5>qqa|KdiHc zp>EHn`stXAGkjfkL<+ys{eI3wxXb0;b4{&tjAp4X;Wz3l2>T?SWi{PZBNk=Cbw$%U_j@m0h}TZwUYTqhH3^Tj!Wt?L@8*2t51?A+y8r*GLlPRT!e?{2JOf0@#AHB>Zcij|tCw&s5FYA4O3|G^LTt6kz`ZHGT_qHo!c@--MOa79EMOiI5Ae z*@aOq@Mdq*bhl%F0ji(Y$2r8=u$z_)>dFIwh@O$f%ZE(QIb>CoR9%oqTwFS(E0r~2 z`+A(EPc2S3C3;}{`tYv}5W&w)DMWSawy^!j2E3MsHP%}s8K(Bzk6Wfq=~_Mx8P1uV zsPq^o>M~Sn%k_-T{OFKso1UN zQM}@zElJGetV9@euixOfCBo2F6zj0kz;{HisiT9{>A!3uj+0<9(74*?PXC&|GkT{x z7KNEi=^rRRR2a_*6!fzkX_6rKI4uP&$?Vf*mPDS_1X&_*RgC#yln#6{qdXIRnZIA z4$rCMEdDFnYR}~SGo78KflCtR*3~^rxIRx_ug54REw`0i3cL~Ht~)IHgPk5fGJ7aS znUOR+@Q2PtPGlRUq0tGqqV!2he%hRY)Ev5=*^M!>7)nkYa%sDw52`vE_bXf|!}10K+mu z!uc6Ve3}5|;|=#z(;)&0r~;5`NwQQ)S9_tfymY9pF=J6kEku>%g^FT_BK>3v5J|$2 zFgUcoTAWHidBc&O3W1Q$VFb)jKrJs+f=VT)W3g#zX_z!3My3#9@iZC@iz8qO1T=&| zE7PSaK#i6voi!BG91Kv&SBT{*u}q58Z~{D8ipmRxg8Gqf=O>Y~+3)D3${7_PJ+Nv( zj>TheScwGtp@&lCp9+!8Oz3Ytl;P0TjOBnzS&D)W`lo_YmGg%b0{%OHd5R)g8;*dF z1(QJu1XV(#;y)TPki`yt=b@26B$mjvUXa)yAys1Gd$B&6o2Ew_&W96$+~4tjgnk>l z77U@-Y&t{6Pti<|#qdID#-|Hpe6fJ8tgm?>CP)@*yO2n2;?e>B^dL$g z6%=R(g8Zht_z8ei1VTG}CZ*om#ecJ0Gzv(@Qw1JqGQjgdllYLvfDjO(J@_~h$wTNt zgQWkMT`3c)(f|eMD}o}0qJdIK8x7KBMoia_@o5R5MkyQtkH(SE1X4JjLMPzqBpM1k z6D(G6jcUaBnrIGL-{LQSxKR5zJ{dtg2()Y7m zpXK@_1wIMFyvoZ7~Zw=*b< tw>B~QwJ_T-7>S(4!S8}0lXaaaFqnH=^e+*NQ;rZC#_|tg99Xg3j9Hh@&EqUA5s%2VrH0YF+Fpl-(pRmat2RVKbLh*2~7Zaj3H$J diff --git a/graphics/field_effects/pics/shadow_large.png b/graphics/field_effects/pics/shadow_large.png index e917823b05cd96f64884877479f9c8df82d73483..1695208af543eee620304317dd419295cbe6d44a 100644 GIT binary patch literal 4911 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 delta 86 zcmbQQ+Rr#adGbF&MenHYy#j_oTb3kM7du*7O8o!-pMilvHh11}ASLDL;uyj)GdbY^ p^N;_`2iY}vlm50dwQ%_GG92cTe|U0_SQ$_igQu&X%Q~loCID}b9-#mL diff --git a/graphics/field_effects/pics/shadow_small.png b/graphics/field_effects/pics/shadow_small.png index f5feada2b96633ca74e5281fa01fa7fd59aff536..6cd37c5f23a54d2ea919da42888fa1bb2f98384a 100644 GIT binary patch literal 4807 zcmeHKX;c&05)P{fxFX8{Y7C+%c9ITFAQ5B3%M9uqL`6XuKv@Ps!Id+D3o0VwL!TS(CZNKZ`Qtfn{+V++-CeiptE#W+R&p~# z<_3;1wKXM?NF%sGetd8@(O!lI;F~$=U=fLAz)1=XSMgCbS)r7RaS29NB`Pp7roqJ| zlIB+Dj>XCuQ_a&`Bm8%yP4*VBkex@Lk+0T|O0AB3*0$V(#?3usi~7v=-5dSv?a~z^ zUk{tmE1~+G$)5jG<2!PfneoHdhmYl@gn#&$L#R%wn+-XRTa?G=ykz$9%?Web?zo0WIPPrTkK^<+ii>O-;L;Vouy2 z-?HXr?61K)rWlJYHAag{1p6Pj(bU_`H`$?%78}NtM7y0+pPn~jBRo5=>h^Z$@`|1i z@&>M~H{6Jf)UmUiOJkB#riAI07G0CHM0eko3D&EcZX9!n*k@$s(Eh`XpxY>E+N!Q~ z(IFixQz)6)RnDizPTFid%P3uvw{e7tQ-EyUw$(xU_H7+@txm_!*e8ay)#S^1-T;W>(pS-BT8~+~2{xE4jM(h|^x%Wyg*za}6V)jeC$g7Lcp- zhSE8g9egBXLh_Sa#~&>*4whD#IBY^xEma32o2oj)_uhKi^f>>I^-Yll)~+c>lXmY* z%q_1rFLxik?&;*TRS&Cc?ABhA9oSQoBF@RGTF02{zHtgX+C0~NWO2&}&ht%s%>D|z z^Jem+DaGn7gvH&d?RjTYy^q%}-SeaZ^6jyy%TFrpe(D&3a?Zw&IG^70sMD-tNz|L$ zf66(1aU6rNGF#cTTABFnhr*X9>uzR0AKx&i82k#IxRbv+-_=aC|3Isdk=Q` z_q5-+aM->tIeke@eO&cN=9%W{?!F*94oUp>6 z@?d3qTPk%8iKMp%=Ws%}9L}fh1U6Al>Q>L7%ii`COTF?b+gB}gy1!*VJ7Tou^6cqW zrM|fH=_k?34r>Gt;z!yWHLqGdas7f})-h4zBaM7s7?ju6avS`E-!J9Ij%h1h?se~O z@|_C?=WD0WH}5mtS8ynAZu#2C9~PLLFWYRAKDsQe${gAiQBxM5a`*D(=5sdnO0Ul{TyB(SxGg{quN_t<`{F=wBx5&s` z%eS5#Rdc1-*Mn!j-E#ZO3#<&RZgI}`Ww~d%s+Zc#C~*GnM5Dcr{_G%%k>1!R1^Y}b z;6)4g=J~kS^ZOHj|1eF-Z9kf}RjB9cG+OHQX5#zjH=O43*xXY0KYIib6AyYvTgST2 zc>1oTaM9GXuJ4NYGe0h}`02ys3k?ki0=;AHii)1cUYnpeYv7lMd~YqS4s2XJL%%EL z6)!RRh1KK5L{eN=+bg{)e%MvFOQnH6`@Vd8aSHcRfh&E+z2``EY#-0rh z##=aV4qGUfQc;myfKfG41sH!Ml82W@fePa=6-ykuLO;c5%PGY5c5yKWGaWj5F+7cdquob zqDx04q+t?F3RDT;6&~U;kjo4CY@wwf2A3*yR)FjwnkroUg{&d5X;*aV3=RaCf5si6 z{V8{yGSK4j*nVv z5>JXYD6-a4*WhH2{;~w&1kgy-_WVHC&&QVczx8hd39efrlXZ>DMuq)O2s8l`=^O#O z{v}~7DvQCu4j*W#PjdVp$^}X+bY(EzAQ6U%AViG8kUJs}K$x40J1PVTqPqw5=8U&X*zDSzv( zZ*+YX17D^5t-JnjbeVoR?qD+T4@eCTGl>DswcsE`51A9{PgLahT|eDdk$o?lNcQpR z%Rha6S@L=xes)DKP#F#LPv;Ag2_F{ArmwFLNDfT0eg$rNg4uz7q;*E)gTTvhMNkAm zBAHoeFFn%k92+1UrsDGahdnT~u^eZ{{cA@I5ZQA5d_ql{h0)#yITmS}hc&~^T~?CH b^fUEHVTHpW%-ixOphe>P&-FXu8@=j(7?>nJ delta 86 zcmX@E+Rr#ad9s?2qIXpHUID|PElZNBiybX3CI0{a&%nSSn>+6~kdpFraSY*@nVjIj p{71gw$N&HQJpUUR4l#8yGECy*{>oQV+zwR5;OXk;vd$@?2>?w89&P{t diff --git a/graphics/weather/fog.pal b/graphics/weather/fog.pal index 6191b6692..1f40dd4e7 100644 --- 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/src/data/field_effects/field_effect_objects.h b/src/data/field_effects/field_effect_objects.h index 516ade7cb..2fd33a4cb 100755 --- a/src/data/field_effects/field_effect_objects.h +++ b/src/data/field_effects/field_effect_objects.h @@ -32,13 +32,13 @@ const struct SpriteFrameImage gFieldEffectObjectPicTable_BallLight[] = { obj_frame_tiles(gFieldEffectObjectPic_BallLight), }; -const struct SpriteTemplate gFieldEffectObjectTemplate_ShadowSmall = {0xFFFF, OBJ_EVENT_PAL_TAG_MAY, &gObjectEventBaseOam_8x8, sAnimTable_Shadow, sPicTable_ShadowSmall, gDummySpriteAffineAnimTable, UpdateShadowFieldEffect}; +const struct SpriteTemplate gFieldEffectObjectTemplate_ShadowSmall = {0xFFFF, TAG_WEATHER_START, &gObjectEventBaseOam_8x8, sAnimTable_Shadow, sPicTable_ShadowSmall, gDummySpriteAffineAnimTable, UpdateShadowFieldEffect}; -const struct SpriteTemplate gFieldEffectObjectTemplate_ShadowMedium = {0xFFFF, OBJ_EVENT_PAL_TAG_MAY, &gObjectEventBaseOam_16x8, sAnimTable_Shadow, sPicTable_ShadowMedium, gDummySpriteAffineAnimTable, UpdateShadowFieldEffect}; +const struct SpriteTemplate gFieldEffectObjectTemplate_ShadowMedium = {0xFFFF, TAG_WEATHER_START, &gObjectEventBaseOam_16x8, sAnimTable_Shadow, sPicTable_ShadowMedium, gDummySpriteAffineAnimTable, UpdateShadowFieldEffect}; -const struct SpriteTemplate gFieldEffectObjectTemplate_ShadowLarge = {0xFFFF, OBJ_EVENT_PAL_TAG_MAY, &gObjectEventBaseOam_32x8, sAnimTable_Shadow, sPicTable_ShadowLarge, gDummySpriteAffineAnimTable, UpdateShadowFieldEffect}; +const struct SpriteTemplate gFieldEffectObjectTemplate_ShadowLarge = {0xFFFF, TAG_WEATHER_START, &gObjectEventBaseOam_32x8, sAnimTable_Shadow, sPicTable_ShadowLarge, gDummySpriteAffineAnimTable, UpdateShadowFieldEffect}; -const struct SpriteTemplate gFieldEffectObjectTemplate_ShadowExtraLarge = {0xFFFF, OBJ_EVENT_PAL_TAG_MAY, &gObjectEventBaseOam_64x32, sAnimTable_Shadow, sPicTable_ShadowExtraLarge, gDummySpriteAffineAnimTable, UpdateShadowFieldEffect}; +const struct SpriteTemplate gFieldEffectObjectTemplate_ShadowExtraLarge = {0xFFFF, TAG_WEATHER_START, &gObjectEventBaseOam_64x32, sAnimTable_Shadow, sPicTable_ShadowExtraLarge, gDummySpriteAffineAnimTable, UpdateShadowFieldEffect}; const struct SpriteTemplate gFieldEffectObjectTemplate_BallLight = {0xFFFF, OBJ_EVENT_PAL_TAG_LIGHT, &gObjectEventBaseOam_32x32, sAnimTable_Inanimate, gFieldEffectObjectPicTable_BallLight, gDummySpriteAffineAnimTable, UpdateLightSprite}; diff --git a/src/field_weather_effect.c b/src/field_weather_effect.c index 36ca937b6..da6c9601f 100644 --- a/src/field_weather_effect.c +++ b/src/field_weather_effect.c @@ -7,11 +7,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 EWRAM_DATA static u8 gCurrentAbnormalWeather = 0; @@ -1372,6 +1374,9 @@ 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 + void FogHorizontal_InitVars(void) { gWeatherPtr->initStep = 0; @@ -1385,7 +1390,7 @@ void FogHorizontal_InitVars(void) gWeatherPtr->fogHScrollPosX = 0; Weather_SetBlendCoeffs(0, 16); } - gWeatherPtr->noShadows = TRUE; // TODO: Can fog be made compatible with shadows? + gWeatherPtr->noShadows = FALSE; } void FogHorizontal_InitAll(void) @@ -1407,9 +1412,14 @@ 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); + if (paletteNum != 0xFF) { // Lighten shadow color to match + u16 index = (paletteNum+16)*16+SHADOW_COLOR_INDEX; // Shadow color index + gPlttBufferUnfaded[index] = gPlttBufferFaded[index] = 0x3DEF; // Gray + } + } else Weather_SetTargetBlendCoeffs(4, 16, 0); gWeatherPtr->initStep++; break; @@ -1425,6 +1435,7 @@ void FogHorizontal_Main(void) bool8 FogHorizontal_Finish(void) { + u8 paletteNum = IndexOfSpritePaletteTag(TAG_WEATHER_START); gWeatherPtr->fogHScrollPosX = (gSpriteCoordOffsetX - gWeatherPtr->fogHScrollOffset) & 0xFF; if (++gWeatherPtr->fogHScrollCounter > 3) { @@ -1447,6 +1458,10 @@ bool8 FogHorizontal_Finish(void) gWeatherPtr->finishStep++; break; default: + if (paletteNum != 0xFF) { // Change shadow color back to black + u16 index = (paletteNum+16)*16+SHADOW_COLOR_INDEX; + gPlttBufferUnfaded[index] = gPlttBufferFaded[index] = RGB_BLACK; + } return FALSE; } return TRUE; From c3fdaca8e262a83b1238f6931b737d4c7201bf2d Mon Sep 17 00:00:00 2001 From: Ariel Antonitis Date: Sat, 24 Apr 2021 18:10:37 -0400 Subject: [PATCH 104/241] Fixed sandstorm shadow color. --- src/field_weather_effect.c | 30 +++++++++++++++++++----------- 1 file changed, 19 insertions(+), 11 deletions(-) diff --git a/src/field_weather_effect.c b/src/field_weather_effect.c index da6c9601f..bda62fcf0 100644 --- a/src/field_weather_effect.c +++ b/src/field_weather_effect.c @@ -1377,6 +1377,17 @@ 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 +static u8 UpdateShadowColor(u16 color) { + u8 paletteNum = IndexOfSpritePaletteTag(TAG_WEATHER_START); + if (paletteNum != 0xFF) { + u16 index = (paletteNum+16)*16+SHADOW_COLOR_INDEX; + gPlttBufferUnfaded[index] = gPlttBufferFaded[index] = color; + UpdateSpritePaletteWithTime(paletteNum); + } + return paletteNum; +} + void FogHorizontal_InitVars(void) { gWeatherPtr->initStep = 0; @@ -1415,10 +1426,7 @@ void FogHorizontal_Main(void) if (gWeatherPtr->currWeather == WEATHER_FOG_HORIZONTAL) { u8 paletteNum = IndexOfSpritePaletteTag(TAG_WEATHER_START); Weather_SetTargetBlendCoeffs(12, 8, 3); - if (paletteNum != 0xFF) { // Lighten shadow color to match - u16 index = (paletteNum+16)*16+SHADOW_COLOR_INDEX; // Shadow color index - gPlttBufferUnfaded[index] = gPlttBufferFaded[index] = 0x3DEF; // Gray - } + UpdateShadowColor(0x3DEF); // Gray } else Weather_SetTargetBlendCoeffs(4, 16, 0); gWeatherPtr->initStep++; @@ -1435,7 +1443,6 @@ void FogHorizontal_Main(void) bool8 FogHorizontal_Finish(void) { - u8 paletteNum = IndexOfSpritePaletteTag(TAG_WEATHER_START); gWeatherPtr->fogHScrollPosX = (gSpriteCoordOffsetX - gWeatherPtr->fogHScrollOffset) & 0xFF; if (++gWeatherPtr->fogHScrollCounter > 3) { @@ -1458,10 +1465,7 @@ bool8 FogHorizontal_Finish(void) gWeatherPtr->finishStep++; break; default: - if (paletteNum != 0xFF) { // Change shadow color back to black - u16 index = (paletteNum+16)*16+SHADOW_COLOR_INDEX; - gPlttBufferUnfaded[index] = gPlttBufferFaded[index] = RGB_BLACK; - } + UpdateShadowColor(RGB_BLACK); return FALSE; } return TRUE; @@ -1986,7 +1990,7 @@ void Sandstorm_InitVars(void) Weather_SetBlendCoeffs(0, 16); } - gWeatherPtr->noShadows = TRUE; // TODO: Can sandstorm be compatible with shadows? + gWeatherPtr->noShadows = FALSE; } void Sandstorm_InitAll(void) @@ -2011,7 +2015,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: @@ -2037,9 +2042,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: From 37d0e17be491625384ba738acaa135b9e9f71a60 Mon Sep 17 00:00:00 2001 From: Ariel Antonitis Date: Sat, 24 Apr 2021 21:21:01 -0400 Subject: [PATCH 105/241] Fixed shadow hot springs bug. --- data/layouts/LavaridgeTown/map.bin | 2 +- data/maps/LavaridgeTown/map.json | 2 +- src/event_object_movement.c | 2 +- src/field_effect_helpers.c | 1 + 4 files changed, 4 insertions(+), 3 deletions(-) diff --git a/data/layouts/LavaridgeTown/map.bin b/data/layouts/LavaridgeTown/map.bin index 604ad5f3f..a001f8cd3 100644 --- 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/maps/LavaridgeTown/map.json b/data/maps/LavaridgeTown/map.json index 54bda6ca3..29b1d2d33 100644 --- 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", diff --git a/src/event_object_movement.c b/src/event_object_movement.c index 939ff3ca6..635659fb0 100644 --- a/src/event_object_movement.c +++ b/src/event_object_movement.c @@ -8862,7 +8862,7 @@ static void DoFlaggedGroundEffects(struct ObjectEvent *objEvent, struct Sprite * for (i = 0; i < ARRAY_COUNT(sGroundEffectFuncs); i++, flags >>= 1) if (flags & 1) sGroundEffectFuncs[i](objEvent, sprite); - if (!gWeatherPtr->noShadows) + if (!(gWeatherPtr->noShadows || objEvent->inHotSprings)) GroundEffect_Shadow(objEvent, sprite); } diff --git a/src/field_effect_helpers.c b/src/field_effect_helpers.c index ed5ffecd6..430423039 100755 --- a/src/field_effect_helpers.c +++ b/src/field_effect_helpers.c @@ -349,6 +349,7 @@ void UpdateShadowFieldEffect(struct Sprite *sprite) sprite->invisible = linkedSprite->invisible; if (!objectEvent->active || objectEvent->noShadow + || objectEvent->inHotSprings || gWeatherPtr->noShadows || MetatileBehavior_IsPokeGrass(objectEvent->currentMetatileBehavior) || MetatileBehavior_IsSurfableWaterOrUnderwater(objectEvent->currentMetatileBehavior) From 4a5dbcb52ba695376986363a03808f4b42a6c8d2 Mon Sep 17 00:00:00 2001 From: Ariel Antonitis Date: Sun, 25 Apr 2021 00:56:23 -0400 Subject: [PATCH 106/241] Testing updating sprite palettes with weather + time. --- src/field_effect.c | 2 +- src/field_effect_helpers.c | 2 -- src/field_weather.c | 15 +++++++++++---- 3 files changed, 12 insertions(+), 7 deletions(-) diff --git a/src/field_effect.c b/src/field_effect.c index 967e3d239..ad6bdd747 100644 --- a/src/field_effect.c +++ b/src/field_effect.c @@ -770,8 +770,8 @@ void FieldEffectScript_LoadFadedPalette(u8 **script) { struct SpritePalette *palette = (struct SpritePalette *)FieldEffectScript_ReadWord(script); LoadSpritePalette(palette); - UpdateSpritePaletteWithWeather(IndexOfSpritePaletteTag(palette->tag)); UpdateSpritePaletteWithTime(IndexOfSpritePaletteTag(palette->tag)); // Ensure field effects are blended + UpdateSpritePaletteWithWeather(IndexOfSpritePaletteTag(palette->tag)); (*script) += 4; } diff --git a/src/field_effect_helpers.c b/src/field_effect_helpers.c index 430423039..8c3cf5bb1 100755 --- a/src/field_effect_helpers.c +++ b/src/field_effect_helpers.c @@ -152,7 +152,6 @@ static void LoadObjectRegularReflectionPalette(struct ObjectEvent *objectEvent, } paletteNum = LoadSpritePalette(&filteredPalette); UpdateSpritePaletteWithWeather(paletteNum); - UpdateSpritePaletteWithTime(paletteNum); } sprite->oam.paletteNum = paletteNum; sprite->oam.objMode = 1; // Alpha blending @@ -205,7 +204,6 @@ static void UpdateObjectReflectionSprite(struct Sprite *reflectionSprite) } paletteNum = LoadSpritePalette(&filteredPalette); UpdateSpritePaletteWithWeather(paletteNum); - UpdateSpritePaletteWithTime(paletteNum); } reflectionSprite->oam.paletteNum = paletteNum; } diff --git a/src/field_weather.c b/src/field_weather.c index bbc7506e3..d4444a098 100644 --- a/src/field_weather.c +++ b/src/field_weather.c @@ -536,8 +536,13 @@ static void ApplyGammaShift(u8 startPalIndex, u8 numPalettes, s8 gammaIndex) } else { - // No palette blending. + u32 palettes = 0; + u32 mask = 1 << startPalIndex; + u8 i; CpuFastCopy(gPlttBufferUnfaded + startPalIndex * 16, gPlttBufferFaded + startPalIndex * 16, numPalettes * 16 * sizeof(u16)); + for (i = 0; i < numPalettes; i++, mask <<= 1) + palettes |= mask; + UpdatePalettesWithTime(palettes); } } @@ -825,7 +830,6 @@ void UpdateSpritePaletteWithWeather(u8 spritePaletteIndex) { u16 paletteIndex = 16 + spritePaletteIndex; u16 i; - switch (gWeatherPtr->palProcessingState) { case WEATHER_PAL_STATE_SCREEN_FADING_IN: @@ -853,7 +857,10 @@ void UpdateSpritePaletteWithWeather(u8 spritePaletteIndex) else { paletteIndex *= 16; - BlendPalette(paletteIndex, 16, 12, RGB(28, 31, 28)); + // First blend with time + CpuFastCopy(gPlttBufferUnfaded + paletteIndex, gPlttBufferFaded + paletteIndex, 32); + UpdateSpritePaletteWithTime(spritePaletteIndex); + BlendPalettesFine(1 << (spritePaletteIndex + 16), gPlttBufferFaded + paletteIndex, gPlttBufferFaded + paletteIndex, 12, RGB(28, 31, 28)); } break; } @@ -876,8 +883,8 @@ static bool8 IsFirstFrameOfWeatherFadeIn(void) void LoadCustomWeatherSpritePalette(const u16 *palette) { LoadPalette(palette, 0x100 + gWeatherPtr->weatherPicSpritePalIndex * 16, 32); - UpdateSpritePaletteWithWeather(gWeatherPtr->weatherPicSpritePalIndex); UpdateSpritePaletteWithTime(gWeatherPtr->weatherPicSpritePalIndex); + UpdateSpritePaletteWithWeather(gWeatherPtr->weatherPicSpritePalIndex); } static void LoadDroughtWeatherPalette(u8 *gammaIndexPtr, u8 *a1) From 147e101df516cb9eeee81bbbe5e763bbd8e2637b Mon Sep 17 00:00:00 2001 From: Ariel Antonitis Date: Sun, 25 Apr 2021 17:00:07 -0400 Subject: [PATCH 107/241] More testing of fog blending. --- include/field_weather.h | 2 +- src/event_object_movement.c | 6 ++--- src/faraway_island.c | 2 +- src/field_effect.c | 3 +-- src/field_effect_helpers.c | 6 ++--- src/field_weather.c | 53 ++++++++++++++++++++++--------------- src/field_weather_effect.c | 7 +++++ src/overworld.c | 31 +++++++++------------- 8 files changed, 61 insertions(+), 49 deletions(-) diff --git a/include/field_weather.h b/include/field_weather.h index c462707f9..ce1a91c4c 100644 --- a/include/field_weather.h +++ b/include/field_weather.h @@ -151,7 +151,7 @@ void ApplyWeatherGammaShiftIfIdle(s8 gammaIndex); void sub_80ABC7C(u8 gammaIndex, u8 gammaTargetIndex, u8 gammaStepDelay); void FadeScreen(u8 mode, s8 delay); bool8 IsWeatherNotFadingIn(void); -void UpdateSpritePaletteWithWeather(u8 spritePaletteIndex); +void UpdateSpritePaletteWithWeather(u8 spritePaletteIndex, bool8 allowFog); void ApplyWeatherGammaShiftToPal(u8 paletteIndex); void LoadCustomWeatherSpritePalette(const u16 *palette); void ResetDroughtWeatherPaletteLoading(void); diff --git a/src/event_object_movement.c b/src/event_object_movement.c index 635659fb0..76fc26d05 100644 --- a/src/event_object_movement.c +++ b/src/event_object_movement.c @@ -1684,7 +1684,7 @@ static void FollowerSetGraphics(struct ObjectEvent *objectEvent, u16 species, u8 if (palette[0] & 0x4000) // If color 15 is blended, use it as the alternate color palette[15] |= 0x8000; } - UpdateSpritePaletteWithTime(sprite->oam.paletteNum); + UpdateSpritePaletteWithWeather(sprite->oam.paletteNum, FALSE); } else sprite->oam.paletteNum = IndexOfSpritePaletteTag(spritePalette->tag); // Tag is always present } @@ -2186,7 +2186,7 @@ static u8 UpdateSpritePalette(const struct SpritePalette * spritePalette, struct sprite->inUse = TRUE; if (IndexOfSpritePaletteTag(spritePalette->tag) == 0xFF) { sprite->oam.paletteNum = LoadSpritePalette(spritePalette); - UpdateSpritePaletteWithTime(sprite->oam.paletteNum); + UpdateSpritePaletteWithWeather(sprite->oam.paletteNum, FALSE); } else { sprite->oam.paletteNum = LoadSpritePalette(spritePalette); } @@ -2443,7 +2443,7 @@ static u8 LoadSpritePaletteIfTagExists(const struct SpritePalette *spritePalette if (IndexOfSpritePaletteTag(spritePalette->tag) != 0xFF) return 0xFF; paletteNum = LoadSpritePalette(spritePalette); - UpdateSpritePaletteWithTime(paletteNum); + UpdateSpritePaletteWithWeather(paletteNum, FALSE); return paletteNum; } diff --git a/src/faraway_island.c b/src/faraway_island.c index bc0814652..28c5bcf78 100755 --- a/src/faraway_island.c +++ b/src/faraway_island.c @@ -393,7 +393,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 ad6bdd747..4ef5ea497 100644 --- a/src/field_effect.c +++ b/src/field_effect.c @@ -770,8 +770,7 @@ void FieldEffectScript_LoadFadedPalette(u8 **script) { struct SpritePalette *palette = (struct SpritePalette *)FieldEffectScript_ReadWord(script); LoadSpritePalette(palette); - UpdateSpritePaletteWithTime(IndexOfSpritePaletteTag(palette->tag)); // Ensure field effects are blended - UpdateSpritePaletteWithWeather(IndexOfSpritePaletteTag(palette->tag)); + UpdateSpritePaletteWithWeather(IndexOfSpritePaletteTag(palette->tag), FALSE); (*script) += 4; } diff --git a/src/field_effect_helpers.c b/src/field_effect_helpers.c index 8c3cf5bb1..389a3dce6 100755 --- a/src/field_effect_helpers.c +++ b/src/field_effect_helpers.c @@ -151,7 +151,7 @@ static void LoadObjectRegularReflectionPalette(struct ObjectEvent *objectEvent, ApplyIceFilter(mainSprite->oam.paletteNum, filteredData); } paletteNum = LoadSpritePalette(&filteredPalette); - UpdateSpritePaletteWithWeather(paletteNum); + UpdateSpritePaletteWithWeather(paletteNum, TRUE); } sprite->oam.paletteNum = paletteNum; sprite->oam.objMode = 1; // Alpha blending @@ -170,7 +170,7 @@ static void LoadObjectHighBridgeReflectionPalette(struct ObjectEvent *objectEven blueData[i] = 0x55c9; } sprite->oam.paletteNum = LoadSpritePalette(&bluePalette); - UpdateSpritePaletteWithWeather(sprite->oam.paletteNum); + UpdateSpritePaletteWithWeather(sprite->oam.paletteNum, TRUE); } static void UpdateObjectReflectionSprite(struct Sprite *reflectionSprite) @@ -203,7 +203,7 @@ static void UpdateObjectReflectionSprite(struct Sprite *reflectionSprite) ApplyIceFilter(mainSprite->oam.paletteNum, filteredData); } paletteNum = LoadSpritePalette(&filteredPalette); - UpdateSpritePaletteWithWeather(paletteNum); + UpdateSpritePaletteWithWeather(paletteNum, TRUE); } reflectionSprite->oam.paletteNum = paletteNum; } diff --git a/src/field_weather.c b/src/field_weather.c index d4444a098..aad85dfc6 100644 --- a/src/field_weather.c +++ b/src/field_weather.c @@ -536,13 +536,16 @@ static void ApplyGammaShift(u8 startPalIndex, u8 numPalettes, s8 gammaIndex) } else { - u32 palettes = 0; - u32 mask = 1 << startPalIndex; - u8 i; - CpuFastCopy(gPlttBufferUnfaded + startPalIndex * 16, gPlttBufferFaded + startPalIndex * 16, numPalettes * 16 * sizeof(u16)); - for (i = 0; i < numPalettes; i++, mask <<= 1) - palettes |= mask; - UpdatePalettesWithTime(palettes); + if (MapHasNaturalLight(gMapHeader.mapType)) { // Time-blend + u32 palettes = 0; + u32 mask = 1 << startPalIndex; + u8 i; + for (i = 0; i < numPalettes; i++, mask <<= 1) + palettes |= mask; + UpdatePalettesWithTime(palettes); + } else { // copy + CpuFastCopy(gPlttBufferUnfaded + startPalIndex * 16, gPlttBufferFaded + startPalIndex * 16, numPalettes * 16 * sizeof(u16)); + } } } @@ -653,7 +656,7 @@ static void ApplyDroughtGammaShiftWithBlend(s8 gammaIndex, u8 blendCoeff, u16 bl } } -static void ApplyFogBlend(u8 blendCoeff, u16 blendColor) // TODO: How does this interact with time +static void ApplyFogBlend(u8 blendCoeff, u16 blendColor) // TODO: Optimize this with time blending { struct RGBColor color; u8 rBlend; @@ -661,7 +664,11 @@ static void ApplyFogBlend(u8 blendCoeff, u16 blendColor) // TODO: How does this u8 bBlend; u16 curPalIndex; - BlendPalette(0, 256, blendCoeff, blendColor); + // First blend all palettes with time + CpuFastCopy(gPlttBufferUnfaded, gPlttBufferFaded, 0x400); + UpdatePalettesWithTime(PALETTES_ALL); + // Then blend tile palettes [0, 12] faded->faded + BlendPalettesFine(0x1FFF, gPlttBufferFaded, gPlttBufferFaded, blendCoeff, blendColor); color = *(struct RGBColor *)&blendColor; rBlend = color.r; gBlend = color.g; @@ -676,7 +683,7 @@ static void ApplyFogBlend(u8 blendCoeff, u16 blendColor) // TODO: How does this while (palOffset < palEnd) { - struct RGBColor color = *(struct RGBColor *)&gPlttBufferUnfaded[palOffset]; + struct RGBColor color = *(struct RGBColor *)&gPlttBufferFaded[palOffset]; u8 r = color.r; u8 g = color.g; u8 b = color.b; @@ -695,7 +702,7 @@ static void ApplyFogBlend(u8 blendCoeff, u16 blendColor) // TODO: How does this } else { - BlendPalette(curPalIndex * 16, 16, blendCoeff, blendColor); + BlendPalettesFine(1, gPlttBufferFaded + curPalIndex * 16, gPlttBufferFaded + curPalIndex * 16, blendCoeff, blendColor); } } } @@ -799,10 +806,10 @@ void FadeScreen(u8 mode, s8 delay) else { gWeatherPtr->fadeDestColor = fadeColor; + UpdateTimeOfDay(); if (useWeatherPal) gWeatherPtr->fadeScreenCounter = 0; // Triggers gamma-shift-based fade-in else { - UpdateTimeOfDay(); if (MapHasNaturalLight(gMapHeader.mapType)) { BeginTimeOfDayPaletteFade(PALETTES_ALL, delay, 16, 0, (struct BlendSettings *)&gTimeOfDayBlend[currentTimeBlend.time0], @@ -826,7 +833,7 @@ 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; @@ -850,17 +857,22 @@ void UpdateSpritePaletteWithWeather(u8 spritePaletteIndex) // WEATHER_PAL_STATE_CHANGING_WEATHER // WEATHER_PAL_STATE_CHANGING_IDLE default: - if (gWeatherPtr->currWeather != WEATHER_FOG_HORIZONTAL) - { - ApplyGammaShift(paletteIndex, 1, gWeatherPtr->gammaIndex); - } - else - { + if (gWeatherPtr->currWeather != WEATHER_FOG_HORIZONTAL) { + if (gWeatherPtr->gammaIndex) + ApplyGammaShift(paletteIndex, 1, gWeatherPtr->gammaIndex); + else + UpdateSpritePaletteWithTime(spritePaletteIndex); + } else { // In horizontal fog, only specific palettes should be fog-blended + if (allowFog) { paletteIndex *= 16; // First blend with time CpuFastCopy(gPlttBufferUnfaded + paletteIndex, gPlttBufferFaded + paletteIndex, 32); UpdateSpritePaletteWithTime(spritePaletteIndex); + // Then blend faded->faded BlendPalettesFine(1 << (spritePaletteIndex + 16), gPlttBufferFaded + paletteIndex, gPlttBufferFaded + paletteIndex, 12, RGB(28, 31, 28)); + } else { // Otherwise, just time-blend the palette + UpdateSpritePaletteWithTime(spritePaletteIndex); + } } break; } @@ -883,8 +895,7 @@ static bool8 IsFirstFrameOfWeatherFadeIn(void) void LoadCustomWeatherSpritePalette(const u16 *palette) { LoadPalette(palette, 0x100 + gWeatherPtr->weatherPicSpritePalIndex * 16, 32); - UpdateSpritePaletteWithTime(gWeatherPtr->weatherPicSpritePalIndex); - UpdateSpritePaletteWithWeather(gWeatherPtr->weatherPicSpritePalIndex); + UpdateSpritePaletteWithWeather(gWeatherPtr->weatherPicSpritePalIndex, TRUE); } static void LoadDroughtWeatherPalette(u8 *gammaIndexPtr, u8 *a1) diff --git a/src/field_weather_effect.c b/src/field_weather_effect.c index bda62fcf0..e22f04b74 100644 --- a/src/field_weather_effect.c +++ b/src/field_weather_effect.c @@ -1380,10 +1380,17 @@ static void DestroyFogHorizontalSprites(void); // Updates just the color of shadows to match special weather blending static 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; } diff --git a/src/overworld.c b/src/overworld.c index 5e4aa1a32..a36e2ed55 100644 --- a/src/overworld.c +++ b/src/overworld.c @@ -821,7 +821,7 @@ void LoadMapFromCameraTransition(u8 mapGroup, u8 mapNum) CopySecondaryTilesetToVramUsingHeap(gMapHeader.mapLayout); LoadSecondaryTilesetPalette(gMapHeader.mapLayout); - for (paletteIndex = 6; paletteIndex < 13; paletteIndex++) + for (paletteIndex = 6; paletteIndex < 13; paletteIndex++) // TODO: Optimize gamma shifts ApplyWeatherGammaShiftToPal(paletteIndex); InitSecondaryTilesetAnimation(); @@ -829,7 +829,6 @@ void LoadMapFromCameraTransition(u8 mapGroup, u8 mapNum) RoamerMove(); DoCurrentWeather(); ResetFieldTasksArgs(); - UpdatePalettesWithTime(PALETTES_ALL); RunOnResumeMapScript(); if (gMapHeader.regionMapSectionId != MAPSEC_BATTLE_FRONTIER @@ -1512,19 +1511,6 @@ bool8 MapHasNaturalLight(u8 mapType) { // Whether a map type is naturally lit/ou || mapType == MAP_TYPE_OCEAN_ROUTE; } -// TODO: Rewrite palette fading to work with FadeScreen -// Currently, this cancels the "Normal" palette fade started by FadeScreen -static bool8 FadePalettesWithTime(void) { // Only used to fade back in - UpdateTimeOfDay(); - if (MapHasNaturalLight(gMapHeader.mapType)) { - ResetPaletteFade(); - BeginTimeOfDayPaletteFade(PALETTES_ALL, 0, 16, 0, - (struct BlendSettings *)&gTimeOfDayBlend[currentTimeBlend.time0], - (struct BlendSettings *)&gTimeOfDayBlend[currentTimeBlend.time1], - currentTimeBlend.weight, 0); - } -} - void UpdatePalettesWithTime(u32 palettes) { if (MapHasNaturalLight(gMapHeader.mapType)) { u16 i; @@ -1546,7 +1532,18 @@ void UpdatePalettesWithTime(u32 palettes) { } u8 UpdateSpritePaletteWithTime(u8 paletteNum) { - UpdatePalettesWithTime(1 << (paletteNum + 16)); + if (MapHasNaturalLight(gMapHeader.mapType)) { + u16 offset; + if (GetSpritePaletteTagByPaletteNum(paletteNum) >> 15) + return paletteNum; + offset = (paletteNum + 16) * 16; + TimeMixPalettes(1, + gPlttBufferUnfaded + offset, + gPlttBufferFaded + offset, + (struct BlendSettings *)&gTimeOfDayBlend[currentTimeBlend.time0], + (struct BlendSettings *)&gTimeOfDayBlend[currentTimeBlend.time1], + currentTimeBlend.weight); + } return paletteNum; } @@ -1688,7 +1685,6 @@ static void CB2_LoadMap2(void) DoMapLoadLoop(&gMain.state); SetFieldVBlankCallback(); SetMainCallback1(CB1_Overworld); - // FadePalettesWithTime(); SetMainCallback2(CB2_Overworld); } @@ -1745,7 +1741,6 @@ static void CB2_ReturnToFieldLocal(void) if (ReturnToFieldLocal(&gMain.state)) { SetFieldVBlankCallback(); - // FadePalettesWithTime(); SetMainCallback2(CB2_Overworld); } } From 39ba328afbef5f21a622dca0c3fc30f4247b07af Mon Sep 17 00:00:00 2001 From: Ariel Antonitis Date: Sun, 25 Apr 2021 20:13:56 -0400 Subject: [PATCH 108/241] Optimized follower palette loading. --- .../object_event_graphics_info.h | 2 +- src/event_object_movement.c | 50 +++++++++---------- src/overworld.c | 7 +-- 3 files changed, 28 insertions(+), 31 deletions(-) diff --git a/src/data/object_events/object_event_graphics_info.h b/src/data/object_events/object_event_graphics_info.h index dc9676260..9dad1424f 100755 --- a/src/data/object_events/object_event_graphics_info.h +++ b/src/data/object_events/object_event_graphics_info.h @@ -244,7 +244,7 @@ const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_RubySapphireMay = const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Lugia = {0xFFFF, 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 = {0xFFFF, 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 = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_3, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_16x32, sOamTables_16x32, sAnimTable_Following, sPicTable_AnimatedBall, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Follower = {0xFFFF, OBJ_EVENT_PAL_TAG_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_Follower = {0xFFFF, OBJ_EVENT_PAL_TAG_MAY, 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}; // Species-indexed pokemon object event table const struct ObjectEventGraphicsInfo gPokemonObjectGraphics[] = { diff --git a/src/event_object_movement.c b/src/event_object_movement.c index 76fc26d05..299425562 100644 --- a/src/event_object_movement.c +++ b/src/event_object_movement.c @@ -152,7 +152,7 @@ static bool8 AnimateSpriteInFigure8(struct Sprite *sprite); static void UpdateObjectEventSprite(struct Sprite *); u8 GetDirectionToFace(s16 x1, s16 y1, s16 x2, s16 y2); -static void FollowerSetGraphics(struct ObjectEvent *, u16, u8, bool8); +static void FollowerSetGraphics(struct ObjectEvent *, u16, u8, bool8, bool8); static void ObjectEventSetGraphics(struct ObjectEvent *, const struct ObjectEventGraphicsInfo *); static void DoShadowFieldEffect(struct ObjectEvent *); static void SetJumpSpriteData(struct Sprite *, u8, u8, u8); @@ -1477,7 +1477,7 @@ TrySpawnObjectEventTemplate(struct ObjectEventTemplate *objectEventTemplate, species = gObjectEvents[objectEventId].extra.mon.species; form = gObjectEvents[objectEventId].extra.mon.form; shiny = gObjectEvents[objectEventId].extra.mon.shiny; - FollowerSetGraphics(&gObjectEvents[objectEventId], species, form, shiny); + FollowerSetGraphics(&gObjectEvents[objectEventId], species, form, shiny, TRUE); } } @@ -1652,16 +1652,17 @@ static const struct ObjectEventGraphicsInfo * SpeciesToGraphicsInfo(u16 species, } // Set graphics & sprite for a follower object event by species & shininess. -static void FollowerSetGraphics(struct ObjectEvent *objectEvent, u16 species, u8 form, bool8 shiny) { +static void FollowerSetGraphics(struct ObjectEvent *objEvent, u16 species, u8 form, bool8 shiny, bool8 doPalette) { const struct ObjectEventGraphicsInfo *graphicsInfo = SpeciesToGraphicsInfo(species, form); - objectEvent->graphicsId = OBJ_EVENT_GFX_OW_MON; - ObjectEventSetGraphics(objectEvent, graphicsInfo); - objectEvent->graphicsId = OBJ_EVENT_GFX_OW_MON; - objectEvent->extra.mon.species = species; - objectEvent->extra.mon.form = form; - objectEvent->extra.mon.shiny = shiny; - if (graphicsInfo->paletteTag == OBJ_EVENT_PAL_TAG_DYNAMIC) { // Use palette from species palette table - struct Sprite *sprite = &gSprites[objectEvent->spriteId]; + objEvent->graphicsId = OBJ_EVENT_GFX_OW_MON; + ObjectEventSetGraphics(objEvent, graphicsInfo); + objEvent->graphicsId = OBJ_EVENT_GFX_OW_MON; + objEvent->extra.mon.species = species; + objEvent->extra.mon.form = form; + objEvent->extra.mon.shiny = shiny; + if (graphicsInfo->paletteTag == OBJ_EVENT_PAL_TAG_DYNAMIC && doPalette) { // Use palette from species palette table + u8 paletteNum; + struct Sprite *sprite = &gSprites[objEvent->spriteId]; // 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]; @@ -1669,24 +1670,19 @@ static void FollowerSetGraphics(struct ObjectEvent *objectEvent, u16 species, u8 sprite->inUse = FALSE; FieldEffectFreePaletteIfUnused(sprite->oam.paletteNum); sprite->inUse = TRUE; - if (IndexOfSpritePaletteTag(spritePalette->tag) == 0xFF) { // Load compressed palette + if ((paletteNum = IndexOfSpritePaletteTag(spritePalette->tag)) == 0xFF) { // Load compressed palette LoadCompressedSpritePalette(spritePalette); - sprite->oam.paletteNum = IndexOfSpritePaletteTag(spritePalette->tag); // Tag is always present + sprite->oam.paletteNum = 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 ? - // REGIS ? - u16 * palette = &gPlttBufferUnfaded[(sprite->oam.paletteNum+16)*16]; + // 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(sprite->oam.paletteNum, FALSE); + UpdateSpritePaletteWithWeather(paletteNum, FALSE); } else - sprite->oam.paletteNum = IndexOfSpritePaletteTag(spritePalette->tag); // Tag is always present + sprite->oam.paletteNum = paletteNum; } } @@ -1717,7 +1713,7 @@ void UpdateFollowingPokemon(void) { // Update following pokemon if any MoveObjectEventToMapCoords(objEvent, gObjectEvents[gPlayerAvatar.objectEventId].currentCoords.x, gObjectEvents[gPlayerAvatar.objectEventId].currentCoords.y); objEvent->invisible = TRUE; } - FollowerSetGraphics(objEvent, species, 0, shiny); + FollowerSetGraphics(objEvent, species, 0, shiny, TRUE); sprite->data[6] = 0; // set animation data objEvent->extra.mon.species = species; objEvent->extra.mon.shiny = shiny; @@ -2147,7 +2143,7 @@ static void SpawnObjectEventOnReturnToField(u8 objectEventId, s16 x, s16 y) sprite->sObjEventId = objectEventId; objectEvent->spriteId = i; if (objectEvent->graphicsId == OBJ_EVENT_GFX_OW_MON) { // Set pokemon graphics - FollowerSetGraphics(objectEvent, objectEvent->extra.mon.species, objectEvent->extra.mon.form, objectEvent->extra.mon.shiny); + FollowerSetGraphics(objectEvent, objectEvent->extra.mon.species, objectEvent->extra.mon.form, objectEvent->extra.mon.shiny, TRUE); } if (!objectEvent->inanimate && objectEvent->movementType != MOVEMENT_TYPE_PLAYER) StartSpriteAnim(sprite, GetFaceDirectionAnimNum(objectEvent->facingDirection)); @@ -6494,11 +6490,11 @@ bool8 MovementAction_ExitPokeball_Step1(struct ObjectEvent *objectEvent, struct return TRUE; // Restore graphicsId and set palette to white } else if ((duration == 0 && sprite->data[3] == 3) || (duration == 1 && sprite->data[3] == 7)) { - FollowerSetGraphics(objectEvent, objectEvent->extra.mon.species, objectEvent->extra.mon.form, objectEvent->extra.mon.shiny); + FollowerSetGraphics(objectEvent, objectEvent->extra.mon.species, objectEvent->extra.mon.form, objectEvent->extra.mon.shiny, FALSE); LoadWhiteFlashPalette(objectEvent, sprite); // Restore original palette } else if ((duration == 0 && sprite->data[3] == 1) || (duration == 1 && sprite->data[3] == 3)) { - FollowerSetGraphics(objectEvent, objectEvent->extra.mon.species, objectEvent->extra.mon.form, objectEvent->extra.mon.shiny); + FollowerSetGraphics(objectEvent, objectEvent->extra.mon.species, objectEvent->extra.mon.form, objectEvent->extra.mon.shiny, TRUE); } return FALSE; } @@ -6526,7 +6522,7 @@ bool8 MovementAction_EnterPokeball_Step1(struct ObjectEvent *objectEvent, struct bool8 MovementAction_EnterPokeball_Step2(struct ObjectEvent *objectEvent, struct Sprite *sprite) { - FollowerSetGraphics(objectEvent, objectEvent->extra.mon.species, objectEvent->extra.mon.form, objectEvent->extra.mon.shiny); + FollowerSetGraphics(objectEvent, objectEvent->extra.mon.species, objectEvent->extra.mon.form, objectEvent->extra.mon.shiny, FALSE); objectEvent->invisible = TRUE; sprite->data[1] = 0; sprite->data[6] = 0; diff --git a/src/overworld.c b/src/overworld.c index a36e2ed55..c66702667 100644 --- a/src/overworld.c +++ b/src/overworld.c @@ -1515,9 +1515,10 @@ void UpdatePalettesWithTime(u32 palettes) { if (MapHasNaturalLight(gMapHeader.mapType)) { u16 i; u16 tempPaletteBuffer[16]; - for (i = 0; i < 16; i++) { + u32 mask = 1 << 16; + for (i = 0; i < 16; i++, mask <<= 1) { if (GetSpritePaletteTagByPaletteNum(i) >> 15) // Don't blend special sprite palette tags - palettes &= ~(1 << (i + 16)); + palettes &= ~(mask); } palettes &= 0xFFFF1FFF; // Don't blend tile palettes [13,15] if (!palettes) @@ -1536,7 +1537,7 @@ u8 UpdateSpritePaletteWithTime(u8 paletteNum) { u16 offset; if (GetSpritePaletteTagByPaletteNum(paletteNum) >> 15) return paletteNum; - offset = (paletteNum + 16) * 16; + offset = (paletteNum + 16) << 4; TimeMixPalettes(1, gPlttBufferUnfaded + offset, gPlttBufferFaded + offset, From 74a90889ace827e1f33769a32176f381e8eaf771 Mon Sep 17 00:00:00 2001 From: Ariel Antonitis Date: Sun, 25 Apr 2021 22:38:31 -0400 Subject: [PATCH 109/241] Fixed rain fade-in. --- src/field_weather.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/field_weather.c b/src/field_weather.c index aad85dfc6..1f275a3df 100644 --- a/src/field_weather.c +++ b/src/field_weather.c @@ -566,11 +566,12 @@ static void ApplyGammaShiftWithBlend(u8 startPalIndex, u8 numPalettes, s8 gammaI while (curPalIndex < numPalettes) { + CpuFastCopy(gPlttBufferUnfaded + palOffset, gPlttBufferFaded + palOffset, 16 * sizeof(u16)); UpdatePalettesWithTime(1 << (palOffset >> 4)); // Apply TOD blend if (sPaletteGammaTypes[curPalIndex] == GAMMA_NONE) { // No gamma shift. Simply blend the colors. - BlendPalettesFine(1 << (palOffset >> 4), gPlttBufferFaded, gPlttBufferFaded, blendCoeff, blendColor); + BlendPalettesFine(1, gPlttBufferFaded + palOffset, gPlttBufferFaded + palOffset, blendCoeff, blendColor); palOffset += 16; } else From 7d8e63a44b8a7654055cf564971fd744b5e87d7d Mon Sep 17 00:00:00 2001 From: Ariel Antonitis Date: Sun, 25 Apr 2021 23:50:29 -0400 Subject: [PATCH 110/241] Reverted 42d5fe07f and fixed rain/thunder gamma. --- src/field_weather.c | 24 ++++++++++++++---------- src/field_weather_effect.c | 8 +++----- 2 files changed, 17 insertions(+), 15 deletions(-) diff --git a/src/field_weather.c b/src/field_weather.c index 1f275a3df..205b4f7f2 100644 --- a/src/field_weather.c +++ b/src/field_weather.c @@ -468,19 +468,23 @@ static void ApplyGammaShift(u8 startPalIndex, u8 numPalettes, s8 gammaIndex) { gammaIndex--; palOffset = startPalIndex * 16; + CpuFastCopy(gPlttBufferUnfaded + palOffset, gPlttBufferFaded + palOffset, 32 * numPalettes); numPalettes += startPalIndex; + // Thunder gamma-shift looks bad on night-blended palettes, so ignore time blending in some situations + if (!(gammaIndex > 3 && gWeatherPtr->currWeather == WEATHER_RAIN_THUNDERSTORM)) { + // Create the palette mask + u32 palettes = PALETTES_ALL; + palettes = (palettes >> startPalIndex) << startPalIndex; + palettes = (palettes << (32-numPalettes)) >> (32-numPalettes); + UpdatePalettesWithTime(palettes); + } curPalIndex = startPalIndex; - // Loop through the speficied palette range and apply necessary gamma shifts to the colors. - // TODO: Optimize this to work with time blending while (curPalIndex < numPalettes) { - CpuFastCopy(gPlttBufferUnfaded + palOffset, gPlttBufferFaded + palOffset, 16 * sizeof(u16)); - UpdatePalettesWithTime(1 << (palOffset >> 4)); if (sPaletteGammaTypes[curPalIndex] == GAMMA_NONE) { // No palette change. - // CpuFastCopy(gPlttBufferUnfaded + palOffset, gPlttBufferFaded + palOffset, 16 * sizeof(u16)); palOffset += 16; } else @@ -537,11 +541,11 @@ static void ApplyGammaShift(u8 startPalIndex, u8 numPalettes, s8 gammaIndex) else { if (MapHasNaturalLight(gMapHeader.mapType)) { // Time-blend - u32 palettes = 0; - u32 mask = 1 << startPalIndex; - u8 i; - for (i = 0; i < numPalettes; i++, mask <<= 1) - palettes |= mask; + // Create the palette mask + u32 palettes = PALETTES_ALL; + numPalettes += startPalIndex; + palettes = (palettes >> startPalIndex) << startPalIndex; + palettes = (palettes << (32-numPalettes)) >> (32-numPalettes); UpdatePalettesWithTime(palettes); } else { // copy CpuFastCopy(gPlttBufferUnfaded + startPalIndex * 16, gPlttBufferFaded + startPalIndex * 16, numPalettes * 16 * sizeof(u16)); diff --git a/src/field_weather_effect.c b/src/field_weather_effect.c index e22f04b74..dad649031 100644 --- a/src/field_weather_effect.c +++ b/src/field_weather_effect.c @@ -483,7 +483,7 @@ void Rain_InitVars(void) gWeatherPtr->rainSpriteVisibleDelay = 8; gWeatherPtr->isDownpour = FALSE; gWeatherPtr->targetRainSpriteCount = 10; - gWeatherPtr->gammaTargetIndex = gTimeOfDay == TIME_OF_DAY_DAY ? 3 : 0; + gWeatherPtr->gammaTargetIndex = 3; gWeatherPtr->gammaStepDelay = 20; SetRainStrengthFromSoundEffect(SE_RAIN); Weather_SetBlendCoeffs(8, 12); // preserve shadow darkness @@ -1053,7 +1053,7 @@ void Thunderstorm_InitVars(void) gWeatherPtr->rainSpriteVisibleDelay = 4; gWeatherPtr->isDownpour = FALSE; gWeatherPtr->targetRainSpriteCount = 16; - gWeatherPtr->gammaTargetIndex = gTimeOfDay == TIME_OF_DAY_DAY ? 3 : 0; + gWeatherPtr->gammaTargetIndex = 3; gWeatherPtr->gammaStepDelay = 20; gWeatherPtr->weatherGfxLoaded = FALSE; // duplicate assignment gWeatherPtr->thunderTriggered = FALSE; @@ -1154,8 +1154,6 @@ void Thunderstorm_Main(void) if (--gWeatherPtr->thunderDelay == 0) { ApplyWeatherGammaShiftIfIdle(3); - if (gTimeOfDay != TIME_OF_DAY_DAY) - UpdatePalettesWithTime(0xFFFFFFFF); gWeatherPtr->thunderAllowEnd = TRUE; if (--gWeatherPtr->thunderShortRetries != 0) { @@ -1196,7 +1194,7 @@ void Thunderstorm_Main(void) case TSTORM_STATE_FADE_THUNDER_LONG: if (--gWeatherPtr->thunderDelay == 0) { - gTimeOfDay == TIME_OF_DAY_DAY ? sub_80ABC7C(19, 3, 5) : UpdatePalettesWithTime(0xFFFFFFFF); + sub_80ABC7C(19, 3, 5); gWeatherPtr->initStep++; } break; From c9845c66eed49ae307658ae8c4364a285370f4f3 Mon Sep 17 00:00:00 2001 From: Ariel Antonitis Date: Sun, 2 May 2021 03:23:38 -0400 Subject: [PATCH 111/241] Fixed mirage tower time blending. --- src/palette_util.c | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/src/palette_util.c b/src/palette_util.c index 5364ff6d9..4f6416ea0 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 @@ -247,7 +248,7 @@ int InitPulseBlendPaletteSettings(struct PulseBlend *pulseBlend, const struct Pu if (pulseBlendPalette == NULL) return 0xFF; - + pulseBlendPalette->blendCoeff = 0; pulseBlendPalette->fadeDirection = 0; pulseBlendPalette->available = 1; @@ -322,7 +323,7 @@ void MarkUsedPulseBlendPalettes(struct PulseBlend *pulseBlend, u16 pulseBlendPal pulseBlend->usedPulseBlendPalettes |= 1 << i; } } - } + } } void UnmarkUsedPulseBlendPalettes(struct PulseBlend *pulseBlend, u16 pulseBlendPaletteSelector, u8 multiSelection) @@ -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 @@ -423,7 +429,7 @@ void UpdatePulseBlend(struct PulseBlend *pulseBlend) pulseBlendPalette->blendCoeff = 0; else pulseBlendPalette->blendCoeff = pulseBlendPalette->pulseBlendSettings.maxBlendCoeff & 0xF; - + pulseBlendPalette->fadeDirection ^= 1; pulseBlendPalette->fadeCycleCounter++; break; From c20db9475d63509d96ac6214d2db94599ec90185 Mon Sep 17 00:00:00 2001 From: Ariel Antonitis Date: Tue, 4 May 2021 00:49:51 -0400 Subject: [PATCH 112/241] Fixed BlendPalettes not incrementing the destination buffer. --- src/palette.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/palette.c b/src/palette.c index b947f464c..052b8a556 100644 --- a/src/palette.c +++ b/src/palette.c @@ -1018,7 +1018,7 @@ void BlendPalettesFine(u32 palettes, u16 *src, u16 *dst, u32 coeff, u32 color) { } } else { src += 16; - dst + 16; + dst += 16; } palettes >>= 1; } while (palettes); From 7d420b22e8b5e3a0808a533e0df94ff00ec54c0e Mon Sep 17 00:00:00 2001 From: Ariel Antonitis Date: Wed, 5 May 2021 19:58:44 -0400 Subject: [PATCH 113/241] Added affine animations for followers entering/exiting pokeball. --- .../object_events/pics/misc/animated_ball.png | Bin 4840 -> 8227 bytes src/event_object_movement.c | 61 ++++++++++++++++-- 2 files changed, 55 insertions(+), 6 deletions(-) diff --git a/graphics/object_events/pics/misc/animated_ball.png b/graphics/object_events/pics/misc/animated_ball.png index da7a678e10512cc45708b7bfec5d3ad0b1b4bfa9..534e66c7b4258dea4c7866063725614ae31a4af8 100644 GIT binary patch literal 8227 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 b16X3C9xz`kd0<2<4`8T!R_DH!bL9U3Y5}^Y delta 4749 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 b{j<3OejURT?|9!600000NkvXXu0mjfg9!&- diff --git a/src/event_object_movement.c b/src/event_object_movement.c index fc99a172a..6fab120d7 100644 --- a/src/event_object_movement.c +++ b/src/event_object_movement.c @@ -6459,7 +6459,7 @@ static u8 LoadWhiteFlashPalette(struct ObjectEvent *objectEvent, struct Sprite * bool8 MovementAction_ExitPokeball_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite) { objectEvent->invisible = FALSE; - if (TestPlayerAvatarFlags(PLAYER_AVATAR_FLAG_DASH)) { + if (TestPlayerAvatarFlags(PLAYER_AVATAR_FLAG_DASH)) { // If player is dashing, the pokemon must come out faster InitMoveInPlace(objectEvent, sprite, DIR_SOUTH, GetMoveDirectionFastestAnimNum(DIR_NORTH), 8); sprite->data[6] = 0; // fast speed } else { @@ -6470,6 +6470,40 @@ bool8 MovementAction_ExitPokeball_Step0(struct ObjectEvent *objectEvent, struct 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_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_PokeballEnter, + sAffineAnim_PokeballEnterEast, +}; + bool8 MovementAction_ExitPokeball_Step1(struct ObjectEvent *objectEvent, struct Sprite *sprite) { u8 duration = sprite->data[6] & 0xF; @@ -6479,12 +6513,20 @@ bool8 MovementAction_ExitPokeball_Step1(struct ObjectEvent *objectEvent, struct sprite->data[2] = 2; sprite->animPaused = TRUE; return TRUE; - // Restore graphicsId and set palette to white + // Set graphics, palette, and affine animation } else if ((duration == 0 && sprite->data[3] == 3) || (duration == 1 && sprite->data[3] == 7)) { FollowerSetGraphics(objectEvent, objectEvent->extra.mon.species, objectEvent->extra.mon.form, objectEvent->extra.mon.shiny); LoadWhiteFlashPalette(objectEvent, sprite); - // Restore original palette + // Initialize affine animation + sprite->affineAnims = sAffineAnims_PokeballFollower; + sprite->oam.affineMode = ST_OAM_AFFINE_NORMAL; + InitSpriteAffineAnim(sprite); + StartSpriteAffineAnim(sprite, 0); + // 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, objectEvent->extra.mon.species, objectEvent->extra.mon.form, objectEvent->extra.mon.shiny); } return FALSE; @@ -6493,7 +6535,7 @@ bool8 MovementAction_ExitPokeball_Step1(struct ObjectEvent *objectEvent, struct bool8 MovementAction_EnterPokeball_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite) { u8 direction = objectEvent->facingDirection; InitMoveInPlace(objectEvent, sprite, direction, GetMoveDirectionFasterAnimNum(direction), 16); - sprite->data[6] = 1; // slow speed + sprite->data[6] = direction == DIR_EAST ? 2 : 1; // affine animation number return MovementAction_EnterPokeball_Step1(objectEvent, sprite); } @@ -6503,9 +6545,16 @@ bool8 MovementAction_EnterPokeball_Step1(struct ObjectEvent *objectEvent, struct if (sprite->data[3] == 0) { sprite->data[2] = 2; return FALSE; - } else if (sprite->data[3] == 11) { // Set palette to white + } else if (sprite->data[3] == 11) { // Set palette to white & start affine LoadWhiteFlashPalette(objectEvent, sprite); - } else if (sprite->data[3] == 7) { // Free white palette and change to pokeball + 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); } return FALSE; From e9d01b480829daaefde6bea250a50b94cb3b5668 Mon Sep 17 00:00:00 2001 From: Ariel Antonitis Date: Sat, 22 May 2021 02:10:12 -0400 Subject: [PATCH 114/241] Added a non-RNG, PID-preserving way to modify pokemon nature. (wip) Preserve shiny value when changing nature. (WIP) Preserve shiny value. (WIP) Preserve nature. (WIP) Removed some debugging statements. (WIP) Removed more debugging statements. (WIP) Nature changing now supports Unown. --- include/constants/pokemon.h | 1 + src/pokemon.c | 90 +++++++++++++++++++++++++++++++++++-- 2 files changed, 87 insertions(+), 4 deletions(-) diff --git a/include/constants/pokemon.h b/include/constants/pokemon.h index 51ef0c015..a6b150e9e 100644 --- a/include/constants/pokemon.h +++ b/include/constants/pokemon.h @@ -181,6 +181,7 @@ #define MON_DATA_SPEED2 86 #define MON_DATA_SPATK2 87 #define MON_DATA_SPDEF2 88 +#define MON_DATA_NATURE 89 // Ribbon IDs used by TV and Pokénav #define CHAMPION_RIBBON 0 diff --git a/src/pokemon.c b/src/pokemon.c index b4eb6f01a..da3b80baf 100644 --- a/src/pokemon.c +++ b/src/pokemon.c @@ -3980,6 +3980,9 @@ u32 GetBoxMonData(struct BoxPokemon *boxMon, s32 field, u8 *data) | (substruct3->worldRibbon << 26); } break; + case MON_DATA_NATURE: + return boxMon->personality % 25; + break; default: break; } @@ -4032,6 +4035,10 @@ void SetMonData(struct Pokemon *mon, s32 field, const void *dataArg) break; case MON_DATA_SPECIES2: break; + case MON_DATA_NATURE: // Calculate stats after settings + SetBoxMonData(&mon->box, field, data); + CalculateMonStats(mon); + break; default: SetBoxMonData(&mon->box, field, data); break; @@ -4298,6 +4305,81 @@ void SetBoxMonData(struct BoxPokemon *boxMon, s32 field, const void *dataArg) substruct3->spDefenseIV = (ivs >> 25) & MAX_IV_MASK; break; } + case MON_DATA_NATURE: + { + u32 pid = boxMon->personality; + u32 otId = boxMon->otId; + s8 diff = (data[0] % 25) - (pid % 25); // difference between new nature and current nature, [-24,24] + bool8 preserveShiny = FALSE; + bool8 preserveLetter = FALSE; + u16 shinyValue = HIHALF(pid) ^ LOHALF(pid); + s32 tweak; + u32 pidTemp; + // See https://bulbapedia.bulbagarden.net/wiki/Personality_value#Nature + // Goal here is to preserve as much of the PID as possible + // To preserve gender & substruct order, we add/subtract multiples of 5376 that is 0 % 256, 0 % 24, 1 % 25 + // i.e, to increase the nature by n % 25, we add n*5376 % 19200 (LCM of 24, 25, 256) to the pid + // Ability number is determined by parity and so adding multiples of 5376 preserves it + // TODO: For genderless pokemon, 576/600 can be used instead of 5376/19200 + if (diff == 0) // No change + break; + else if (diff < 0) + diff = 25+diff; + tweak = (diff*5376) % 19200; + pidTemp = pid + tweak; + // If the pokemon is shiny or if changing the PID would make it shiny, preserve its shiny value + if (IsShinyOtIdPersonality(otId, pid) || IsShinyOtIdPersonality(otId, pidTemp)) + preserveShiny = TRUE; + if (substruct0->species == SPECIES_UNOWN) // Preserve Unown letter + preserveLetter = TRUE; + if (preserveShiny && preserveLetter) { // honestly though, how many shiny Unown are out there ? + while (pidTemp > pid) { + if ((HIHALF(pidTemp) ^ LOHALF(pidTemp) ^ shinyValue) < SHINY_ODDS) + if (GET_UNOWN_LETTER(pidTemp) == GET_UNOWN_LETTER(pid)) + break; + pidTemp += 19200; + } + } else if (preserveShiny) { + while (pidTemp > pid) { + if ((HIHALF(pidTemp) ^ LOHALF(pidTemp) ^ shinyValue) < SHINY_ODDS) + break; + pidTemp += 19200; + } + } else if (preserveLetter) { + while (pidTemp > pid) { + if (GET_UNOWN_LETTER(pidTemp) == GET_UNOWN_LETTER(pid)) + break; + pidTemp += 19200; + } + } + if (pidTemp < pid) { // overflow; search backwards + tweak -= 19200; + pidTemp = pid + tweak; + if (preserveShiny && preserveLetter) { + while (pidTemp < pid) { + if ((HIHALF(pidTemp) ^ LOHALF(pidTemp) ^ shinyValue) < SHINY_ODDS) + if (GET_UNOWN_LETTER(pidTemp) == GET_UNOWN_LETTER(pid)) + break; + pidTemp -= 19200; + } + } else if (preserveShiny) { + while (pidTemp < pid) { + if ((HIHALF(pidTemp) ^ LOHALF(pidTemp) ^ shinyValue) < SHINY_ODDS) + break; + pidTemp -= 19200; + } + } else if (preserveLetter) { + while (pidTemp < pid) { + if (GET_UNOWN_LETTER(pidTemp) == GET_UNOWN_LETTER(pid)) + break; + pidTemp -= 19200; + } + } + } + if (pid % 24 == pidTemp % 24 || pid % 256 == pidTemp % 256) + boxMon->personality = pidTemp; + break; + } default: break; } @@ -4878,7 +4960,7 @@ bool8 PokemonUseItemEffects(struct Pokemon *mon, u16 item, u8 partyIndex, u8 mov temp2 = itemEffect[itemEffectParam]; dataSigned = GetMonData(mon, sGetMonDataEVConstants[temp1], NULL); evChange = temp2; - + if (evChange > 0) // Increasing EV (HP or Atk) { // Has EV increase limit already been reached? @@ -4976,7 +5058,7 @@ bool8 PokemonUseItemEffects(struct Pokemon *mon, u16 item, u8 partyIndex, u8 mov { if (!usedByAI) { - // Restore HP + // Restore HP dataUnsigned = GetMonData(mon, MON_DATA_HP, NULL) + dataUnsigned; if (dataUnsigned > GetMonData(mon, MON_DATA_MAX_HP, NULL)) dataUnsigned = GetMonData(mon, MON_DATA_MAX_HP, NULL); @@ -5055,7 +5137,7 @@ bool8 PokemonUseItemEffects(struct Pokemon *mon, u16 item, u8 partyIndex, u8 mov dataUnsigned = CalculatePPWithBonus(moveId, GetMonData(mon, MON_DATA_PP_BONUSES, NULL), moveIndex); } SetMonData(mon, MON_DATA_PP1 + moveIndex, &dataUnsigned); - + // Heal battler PP too (if applicable) if (gMain.inBattle && battlerId != MAX_BATTLERS_COUNT && !(gBattleMons[battlerId].status2 & STATUS2_TRANSFORMED) @@ -5092,7 +5174,7 @@ bool8 PokemonUseItemEffects(struct Pokemon *mon, u16 item, u8 partyIndex, u8 mov case 5: effectFlags = itemEffect[i]; temp1 = 0; - + // Loop through and try each of the ITEM5 effects while (effectFlags != 0) { From c267dd6ee6e9766c70a1522adf6f0a812e337ae6 Mon Sep 17 00:00:00 2001 From: Ariel Antonitis Date: Sun, 23 May 2021 21:04:37 -0400 Subject: [PATCH 115/241] Added function to check for newer emulators/hardware. --- include/global.h | 1 + src/main.c | 10 ++++++++++ 2 files changed, 11 insertions(+) diff --git a/include/global.h b/include/global.h index 5de8b410b..b57cc2604 100644 --- a/include/global.h +++ b/include/global.h @@ -497,6 +497,7 @@ struct SaveBlock2 extern struct SaveBlock2 *gSaveBlock2Ptr; extern u8 UpdateSpritePaletteWithTime(u8); +extern bool8 IsAccurateGBA(void); struct SecretBaseParty { diff --git a/src/main.c b/src/main.c index 3125716e2..985b9185b 100644 --- a/src/main.c +++ b/src/main.c @@ -432,3 +432,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; +} From 37f0684d98c6b7aa6513a58ec2776f590642613b Mon Sep 17 00:00:00 2001 From: Ariel Antonitis Date: Fri, 4 Jun 2021 22:21:09 -0400 Subject: [PATCH 116/241] Unown followers now appear as the right letter. --- include/global.fieldmap.h | 4 ++-- src/event_object_movement.c | 23 ++++++++++++++++++----- 2 files changed, 20 insertions(+), 7 deletions(-) diff --git a/include/global.fieldmap.h b/include/global.fieldmap.h index 0e65cc844..3e250c217 100644 --- a/include/global.fieldmap.h +++ b/include/global.fieldmap.h @@ -213,8 +213,8 @@ struct ObjectEvent /*0x22*/ union __attribute__((packed)) { u8 playerCopyableMovement; struct __attribute__((packed)) { - u16 species:11; // 11 bits; 2048 species - u16 form:4; + u16 species:10; // 11 bits; 1024 species + u16 form:5; // Used for Deoxys, Unown, etc u16 shiny:1; } mon; u16 asU16; diff --git a/src/event_object_movement.c b/src/event_object_movement.c index 6fab120d7..b75b0912b 100644 --- a/src/event_object_movement.c +++ b/src/event_object_movement.c @@ -1645,10 +1645,19 @@ struct ObjectEvent * GetFollowerObject(void) { // Return follower ObjectEvent or return NULL; } -// Return graphicsInfo for a pokemon species +// Return graphicsInfo for a pokemon species & form static const struct ObjectEventGraphicsInfo * SpeciesToGraphicsInfo(u16 species, u8 form) { - const struct ObjectEventGraphicsInfo *graphicsInfo = &gPokemonObjectGraphics[species]; - return graphicsInfo->tileTag == 0xFFFF ? graphicsInfo : &gPokemonObjectGraphics[SPECIES_PORYGON]; + 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; + default: + graphicsInfo = &gPokemonObjectGraphics[species]; + break; + } + return graphicsInfo->tileTag == 0xFFFF ? graphicsInfo : &gPokemonObjectGraphics[SPECIES_PORYGON]; // avoid OOB access } // Set graphics & sprite for a follower object event by species & shininess. @@ -1684,6 +1693,7 @@ void UpdateFollowingPokemon(void) { // Update following pokemon if any struct Sprite *sprite; u16 species; bool8 shiny; + u8 form; // Avoid spawning large (64x64) follower pokemon inside buildings if (mon && !(gMapHeader.mapType == MAP_TYPE_INDOOR && SpeciesToGraphicsInfo(GetMonData(mon, MON_DATA_SPECIES), 0)->width == 64)) { if (objEvent == NULL) { // Spawn follower @@ -1701,14 +1711,17 @@ void UpdateFollowingPokemon(void) { // Update following pokemon if any sprite = &gSprites[objEvent->spriteId]; species = GetMonData(mon, MON_DATA_SPECIES); shiny = IsMonShiny(mon); - if (species != objEvent->extra.mon.species || shiny != objEvent->extra.mon.shiny) { // Move to player and set invisible + form = species == SPECIES_UNOWN ? GET_UNOWN_LETTER(mon->box.personality) : 0; + // Follower appearance changed; move to player and set invisible + if (species != objEvent->extra.mon.species || shiny != objEvent->extra.mon.shiny || form != objEvent->extra.mon.form) { MoveObjectEventToMapCoords(objEvent, gObjectEvents[gPlayerAvatar.objectEventId].currentCoords.x, gObjectEvents[gPlayerAvatar.objectEventId].currentCoords.y); objEvent->invisible = TRUE; } - FollowerSetGraphics(objEvent, species, 0, shiny); + FollowerSetGraphics(objEvent, species, form, shiny); sprite->data[6] = 0; // set animation data objEvent->extra.mon.species = species; objEvent->extra.mon.shiny = shiny; + objEvent->extra.mon.form = form; } else { RemoveFollowingPokemon(); } From 3568c2a882bc089eff960476068381ff87853e5a Mon Sep 17 00:00:00 2001 From: Ariel Antonitis Date: Sat, 12 Jun 2021 00:35:15 -0400 Subject: [PATCH 117/241] Fixed bug with followers and cross-map scripting events. --- src/event_object_movement.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/event_object_movement.c b/src/event_object_movement.c index b75b0912b..091bd11b3 100644 --- a/src/event_object_movement.c +++ b/src/event_object_movement.c @@ -2064,7 +2064,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); } } From 9a6f6212b2751b2b66b86d3cdaf13a034201371d Mon Sep 17 00:00:00 2001 From: Ariel Antonitis Date: Tue, 15 Jun 2021 18:05:38 -0400 Subject: [PATCH 118/241] Fixed bug where selling items freed sprite palettes too early. --- Makefile | 5 +++++ gflib/sprite.c | 15 ++++++++++----- remote_build.sh | 2 +- 3 files changed, 16 insertions(+), 6 deletions(-) diff --git a/Makefile b/Makefile index 64ed041d4..23d0a8d52 100644 --- a/Makefile +++ b/Makefile @@ -280,6 +280,11 @@ ifeq ($(DINFO),1) override CFLAGS += -g endif +ifeq ($(DDEBUG),1) +override ASFLAGS += --defsym DEBUG=1 +override CPPFLAGS += -D DEBUG=1 +endif + $(C_BUILDDIR)/%.o : $(C_SUBDIR)/%.c $$(c_dep) @$(CPP) $(CPPFLAGS) $< -o $(C_BUILDDIR)/$*.i @$(PREPROC) $(C_BUILDDIR)/$*.i charmap.txt | $(CC1) $(CFLAGS) -o $(C_BUILDDIR)/$*.s diff --git a/gflib/sprite.c b/gflib/sprite.c index 36675535b..92c01b729 100644 --- a/gflib/sprite.c +++ b/gflib/sprite.c @@ -1673,11 +1673,16 @@ u16 GetSpritePaletteTagByPaletteNum(u8 paletteNum) void FreeSpritePaletteByTag(u16 tag) { u8 index = IndexOfSpritePaletteTag(tag); - u16 emptyPalette[16] = {0}; - if (index != 0xFF) { - sSpritePaletteTags[index] = 0xFFFF; - LoadPalette(emptyPalette, index * 16 + 0x100, 32); // TODO: For debugging only - } + #if DEBUG + u16 emptyPalette[16] = {0}; + if (index != 0xFF) { + sSpritePaletteTags[index] = 0xFFFF; + LoadPalette(emptyPalette, index * 16 + 0x100, 32); + } + #else + if (index != 0xFF) + sSpritePaletteTags[index] = 0xFFFF; + #endif } void SetSubspriteTables(struct Sprite *sprite, const struct SubspriteTable *subspriteTables) diff --git a/remote_build.sh b/remote_build.sh index 1f6dbd1f4..1d603ddc8 100644 --- a/remote_build.sh +++ b/remote_build.sh @@ -11,5 +11,5 @@ set -x git push build --force # `nproc` must be escaped so that it executes on the remote machine ssh $remote_host "cd $remote_path && git reset --hard && git checkout $git_branch && \ - echo \"Using \`nproc\` job(s)\" && make -j\`nproc\`" + echo \"Using \`nproc\` job(s)\" && make DDEBUG=1 -j\`nproc\`" scp "$remote_host:$remote_path/pokeemerald.gba" romhack.gba From dda599e9291fb5b2110367b99bf1486e96ff6608 Mon Sep 17 00:00:00 2001 From: Ariel Antonitis Date: Tue, 15 Jun 2021 18:54:36 -0400 Subject: [PATCH 119/241] Updated README & Improved efficiency of tracking palette unloads. --- README.md | 22 +++++++++++++++++----- gflib/sprite.c | 16 ++++++---------- 2 files changed, 23 insertions(+), 15 deletions(-) diff --git a/README.md b/README.md index 7adbb3e2d..7709e8200 100644 --- a/README.md +++ b/README.md @@ -1,14 +1,26 @@ # Pokémon Emerald -This is a decompilation of Pokémon Emerald. +This is a fork of the [matching decompilation](https://github.com/pret/pokeemerald) at [PRET](https://github.com/pret). -It builds the following ROM: +The general philosophy of this fork is to maintain vanilla behavior & compatibility where possible, especially in terms of data structures. For that reason, this fork does not increase the size of the save data structure or the object event structure, nor does it add a `nature` field to the Pokémon 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 additional features compared to vanilla: + +**romhack** 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. +* HGSS-style alpha-blended shadows for object events. +* A way to change a pokemon's nature while mangling its PID as little as possible. +* Function to detect newer emulators/new GBA hardware. + +**lighting** branch: +* Everything from the **romhack** branch. +* Day/night shading compatible with weather. +* GSC-style window lights. +* WIP interframe-blended lamp lights at night, i.e in Rustboro. To set up the repository, see [INSTALL.md](INSTALL.md). - ## See also Other disassembly and/or decompilation projects: @@ -28,4 +40,4 @@ Other disassembly and/or decompilation projects: ## Contacts -You can find us on [Discord](https://discord.gg/d5dubZ3) and [IRC](https://kiwiirc.com/client/irc.freenode.net/?#pret). +You can find PRET on [Discord](https://discord.gg/d5dubZ3) and [IRC](https://kiwiirc.com/client/irc.freenode.net/?#pret). diff --git a/gflib/sprite.c b/gflib/sprite.c index 92c01b729..9701d4797 100644 --- a/gflib/sprite.c +++ b/gflib/sprite.c @@ -1673,16 +1673,12 @@ u16 GetSpritePaletteTagByPaletteNum(u8 paletteNum) void FreeSpritePaletteByTag(u16 tag) { u8 index = IndexOfSpritePaletteTag(tag); - #if DEBUG - u16 emptyPalette[16] = {0}; - if (index != 0xFF) { - sSpritePaletteTags[index] = 0xFFFF; - LoadPalette(emptyPalette, index * 16 + 0x100, 32); - } - #else - if (index != 0xFF) - sSpritePaletteTags[index] = 0xFFFF; - #endif + if (index != 0xFF) { + sSpritePaletteTags[index] = 0xFFFF; + #if DEBUG + FillPalette(0, index * 16 + 0x100, 32); + #endif + } } void SetSubspriteTables(struct Sprite *sprite, const struct SubspriteTable *subspriteTables) From 783149bd3ffbd53dcb70004d278a9c029620145d Mon Sep 17 00:00:00 2001 From: Ariel Antonitis Date: Tue, 20 Jul 2021 19:35:37 -0400 Subject: [PATCH 120/241] Fixed bug where moving truck had a shadow. --- include/constants/event_objects.h | 3 ++- src/data/object_events/object_event_graphics_info.h | 2 +- src/field_effect_helpers.c | 3 +++ 3 files changed, 6 insertions(+), 2 deletions(-) diff --git a/include/constants/event_objects.h b/include/constants/event_objects.h index f90d0c61c..062fb47d5 100644 --- a/include/constants/event_objects.h +++ b/include/constants/event_objects.h @@ -270,7 +270,8 @@ #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) diff --git a/src/data/object_events/object_event_graphics_info.h b/src/data/object_events/object_event_graphics_info.h index dc9676260..97d685c9f 100755 --- a/src/data/object_events/object_event_graphics_info.h +++ b/src/data/object_events/object_event_graphics_info.h @@ -92,7 +92,7 @@ const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_MayMachBike = {0xF const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_MayAcroBike = {0xFFFF, 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 = {0xFFFF, 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 = {0xFFFF, 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 = {0xFFFF, OBJ_EVENT_PAL_TAG_TRUCK, OBJ_EVENT_PAL_TAG_NONE, 1152, 48, 48, 10, SHADOW_SIZE_M, TRUE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_48x48, sAnimTable_Inanimate, sPicTable_Truck, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Truck = {0xFFFF, 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 = {0xFFFF, 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 = {0xFFFF, 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 = {0xFFFF, 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}; diff --git a/src/field_effect_helpers.c b/src/field_effect_helpers.c index db58cb9a7..c96f611f2 100755 --- a/src/field_effect_helpers.c +++ b/src/field_effect_helpers.c @@ -11,6 +11,7 @@ #include "sound.h" #include "sprite.h" #include "trig.h" +#include "constants/event_objects.h" #include "constants/field_effects.h" #include "constants/songs.h" @@ -313,6 +314,8 @@ u32 FldEff_Shadow(void) } objectEventId = GetObjectEventIdByLocalIdAndMap(gFieldEffectArguments[0], gFieldEffectArguments[1], gFieldEffectArguments[2]); graphicsInfo = GetObjectEventGraphicsInfo(gObjectEvents[objectEventId].graphicsId); + if (graphicsInfo->shadowSize == SHADOW_SIZE_NONE) // don't create a shadow at all + return 0; spriteId = CreateSpriteAtEnd(gFieldEffectObjectTemplatePointers[sShadowEffectTemplateIds[graphicsInfo->shadowSize]], 0, 0, 0x94); if (spriteId != MAX_SPRITES) { From b64eb7ea142d91603a213099e8f6d7fcead16277 Mon Sep 17 00:00:00 2001 From: Ariel Antonitis Date: Sat, 28 Aug 2021 03:46:30 -0400 Subject: [PATCH 121/241] Modified palette tint behavior. --- include/palette.h | 6 +++--- src/overworld.c | 4 ++-- src/palette.c | 36 ++++++++++++++++++++++++------------ 3 files changed, 29 insertions(+), 17 deletions(-) diff --git a/include/palette.h b/include/palette.h index 201e85380..39219f40a 100644 --- a/include/palette.h +++ b/include/palette.h @@ -27,9 +27,9 @@ enum }; struct BlendSettings { - u16 blendColor:15; - u16 isTint:1; - u8 coeff:5; + u32 blendColor:24; + u32 isTint:1; + u32 coeff:5; }; struct PaletteFadeControl diff --git a/src/overworld.c b/src/overworld.c index c66702667..cfb819426 100644 --- a/src/overworld.c +++ b/src/overworld.c @@ -1460,11 +1460,11 @@ 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 = 0x1400}, + [TIME_OF_DAY_NIGHT] = {.coeff = 10, .blendColor = TINT_NIGHT, .isTint = TRUE}, [TIME_OF_DAY_TWILIGHT] = {.coeff = 4, .blendColor = 0x56dc, .isTint = TRUE}, [TIME_OF_DAY_DAY] = {.coeff = 0, .blendColor = 0}, }; diff --git a/src/palette.c b/src/palette.c index 052b8a556..697a762a6 100644 --- a/src/palette.c +++ b/src/palette.c @@ -1101,12 +1101,24 @@ void TimeMixPalettes(u32 palettes, u16 *src, u16 *dst, struct BlendSettings *ble tint1 = blend1->isTint; coeff1 = tint1 ? 8*2 : blend1->coeff*2; - r0 = (color0 << 27) >> 27; - g0 = (color0 << 22) >> 27; - b0 = (color0 << 17) >> 27; - r1 = (color1 << 27) >> 27; - g1 = (color1 << 22) >> 27; - b1 = (color1 << 17) >> 27; + 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; @@ -1155,9 +1167,9 @@ void TimeMixPalettes(u32 palettes, u16 *src, u16 *dst, struct BlendSettings *ble g2 = (g + (((g0 - g) * coeff0) >> 5)); b2 = (b + (((b0 - b) * coeff0) >> 5)); } else { // tint-based - r2 = (u16)(((r0 << 3) * r)) >> 8; - g2 = (u16)(((g0 << 3) * g)) >> 8; - b2 = (u16)(((b0 << 3) * b)) >> 8; + r2 = (u16)((r0 * r)) >> 8; + g2 = (u16)((g0 * g)) >> 8; + b2 = (u16)((b0 * b)) >> 8; if (r2 > 31) r2 = 31; if (g2 > 31) @@ -1170,9 +1182,9 @@ void TimeMixPalettes(u32 palettes, u16 *src, u16 *dst, struct BlendSettings *ble g3 = (g + (((g1 - g) * coeff1) >> 5)); b3 = (b + (((b1 - b) * coeff1) >> 5)); } else { // tint-based - r3 = (u16)(((r1 << 3) * r)) >> 8; - g3 = (u16)(((g1 << 3) * g)) >> 8; - b3 = (u16)(((b1 << 3) * b)) >> 8; + r3 = (u16)((r1 * r)) >> 8; + g3 = (u16)((g1 * g)) >> 8; + b3 = (u16)((b1 * b)) >> 8; if (r3 > 31) r3 = 31; if (g3 > 31) From 84ae513cac188cc6a41d32ff16c474d414dc08ca Mon Sep 17 00:00:00 2001 From: Ariel Antonitis Date: Thu, 2 Sep 2021 01:26:33 -0400 Subject: [PATCH 122/241] Added `icons` branch descriptor to README. --- README.md | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/README.md b/README.md index 7709e8200..c0563aaf5 100644 --- a/README.md +++ b/README.md @@ -13,6 +13,15 @@ There are several branches, each with additional features compared to vanilla: * A way to change a pokemon's nature while mangling its PID as little as possible. * Function to detect newer emulators/new GBA hardware. +**icons** branch: +* Everything from the **romhack** branch. +* All pokemon icons updated to nicer looking Gen 6 style, 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 **romhack** branch. * Day/night shading compatible with weather. From ff2f8735c98dddd9339284bd1947e2c5c216191a Mon Sep 17 00:00:00 2001 From: Ariel Antonitis Date: Thu, 2 Sep 2021 20:07:12 -0400 Subject: [PATCH 123/241] Edited OW sprites to better use vanilla palettes. Contributed by @ShinyDragonHunter (Regirock & Registeel) and @SonikkuA-DatH (others). --- .../object_events/pics/pokemon/aerodactyl.png | Bin 961 -> 1128 bytes graphics/object_events/pics/pokemon/aipom.png | Bin 747 -> 873 bytes .../object_events/pics/pokemon/alakazam.png | Bin 761 -> 881 bytes graphics/object_events/pics/pokemon/arbok.png | Bin 710 -> 817 bytes .../object_events/pics/pokemon/ariados.png | Bin 952 -> 1130 bytes graphics/object_events/pics/pokemon/bagon.png | Bin 498 -> 616 bytes .../object_events/pics/pokemon/beautifly.png | Bin 795 -> 978 bytes .../object_events/pics/pokemon/blastoise.png | Bin 846 -> 1028 bytes .../object_events/pics/pokemon/blissey.png | Bin 593 -> 726 bytes .../object_events/pics/pokemon/camerupt.png | Bin 890 -> 1039 bytes .../object_events/pics/pokemon/castform.png | Bin 2895 -> 342 bytes .../object_events/pics/pokemon/caterpie.png | Bin 562 -> 665 bytes .../object_events/pics/pokemon/celebi.png | Bin 542 -> 640 bytes .../object_events/pics/pokemon/chansey.png | Bin 514 -> 627 bytes .../object_events/pics/pokemon/charizard.png | Bin 950 -> 1148 bytes .../object_events/pics/pokemon/charmander.png | Bin 506 -> 609 bytes .../object_events/pics/pokemon/charmeleon.png | Bin 584 -> 683 bytes .../object_events/pics/pokemon/chikorita.png | Bin 466 -> 570 bytes .../object_events/pics/pokemon/chinchou.png | Bin 674 -> 775 bytes .../object_events/pics/pokemon/clamperl.png | Bin 492 -> 604 bytes .../object_events/pics/pokemon/clefable.png | Bin 626 -> 733 bytes .../object_events/pics/pokemon/clefairy.png | Bin 457 -> 565 bytes .../object_events/pics/pokemon/cleffa.png | Bin 415 -> 527 bytes .../object_events/pics/pokemon/corphish.png | Bin 785 -> 926 bytes .../object_events/pics/pokemon/corsola.png | Bin 625 -> 728 bytes .../object_events/pics/pokemon/crobat.png | Bin 958 -> 1120 bytes .../object_events/pics/pokemon/delcatty.png | Bin 757 -> 857 bytes .../object_events/pics/pokemon/delibird.png | Bin 565 -> 711 bytes .../object_events/pics/pokemon/deoxys.png | Bin 728 -> 888 bytes .../object_events/pics/pokemon/dewgong.png | Bin 750 -> 861 bytes .../object_events/pics/pokemon/diglett.png | Bin 420 -> 532 bytes .../object_events/pics/pokemon/dodrio.png | Bin 1034 -> 1137 bytes .../object_events/pics/pokemon/dragonite.png | Bin 789 -> 1040 bytes .../object_events/pics/pokemon/dratini.png | Bin 624 -> 744 bytes .../object_events/pics/pokemon/drowzee.png | Bin 538 -> 644 bytes .../object_events/pics/pokemon/dugtrio.png | Bin 691 -> 777 bytes .../object_events/pics/pokemon/dusclops.png | Bin 829 -> 943 bytes .../object_events/pics/pokemon/dustox.png | Bin 730 -> 907 bytes .../object_events/pics/pokemon/electabuzz.png | Bin 587 -> 693 bytes .../object_events/pics/pokemon/electrode.png | Bin 363 -> 531 bytes .../object_events/pics/pokemon/elekid.png | Bin 515 -> 628 bytes graphics/object_events/pics/pokemon/entei.png | Bin 1013 -> 1140 bytes .../object_events/pics/pokemon/exploud.png | Bin 1096 -> 1217 bytes .../object_events/pics/pokemon/farfetchd.png | Bin 570 -> 676 bytes .../object_events/pics/pokemon/flaaffy.png | Bin 741 -> 855 bytes .../object_events/pics/pokemon/flareon.png | Bin 762 -> 904 bytes .../object_events/pics/pokemon/flygon.png | Bin 933 -> 1045 bytes .../object_events/pics/pokemon/gardevoir.png | Bin 673 -> 842 bytes .../object_events/pics/pokemon/gengar.png | Bin 615 -> 751 bytes .../object_events/pics/pokemon/gligar.png | Bin 993 -> 1099 bytes .../object_events/pics/pokemon/golbat.png | Bin 704 -> 874 bytes .../object_events/pics/pokemon/golduck.png | Bin 585 -> 698 bytes graphics/object_events/pics/pokemon/golem.png | Bin 689 -> 787 bytes .../object_events/pics/pokemon/graveler.png | Bin 625 -> 730 bytes .../object_events/pics/pokemon/grovyle.png | Bin 611 -> 716 bytes .../object_events/pics/pokemon/growlithe.png | Bin 601 -> 707 bytes .../object_events/pics/pokemon/haunter.png | Bin 540 -> 645 bytes .../object_events/pics/pokemon/hitmonchan.png | Bin 566 -> 691 bytes .../object_events/pics/pokemon/hitmontop.png | Bin 538 -> 651 bytes graphics/object_events/pics/pokemon/ho_oh.png | Bin 1957 -> 2163 bytes .../object_events/pics/pokemon/horsea.png | Bin 496 -> 599 bytes .../object_events/pics/pokemon/huntail.png | Bin 995 -> 1138 bytes graphics/object_events/pics/pokemon/hypno.png | Bin 582 -> 716 bytes .../object_events/pics/pokemon/igglybuff.png | Bin 408 -> 511 bytes .../object_events/pics/pokemon/illumise.png | Bin 669 -> 799 bytes .../object_events/pics/pokemon/ivysaur.png | Bin 585 -> 696 bytes .../object_events/pics/pokemon/kabutops.png | Bin 684 -> 844 bytes .../object_events/pics/pokemon/kadabra.png | Bin 711 -> 826 bytes .../object_events/pics/pokemon/kangaskhan.png | Bin 701 -> 884 bytes .../object_events/pics/pokemon/kecleon.png | Bin 664 -> 790 bytes .../object_events/pics/pokemon/kingdra.png | Bin 745 -> 847 bytes .../object_events/pics/pokemon/kirlia.png | Bin 467 -> 594 bytes .../object_events/pics/pokemon/lairon.png | Bin 822 -> 912 bytes .../object_events/pics/pokemon/lapras.png | Bin 783 -> 977 bytes .../object_events/pics/pokemon/larvitar.png | Bin 429 -> 532 bytes .../object_events/pics/pokemon/ledian.png | Bin 879 -> 996 bytes .../object_events/pics/pokemon/ledyba.png | Bin 850 -> 988 bytes .../object_events/pics/pokemon/lileep.png | Bin 582 -> 746 bytes .../object_events/pics/pokemon/ludicolo.png | Bin 713 -> 883 bytes graphics/object_events/pics/pokemon/lugia.png | Bin 1592 -> 1824 bytes .../object_events/pics/pokemon/machamp.png | Bin 916 -> 1032 bytes .../object_events/pics/pokemon/machoke.png | Bin 627 -> 745 bytes .../object_events/pics/pokemon/machop.png | Bin 405 -> 532 bytes .../object_events/pics/pokemon/magmar.png | Bin 730 -> 839 bytes .../object_events/pics/pokemon/magnemite.png | Bin 437 -> 540 bytes .../object_events/pics/pokemon/magneton.png | Bin 801 -> 931 bytes .../object_events/pics/pokemon/mareep.png | Bin 685 -> 789 bytes .../object_events/pics/pokemon/marshtomp.png | Bin 493 -> 613 bytes .../object_events/pics/pokemon/meditite.png | Bin 480 -> 572 bytes .../object_events/pics/pokemon/meganium.png | Bin 807 -> 920 bytes .../object_events/pics/pokemon/metagross.png | Bin 885 -> 991 bytes .../object_events/pics/pokemon/metang.png | Bin 870 -> 994 bytes .../object_events/pics/pokemon/metapod.png | Bin 463 -> 582 bytes graphics/object_events/pics/pokemon/mew.png | Bin 549 -> 685 bytes .../object_events/pics/pokemon/mewtwo.png | Bin 815 -> 862 bytes .../object_events/pics/pokemon/milotic.png | Bin 1022 -> 1191 bytes .../object_events/pics/pokemon/miltank.png | Bin 715 -> 849 bytes graphics/object_events/pics/pokemon/minun.png | Bin 454 -> 553 bytes .../object_events/pics/pokemon/misdreavus.png | Bin 737 -> 912 bytes .../object_events/pics/pokemon/mr_mime.png | Bin 687 -> 830 bytes .../object_events/pics/pokemon/mudkip.png | Bin 395 -> 517 bytes .../object_events/pics/pokemon/nidoqueen.png | Bin 745 -> 891 bytes .../object_events/pics/pokemon/nidoran_f.png | Bin 436 -> 552 bytes .../object_events/pics/pokemon/nidorina.png | Bin 613 -> 718 bytes .../object_events/pics/pokemon/ninetales.png | Bin 701 -> 864 bytes .../object_events/pics/pokemon/noctowl.png | Bin 1035 -> 1154 bytes .../object_events/pics/pokemon/nosepass.png | Bin 635 -> 749 bytes .../object_events/pics/pokemon/nuzleaf.png | Bin 572 -> 673 bytes .../object_events/pics/pokemon/octillery.png | Bin 617 -> 762 bytes .../object_events/pics/pokemon/oddish.png | Bin 353 -> 473 bytes graphics/object_events/pics/pokemon/paras.png | Bin 545 -> 712 bytes .../object_events/pics/pokemon/parasect.png | Bin 711 -> 857 bytes .../object_events/pics/pokemon/pelipper.png | Bin 897 -> 1037 bytes .../object_events/pics/pokemon/persian.png | Bin 701 -> 806 bytes graphics/object_events/pics/pokemon/pichu.png | Bin 398 -> 520 bytes .../object_events/pics/pokemon/pidgeot.png | Bin 1081 -> 1199 bytes .../object_events/pics/pokemon/pidgeotto.png | Bin 833 -> 957 bytes .../object_events/pics/pokemon/pidgey.png | Bin 395 -> 507 bytes .../object_events/pics/pokemon/pikachu.png | Bin 498 -> 602 bytes .../object_events/pics/pokemon/piloswine.png | Bin 570 -> 709 bytes .../object_events/pics/pokemon/pinsir.png | Bin 723 -> 884 bytes .../object_events/pics/pokemon/plusle.png | Bin 457 -> 548 bytes .../object_events/pics/pokemon/politoed.png | Bin 726 -> 841 bytes .../object_events/pics/pokemon/ponyta.png | Bin 624 -> 744 bytes .../object_events/pics/pokemon/psyduck.png | Bin 486 -> 587 bytes .../object_events/pics/pokemon/quilava.png | Bin 1009 -> 1124 bytes .../object_events/pics/pokemon/raichu.png | Bin 781 -> 887 bytes .../object_events/pics/pokemon/raikou.png | Bin 930 -> 1071 bytes graphics/object_events/pics/pokemon/ralts.png | Bin 412 -> 519 bytes .../object_events/pics/pokemon/rapidash.png | Bin 844 -> 987 bytes .../object_events/pics/pokemon/raticate.png | Bin 558 -> 670 bytes .../object_events/pics/pokemon/rattata.png | Bin 522 -> 628 bytes .../object_events/pics/pokemon/regirock.png | Bin 1014 -> 1133 bytes .../object_events/pics/pokemon/registeel.png | Bin 794 -> 1019 bytes .../object_events/pics/pokemon/roselia.png | Bin 446 -> 603 bytes .../object_events/pics/pokemon/salamence.png | Bin 933 -> 1108 bytes .../object_events/pics/pokemon/scizor.png | Bin 780 -> 956 bytes .../object_events/pics/pokemon/scyther.png | Bin 768 -> 873 bytes .../object_events/pics/pokemon/seadra.png | Bin 718 -> 892 bytes .../object_events/pics/pokemon/seaking.png | Bin 970 -> 1087 bytes .../object_events/pics/pokemon/seedot.png | Bin 356 -> 479 bytes .../object_events/pics/pokemon/sentret.png | Bin 553 -> 659 bytes .../object_events/pics/pokemon/seviper.png | Bin 927 -> 1044 bytes .../object_events/pics/pokemon/shellder.png | Bin 472 -> 632 bytes .../object_events/pics/pokemon/slowbro.png | Bin 743 -> 895 bytes .../object_events/pics/pokemon/slowking.png | Bin 723 -> 844 bytes .../object_events/pics/pokemon/snorlax.png | Bin 826 -> 942 bytes .../object_events/pics/pokemon/teddiursa.png | Bin 528 -> 638 bytes .../object_events/pics/pokemon/tentacool.png | Bin 461 -> 582 bytes .../object_events/pics/pokemon/tentacruel.png | Bin 669 -> 781 bytes .../object_events/pics/pokemon/togepi.png | Bin 475 -> 585 bytes .../object_events/pics/pokemon/torchic.png | Bin 428 -> 535 bytes .../object_events/pics/pokemon/trapinch.png | Bin 419 -> 531 bytes .../object_events/pics/pokemon/typhlosion.png | Bin 1028 -> 1157 bytes .../object_events/pics/pokemon/tyranitar.png | Bin 840 -> 979 bytes .../object_events/pics/pokemon/tyrogue.png | Bin 428 -> 567 bytes .../object_events/pics/pokemon/umbreon.png | Bin 711 -> 837 bytes .../object_events/pics/pokemon/ursaring.png | Bin 730 -> 836 bytes .../object_events/pics/pokemon/vaporeon.png | Bin 824 -> 956 bytes .../object_events/pics/pokemon/venomoth.png | Bin 1030 -> 1128 bytes .../object_events/pics/pokemon/vibrava.png | Bin 824 -> 969 bytes .../object_events/pics/pokemon/victreebel.png | Bin 899 -> 1009 bytes .../object_events/pics/pokemon/vigoroth.png | Bin 747 -> 849 bytes .../object_events/pics/pokemon/voltorb.png | Bin 272 -> 381 bytes .../object_events/pics/pokemon/vulpix.png | Bin 591 -> 694 bytes .../object_events/pics/pokemon/wailmer.png | Bin 670 -> 793 bytes .../object_events/pics/pokemon/wailord.png | Bin 1133 -> 1259 bytes .../object_events/pics/pokemon/weedle.png | Bin 542 -> 649 bytes .../object_events/pics/pokemon/wigglytuff.png | Bin 548 -> 687 bytes .../object_events/pics/pokemon/wobbuffet.png | Bin 486 -> 600 bytes .../object_events/pics/pokemon/wurmple.png | Bin 587 -> 698 bytes graphics/object_events/pics/pokemon/zubat.png | Bin 574 -> 704 bytes graphics/pokemon/sentret/normal.pal | 10 +++++----- 173 files changed, 5 insertions(+), 5 deletions(-) diff --git a/graphics/object_events/pics/pokemon/aerodactyl.png b/graphics/object_events/pics/pokemon/aerodactyl.png index 35ceabbc959ad74a1ef682da2337521c219f6630..fabef1ad67dd8a44f1f208e01bf66e085f45c0b2 100644 GIT binary patch delta 1048 zcmV+z1n2v~2j~cpBv%J?Nliru

@VEi@Gs_>TYp02g#cSaefwW^{L9a%BKVOhiyl zM<8}(av(DOV1ZP1_K>z@;j|==^1(6{> ze*ghuOGiWihy@);000AwNklBnaeb=p`b(vfY(oAY z|EUq03zM{(693lNG!Pbc&6KnCG<|FefBz%_`l#7S?x&p1tNW@>Cac8y{MElnV0iPS z8ZTwVQjsE$0&~8{(1g^4?mx`4ROG=tR3R~Ia$XaEiWivWEOYLZ3-n zf6M|s52k$TlD}(r`ph54NlM3q;G5&R@VJE4x~tfpP)#p28hBF#CVtXw0pnFc^VxjDWfNvU-Z8t~IpP=doK(*#mcs7nd82aF zsXt}_m~eZ%9^Owp5qRU+%i-Xde<=cyv#n$^1ng9<`zrxq_kT*q#Ba03-Gs*#UM+5q zt+m#CIxcS09F05%lY9I~NAXkUMw?I%Rzd3)v+JsGS8B9e+#9f9V7bU!KqHr6nu1h@ zm7qPBBK+|H;D5jQ`DV(c%T}}7x1X)~yk3lZOe2>X%N76(e&=P=$YTKZe*iW7@}|nS zO3xGj`$Ffy&K*22Pv^>~#r zKo+?k8zVrRyZ~;81X$xEH~BgcfPIWb30+8BH$fGSQ!N;u)5ntnkzq`LVtsHXC(s2I zS$Ancl*gdb*|bNLv*(lae|waW=GFBLNGbGgw7bIOG= zN7lWdKw)ad!@G@Xn2QS7HV(Ni2{08)Rt|yG$n~UCad3cU{Iz&|*`h#U3K&or=OGGo zR{F?zBAanfpzKNSM=t(B!M788r^AGaFuxiM68hHalp0v&uAz19e@#g1Wjm#Nu9ciz z+1Nbg=ZCUD&2EX^6+X2#bgKNrc7PMtJ>rY zjqcg)Z4$6}Zbv_!H)DIY<>Y-a{Fk06me1iy>uTUyrwnU{^+|rLP>b9kbN{+VWpwi5 zKbRCCjDG^^?)iN6Hkyx2YfUbW&Rw4G1B98}hN&rdD%>EM$~2b3Q>-*i9>#^; zSh-YNr57|F_?&h3#e#Pc5xK z8yg2ig4kLvJ=XrMg&#=(KP=hB*mCI-H>uK{=J5SYgrDz0(}>sGe=fvC@+L*TG`>C| zG(rldD_*Q3pItMB%w#KhHF}O0h*)Kq=~TFi+^!pWB5cv2Y%xfj4W2&h{xJ599-B9Y zuVG$i9x7i;*n^+W36HREHwJ%qAu-vzdjsMP_hw!dcf9gcWY--N^6O(m>rRVp;*uV< ziHYvbjSf%IKpT(1e_WcM`SRbX+mJKxRGjO|ti;8jpH6;MgGP@TK)fmNmGXw`0_m`k z9(E16ftRtwIhHol$q!wkwtCFq)i8AMZr}|!1|v@s2)i{P+T;Yhwl_MOKRo}0*|UR8 z8?IY8NPhHv&jKH09>bAquxAR08`IVR@3hz5!3Ww+m0jHXVx+S4!84aF5luE8v( zMl(`_Ca#9Ho13A+y?ot{fL}P_~!!;iOPtN3R6%FuG$HO9DRV z$kyitVHlqWDuv*giS@=^3?t&x`e_-_Sz5$t4yC&QH^ z@x9p_#$tZ?V;MIhqXU!;2UdNpO0m#xDPXng^$4kuApkp><^Xs(b_tvp00xPJt_LHfUAqv2w~XbqPHHS7vx()i z&jvz>Xz|kFys?w}Zw;E}zE`4IIfvfb>11W|-;{*?$vPx=0B^u?r|%8Cx&4C40mAhW zpuBy%db?hX)q4i~emn&T??E2=CbhTvX|Uao|7YzT-(S-H1%rKqsA(?dNdN!<07*qo IM6N<$f^}B1>i_@% diff --git a/graphics/object_events/pics/pokemon/aipom.png b/graphics/object_events/pics/pokemon/aipom.png index 51aeeaa5bd69c76425aa6b5008761195dc9aecda..cbddc94820449b65594788600a9683eb2b78e85a 100644 GIT binary patch delta 791 zcmV+y1L*wg1?dKmBv%J?Nliru

@UJ0)WO2b}-_02g#cSaefwW^{L9a%BKVOhiyl zM<8}(av(DOV1ZP1_K>z@;j|==^1(6{> ze*ghuOGiZir3doG0007wNklBjE6bJCPXwhA1My&AxR2FZWkfhok7w?e`%<_ zna)|NzQ5aZAXTsfaP^8ySDa5&0Kh1+j>e{LI&ZrC)R z&dpQCRuObM?}@AzsFoXzjn7Y_v$P4=8oYje1zE3FvGS?jvX@auvuovw{go4_=lygO zC|^9s_dVL}%y~mSS9PEne9!TffUT7PA~>h%JZ#d4}g`22x~SHC4ZJi?mgbRj=FiX%5Aq(0RQQRrdTI>DSF>@a8FgCsEbkgP?zFH2$z4_)XiNX>axsn5<3Mx3+G00APp z5r2$J&BKraD;IGdVt2q#ZUcl~Cv8Ayu+(`(zTsJ;`=T9k-!aayjl^z(kp;?#-wSsL zn3G4IrAB}tDxfsY*?vRPGm1#>XcsUxlA1Q^rrwARWuh~De?8*_)tL9CY0h2(X>|SR z)pbT^6UGO!Mf7km;!gC2&GP0mMb(7qD0}I^dOUx+T|Qmi&nEmZM=8+tG^>r?uzCA@ zN4;=)Xq~KE@YwwLPe?eh!1!X9JTE)D*ZewNDPD1$oIN0 z(xx2MneKXArxh4$^!5elUzLaS8}$Z$wejDs?^A%y5p52UjwJv9002ovPDHLkV1f(0 BOn?9Y diff --git a/graphics/object_events/pics/pokemon/alakazam.png b/graphics/object_events/pics/pokemon/alakazam.png index a11f2af5dd680b08dfddebda48a812c8f8615bed..f9d12d9beacb0d4718bd8440c618c6734ef4a690 100644 GIT binary patch delta 799 zcmV+)1K|Am1@Q)uBv%J?Nliru

@V2p3<0SsDNU02g#cSaefwW^{L9a%BKVOhiyl zM<8}(av(DOV1ZP1_K>z@;j|==^1(6{> ze*ghuOGiZir3doG0007&NklBjE6bJAdZ`07VowBx=7MeAS2;M{~GTKx~ zB0L226*O4k1_gbc4u#MTCXf@MOYz`CUqQ7cA*jXcoz7>SR4bxmOWq*!(@FpLbiy`5 z&-GmYN0H9QpB9CK?mZok1w_ro_^} z6Sisx=o-^^uNc!_anC5M*$YbFveY?leC04+;Vd}r==)F3w0(dNU85VfPG5el(_$*U zP@YR0o?G)93a^rmJx4h7_CwYl&x3a4z7g@_dYz<|w`fMfQ)Ts=R9;R27U#Yipu8ji zzB+!y+$7=`-U$*TNJJzoX>AI$>~n|8qi5Mj(Q delta 681 zcmV;a0#^O;2Kfb$B$0kQe*%O_L_t(|ob8n{YvV8!$2Drxdc#47(yb6ET-PopWHa2M z;vwLJ_C$t&zk-I?XfXIQwcyf0(68c4EaM^YPKu&fcH^2G@8}y8etOdX|NJBrgg)al z{*Ms7pZ9D6^ZuS5PYL9Q#rSoMO{4>Z9#0A6uibc#&EosP2lRMKe*jB<9L}>TI6?$Q zc}f7wNN*WuJwtzz{o5!{3gjig((A~OasHC*Wi`r^0(mLrhb-k8tK(|XrG|C4-zheVNLM^2%V==~<8m4@V^YTiTUcp1g3B8u`nKt}9BazZ&Nu#cS zK4W=vMX7hh14fymf0t6;(0Fy8Fr7C0Bq)oE1-E40AijT^F*yg zagm$^hm02j73-H)xAt%`(#WwjM4Pa#gCGoBd#soimg|L6f28z@c@M>a(-;I@zfb|{ zP?G34vVt6Kf?$DgWDQcsr+WnQ>C2;cs(lvmR~f5V$tSooyaUJ9PzwqY1bY4Mu!rbX zhQ-m)Ozojzo@V4l5?Kf*Sw;02g#cSaefwW^{L9a%BKVOhiyl zM<8}(av(DOV1ZP1_K>z@;j|==^1(6{> ze*ghuOGiZir3doG00072NklfL8{E`9~jtkq?Cz{?qgS-H;~f+Vcty z-10{rw*^UID1I2X3lYW_`T%ToTny~Y`h$s$AOWft!ltMBbKo{m87ZvkBMT#fogjQe z(;s>Vwz>r#G_|Z@pP1$uptMK8_uiQI42+wGKLKmQ?^b6d&hyIwloLjvTTSQBfAs;l z>HW|Jc0>>E`i9ZAh4+Ne{LHr;cZ^fVn zii5$3SHaRA0eGeWSQX=xy`Yy|i)npAego%Ag!zDCf7 zy#?tKwogM)pJ+~7_8+UXCj)cbWxRb>)$gmaHR-ya^|SuhB~zNeTTtoL02-i-#`w98 z*X4~p7FeEjQAp z`=JZ$CKES<9!qs&e*kK7nis|ntb^#m_?EBl5Jp_L~@rNMcfxr_L#P_V@jSOm_ zI2eprPCCRh&Qr<}7%bjf0*WbXC-;p5FfN)Ag7r*G1CeDTf53;)B-#-}*0<1%K)_gk z#QgIaLD4`dL1obCF(pg&y~}#IQ$?(Si=LUr-%k!qcqDATPTWlj_pTgC@3M|;B)o=^ z0b7kvtpcV-_YQA~ljTS>;7fLU%76*hLHUK>H3t~`e0JTlG=SyL8*QvWU5*4ls>$aqp)*iB8VX;cFaJNnMl7cTYxM%aOBAO9zz!qd5a{4N zKQyHj6X5Wv-d^ej=o7m}x#j9!2?X+jW?_sQ9&~PKmV8I3p_6sWKfC?{HyCt@Qc9FQ P00000NkvXXu0mjf+Uh2H diff --git a/graphics/object_events/pics/pokemon/ariados.png b/graphics/object_events/pics/pokemon/ariados.png index 7c380816f5ff9dafe190881df0d15a791e46ac5c..7c9bea26af5af40f6c36eac7bfa81a8f4d45d539 100644 GIT binary patch delta 1050 zcmV+#1m*j<2kHorBv%J?Nliru

@V96Lkz;;aAw02g#cSaefwW^{L9a%BKVOhiyl zM<8}(av(DOV1ZP1_K>z@;j|==^1(6{> ze*ghuOGiZir3doG000AyNkl5jn7{_(l!-Ci$B=lDNA!eH#YSt8M`$C}- z?8*(;RDr^hL#a+dPaFIb2e2B82CLi^MB?)ni(m|`**__1y=?TUkA}!dGw^Mn!kdr+MP;_hES7P>&^@X1uU|6L+F*_u}d3ZM;AJCXR7C zzOtmC8f3iT%JHWpy1*FD{a*z(f8Arrv*TR9_Yv+SHcanG#WJgVfu-|3)#*%hKcgVo z@*fGoz?(A0uVzO=@nn1{IP!ik*2@I9pcCB@yIx`cQ7-5^Tu>cu2YJCgu6UA+Z?k)` zw&I=egQ*?`p5WydsVLZ*+`{eY3TQffzB|gfQ}F(bLJxnkiY;nWHp5T0e{-Hu?$EQn z!M7L>HobuFQPT@De&L9lFu8GtHGl|o_+nJ>RiuO9<`6N#_KjQELRkR^Nv00k6$Roo z=IC}mAt{^i3rTX81;S9%wAmQ^IPMng2T|$^MkI0W(ZfH^T!Qw3T~^Q^Dv~#C0!(mr z6!R^|ZC05beL!}`={OZ1f35fBVfSDQ_8m5wMTEBOVjPR@`?xe;*&R0(^r!xe(`dB&_q9@8_8G^n@XW^V^$>Y1@-$`_ljxWO(KFAw6Q6f7L^q}jE9 z=o*S#F>5nMQgQMU_}Gp7@ng(R3;Uy}vH)8#T3XeY<~KiQ~EqyPW_ delta 873 zcmV-v1D5>i2)GB3B$0kQe*;5FL_t(|ob8oCYuhjs$9>5mU=W2~M?S1}z!nL!^Zc2b@qBHmqR=z3(e%H~|+Kv?s}SVz=IU+YWsP!SCtm zz4wqJ9XIeGe};rSw6q4+dnV@ReQbPnd3dNY zR$1SVho;z5gJp91Gs_e^k=%uL9E8C5Hk-+eH}kdRIQUlfe+vmuxIqr(uGcs^C=y2A zf!yE`DGKh3j5q1rgk$NL!HqbW`YaA48`p^}s4sUh4h;^w^13^I$diom0e%H5n9E>A zl#U9{n1~PDfQv2RK`i#D9mF|bd-5hMckVz=Mxf(2<1IG1o?Re}M%bXj-r;KnPGakE2!CFFA@y60HOyntGI7{oMA>C z(>qLCEExLv+X2i1JH)nnu|>x%=t-34@}rb26$z)^ci;CdO?3=o&PZka^^=R(Ve$9@ z!)bv(Uy7~@K*y+q&CcfL7mU2Z;q3J+E$>*2ii>FBZhLKS!|JD}JYpKXh`(0~hBv%J?Nliru

@W4Gu%n6B+;j02g#cSaefwW^{L9a%BKVOhiyl zM<8}(av(DOV1ZP1_K>z@;j|==^1(6{> ze*ghuOGiZir3doG0004uNklBOzoFsf>o*kEu6;Yt1TT z(eb8{%4|U>HTaWRW#y4^-&Z;b!b!kgQ1+o0jt9EhfC56Md0%DJ?1Ync3zU9m4Fk1L zUuA*&{05@Y>uk`Qa}8uSok7o08(>$&?mizW9k09ooO_Zpzw}4t6vM7^d~S6jf2FrI zoU3vRWXEpduAE}nRgd?kuQvLuRo9T>hyB)0F(B8OwS2YV%YEVxbmlmTQw_BKW^+#> zTf3uM;ZMRW{Cg~H2;&AeO2P&}8&;w#jdIqb(2&{Wj7qMWpGMG;3Mz|4{#!sb<<@sB`YAf|uR)vXWj;hj#G@ZCPIShB@x*U)eEX zz5tqjZRgqEXwdd5n`aqry(E{3W>BE6PGi0|w&cc3v7B|7)bZtWGb&Iw33H7zaN|mN z-mJr#D3eP1Nf;GPa~`%To=wNwmS; z6EX*kJItAY7ZAn6(nd|)@C`K7_6^gC$jpY8HrOIviX9&}jb1s}k;~Hn diff --git a/graphics/object_events/pics/pokemon/beautifly.png b/graphics/object_events/pics/pokemon/beautifly.png index 4f584c03f1eacd281afc3d1f396b006f822f05c0..4f2456e8509a9af7155d3a1066fc66660b717eb5 100644 GIT binary patch delta 897 zcmV-{1AhFQ2GR$RBv%J?Nliru

@XBQp_yJP-f?02g#cSaefwW^{L9a%BKVOhiyl zM<8}(av(DOV1ZP1_K>z@;j|==^1(6{> ze*ghuOGiZir3doG0008^NklOQ2K1Z;?OuJ-zRHC+i7d6Pwt? z{}Ral8ym=~0j%0UYDMr{^(Nu&3xnTye?02dE2yjfhg7a?aaOvcb^BGFmGGhg#%(nK z6MP8NOpT*qDhg)X8M8Xjn{@UA>Xk`54M6=pY)!Mp&}MQ!xK2ewhc-0Z(MYs34x~PK zT?eqOdUs4xossc?vcH zECKN`_6O3yeD6dtssJy?8P<9aa~(_F!q^3;e}q4RX2;Xm)a>LK8%$5|sWJeH2xon$EVt_;($Pa^s1F^V zo_pD35Zy?+)g0ELXY%%9-ktjWWyVU8muOm$K!pX}SE=Bl>U8 z+36k-Gq~FOazI;yWy4pc-s1+3#W!ESnl!k5ES3vtVCKuOE}@y~kaL)IPY8Za>*B|i zHgK;v(>7y1r?a*pH($)@e_|%}+C-Gn<(>Ku2-e6?U_H-sI)75Qx@>rnKIx1!V>j7a zr<|pp!n8n_w{9V2!DZ3r2V@p!#TivY7XfW}ovH=HeqOJiSMBTs&T>kpsrmfQoa^z- zIlJym@Md3at@xc11jK delta 715 zcmV;+0yO>72b%_vB$0kQe*&gSL_t(|ob8ppYTQ5&$4C8wG+|XZEV|mpFR`%AfrvTC zb$Ke|Mv#Zmg047N&@&vkHWFMDI8bK4g}EdKSAiQ9(r^E(`I0mOxY^Ba_P-cbf8zqn z1)y9Cj4Pf$s{b>esaiE}mp2i$>Se|@p5d!I0EC#F2` zLpoi+GBL9%0G6}NLG@c*kz6;Y-WRm1z;4IAFKK9k&adkLRk>7y>XS!eu5y6k#H(@y zj<3B>xZVMAu}7b>Zm=y!CL6r26O6!=6fpvEAu%B^DdjxRQntRJ=2TbnJk|K-Ju=!n z&lkk3_oN@94l_Lxe=h5N8ypfBDAPOD=uy1rlELGFS1W?nFbP8p440=fbyx!pt zNX#*z&53J796~-!aphR?kb_n>0GCOZHX)4qOq+GPYfb_Z4~K*daG1wfMdRH z5CzbDK$8QYe`TF}CU7&NsIqQ324EVwP)5fJ9ZS9L5X{GA{H0R>p&gs-Q452)Afb^M zgT62{#^iS(aPBx2b+ILjI39~hyB73mUJ9e>rZh_@<2dL&97lSm#294H39TU;pT;K> zhc1G#eCgvtQJpWB^OR>NI1W>~@7a07M0!My_4!N-<})? xeJ+7Er}R9te)T{2q?L0jY|Za~LO1)9{RXc{T_fsVq3Qqt002ovPDHLkV1o0JQiA{h diff --git a/graphics/object_events/pics/pokemon/blastoise.png b/graphics/object_events/pics/pokemon/blastoise.png index b7b6ff7eccd2789ffa617bb6bf545ea3050cf2d3..e9dcb580c52a131c0176dfa17619ad5cbd25745f 100644 GIT binary patch delta 947 zcmV;k15EtR280NZBv%J?Nliru

@X8x*7JHGlvB02g#cSaefwW^{L9a%BKVOhiyl zM<8}(av(DOV1ZP1_K>z@;j|==^1(6{> ze*ghuOGiZir3doG0009hNklvC{>R***-R=8If3&RjUA8c`?(%(Qogvh)Mw@gIIw7MiCem&h z=?EF9J<8Gnf;x0YSvVSGbQ3SN*KN#|gu(x$FXS zA=NNIZ)$veLcZVw#4RGDpV3yAf60s^q?xW<(T2PH!B1Kml$Ub3d~wZVwz>U=7;4K^ zUkub#(_PP2U9)RKG541|!ThI8al-1A#g@%UDHVN7O;I>$UjLFOcai4Z8SJWfse_3wq-$R95 z*9|?d^qs&i3JneSG^ni(zXb(m9yohmqz%j2Ip$ODBR@b`*`p2B;K^Uv8%Avx{?LZ+ zP2ZBs><2?X>rf-fReU|aEAl|rHvy*|A<(SV z2tMK0dmRsByATF2+d@#6>xO>p;owK^@(nyzW|zB{aR}*#4dEjpQBq3|0xbF)Y}um> znb$5pCM4n-T?j}&MH)gN{3TB0I0QxmV4%qHo2#d%VJ=p*N002ovPDHLkV1i$tyT||l delta 766 zcmVlPF2M6?uZis%U$2)eEx+)wn~+FLzK@se&4fwIXli< zz16=efY-gNT!86o2B>#zdRGA>gu-?!AOzHQyN$FLCX^6HrrYe1e@%&Pb{Rl{mv)8A z^zZ4^o3E!Hz;6kr{S;tJ|s`u*7%qbHqg z9<+GZ1h63`bn*M^e;&614STXbix^#X7#GIWI5S@QRO)5PnVmr0xaOFjjK0Wj{)`*O z5ou1~(^lgImWO+L`$1+WP`69is*}K(IuTBr^~jTMcw-lS)82Y`+Up$+&ZRN8&Kv5# z^`(r+I%>6k>fN#A;|D_9&Et3&hJ!ekt;U9nWC9)aC#skgf7T7(sU%T98Qo0TWz@JD z5XZWqIbJ${sEg#AWFKJ|l~$xQHvDj*)YW%6GYvZ2*apH%cN@kLGp5#dLj?6aVe}|m ziNcbU#)h{E*5%yZ0^isM(uaX=IPBUhv}SpLbAPKFM#aj%zs;)V{z5k#@!Xy?&I7Sw zI5=Mq!*0I2e}FZ$0gGftV6KXQ#pr-m>}8*>lH}q#zvcK)?zDgO?F1geFzbh5v97J9 zQv?9z5JXDY003FqC7)BQU*$5b+nbw)zGyd&q>~_{fx`Z<<7-w1(7W;Y zhS@vd!IA!FpV~dXX&gyLiqJsXSA>^LWYqvFO=Zy#bOU*ss`8~M=MsSXWq`5WYp@@Y1vNQ@q*wp|02g#cSaefwW^{L9a%BKVOhiyl zM<8}(av(DOV1ZP1_K>z@;j|==^1(6{> ze*ghuOGiZir3doG0005{Nkl0RA}`&nMBve1 zCh&5LO4GsWqO|FtXz^#0L*VR1Q5}Ok^?D~c)gRw$p`8ML5{BP9zxQ;9j0ri$F^=(i zBG3Np{|zmQGu&EE@;noth@ZH$&NIX!e{{Z!+XK30kk27zkg2T!{1h%BR9mJPUF1!} zo<%`e-)b{}kJY`O*mspmVA0x8*BVVI0EIMEn+eIFF9Uj(k3$X5VtdHyqL9EIB5eh-E`r zfH|py$i;crJDn-+2?IiC_2owC91BZ{f-qO#!pM zh24X>+TC)s2iBXap=GH}mhaEXe;aS=U>qSE?eGEGPd4F3c>$F2fg75-EAsu>W{b049 dIY_+P_yrPt*PymANsj;k002ovPDHLkV1ntmCOZHC delta 511 zcmVTintcd|vX~L?|d(RFejrsXEC{FSetXLT@VM*#y3)y!Rv#2xFJH#3epY zC~@BZ8(x|T+MZ%c3G+$#SzG&B5H{iKebye(wM4bROrmhxLwq%^e=u>|rX*jgW5b?J zLDIZ#OT-`bdzjdFoyu|9I#Aah&p9H;B5_+9+2C&jdbV5QIr7$ldd`~yd~jR7ITudX z1-v!y#4@#Czg-BoJz3Nn&XwD?VbL4Vb;X+#my{Fhg!Hf&$qYGXgqbgKWS(czRed9x z@-VLwiJJ{&rWaV5f9Jj=JZ!G)7bEQ1^C;wkun#lj=31k%+iabhj<;zl2-}9XfN~5I z^NYam5KNu64eMwP=-88XH?09Z-&|!2bE51qoI1^-rr+IxCtiIsyBW`rvcJRq3fB93 z?e-w}S~m;=w@t%Qbr;Tn@*vdP6|D5jgm464_6rcZ&DK9*br);+H?VKE4d74u7(huo zf{3>FJG}Y=+aM;){B3YuOhBJ;7@jd3+(cuTm!#QzXA1Q6!)Al|?l|sX(N3tRc(Xjx zE1u%cf8KlRY*TdTNHASeXu|KTpRD#XCy7rRe*q6^+X}wskG=o^002ovPDHLkV1nB! B{z(7; diff --git a/graphics/object_events/pics/pokemon/camerupt.png b/graphics/object_events/pics/pokemon/camerupt.png index 498075fe1708b7600fc462f1e74072ec2eadb067..b190664b68c232cb339fde5bcc0d76afcc0ac417 100644 GIT binary patch delta 958 zcmV;v13~=y29F4kBv%J?Nliru

@XI3PUtwp0KB02g#cSaefwW^{L9a%BKVOhiyl zM<8}(av(DOV1ZP1_K>z@;j|==^1(6{> ze*ghuOGiZir3doG0009sNklyKX02r7{&?PZE>eKSzNFOhGsBkxUu+<#nQp{ zDMFR{C7OJIjP``VC^;pLlum88{u?6fbmGg&07x)7zo&vGF5$a zM*8t^&wFskVTSo%1Xl39W$DZLz5)_lf6A)^2wBcpTgoeSl-ts?84wx>NGAVbK9)zUI~waCOexzsZmh_C`hn8_;z`cn!1Jj-SR32m9|or*837_-}71gvorE`y2m ztY;5SFx1nTNwlX$MmlBbY`KX76k<^?jX*9G<)N5S0fqh298JLn{a6-nJp7k zEUHG?A2Jtk5MUxYnr>CkV8N8sD`zsc2SzH>6WCRQ6w;YB5gpBS)nHN?l$uB&&cty> zUkfQrpDFegJmUnjPo^V#aB(XKe|H$LZ)04?nnRqcu@{(RcTOQq)1+Wllg!CI;#~9$ z*)M1W92wv7wBLJl*;P}R1`tcZSRuyxJm5jVegQ)vXnL($VSzZifd(#ZzpWp?S5ue< z%8G=sBritjvtQ6arLNVrilHB4@Dw+&<~`CTlJ7Frf%;pLr1Grh2PE03e<*cD#wc9I z0ek+Dtu%1+U~gw{XV(o(GF3;N@gLp^v&VkGTEM|1Bh+-8%%m_F_9awA*3NEiw}z^P zIM2JV#b1NL;Nx|;7bO@JX%E_jGzOms<(Z1QH7`&sB-!g>s<`XFIH5Ds@}9GnJV9UK^7gnKw`9B ztp_8fz97bZ$Sr(w%Louc_vbTfnx?_ggI{3d^pxS^frYjGcE}s;Tok|kI%Hb2b4VU` z4m$ype9I{0^DX}p_xlzLqy-rg{X|kf66h9WVt;JFW_x{YbCJ+_xz8{;_pneR@Q#-I guA96fHRj*bA90}(KZk>n`~Uy|07*qoM6N<$g893-RR910 delta 811 zcmV+`1JwMF2>J$)B$0kQe**{6z-lgNec85o@MHq{Pr$t1+3mvv%KFbDDnrw&Z&Y1)?%^zqOB z{(epz2gCSZ1a|PNWn0_%wE}`|<=qAlZfC!-m3L~N99!iKpfm)qf0X}12f@%PXW(PO z?M5l@7VO)HS5_$l&f-rg?-Ur$1^anh&X7TQl=7-cT~-R4Cm&tELHeYGVf{lT7#vM?^BW9$dIn)QdLqYj`J-hy0F3U)!#rDgMK)X?3D0ggC2TkGEC{}1 z-_o-|Yol4vle4n)e{3?rs4G}L1C;?BS9(1>f+cLwH;vx3_mnN|BAXuMlrrQcC6km> z1I%SLm|G?6V!>{relHjxEz5?9A5Q!+bo6XuE~{B^WM~=G#@vNbKZ>SZN5h6u4HG3L z71=zSPlLhZb2h`2lW-WGhocBaH@%f%k>h*Hq}xa|(is$(e|QxbJywvHBt$7^_4)q6 zd{}vVg_(w>0j$=;untjbSYRX|pD&o5B~ZC4FDLSACwJct?wN+;3hN@A)V;jIgwq7P zhO4+rv$(?G{iGR={8&xyy=199_FD+yE#D;uMMhkl3(x1-GER9F-w*2J%Vy>J;`*W+ zcPVmgz?SsOf4#fRpM!+co6LDLKJo+`3}(YRr`*2io_0?;cT`>vG3l?tVDNR3?L`F! zRF05`t7GtE;4K-)r)h!$uSQ@N1i|gbgH&Yh36JX;Oe1%>fQcb-RHmy0a(jOW9+U(t zPB(nOx#yp&31VKy52MeYl7hQ&7lqdg5nu{uk9gBCe`cEPJ(yA(^UXN7Wm^(|o(51} zGRFA&wij8-ZM9)OU}XqVtL3B>%ec$cI3sx+J{vA$EdC~JVvG@yrzF8qyKNBF&@tPc zjE_2+cqfm`oM;acw3qHy26S7j*ckH^ts53S9=r$4WHV-4%c(f|Me002ovPDHLkV1n!Yfr$VB diff --git a/graphics/object_events/pics/pokemon/castform.png b/graphics/object_events/pics/pokemon/castform.png index c87314166e428638eb154da9a01dfb311256a533..5c7574a78cebb440c33845468d15c3f1c2eb3445 100644 GIT binary patch delta 258 zcmV+d0sa2Z7S;lgBa{3IJ%8azL_t(|obAuO3c@fLh2hU3V+IwscKO6DE{1M;52dAJ zF4lrugs8Zs_hQB-;t~HA$-6xqk~T!STrQXUU84T-E==sE{_alADx&22qg|wXdf-*3 z7v6nfVB=!1-79;S>>Zbpd+DF}gYdi*Vloxw=4;)Wv)UEW$5ek>^`z zB4dv=a#t*{?E#uj<9GH}8xMq#G8qLvbN~PV07*qo IM6N<$f^A`c=>Px# delta 2829 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 diff --git a/graphics/object_events/pics/pokemon/caterpie.png b/graphics/object_events/pics/pokemon/caterpie.png index 927c53d250316b8a59a130597bae3384c65b100f..581a2b5fa5c11bc329f79d7e53a0ba3d27dd1d3b 100644 GIT binary patch delta 581 zcmV-L0=oUO1epbpBv%J?Nliru

@X2QrtC?H~XE02g#cSaefwW^{L9a%BKVOhiyl zM<8}(av(DOV1ZP1_K>z@;j|==^1(6{> ze*ghuOGiZir3doG0005KNklfOdog@=dS6y}0^>3>Y zi1z^VgUEu)ZngaDz}ukT!+Zyk!KSc3f69Ik+JVmC@@j=f!VpSXK;|4ezJw0f z0z1%Qu9q4U3*(At>KZ~a<8jROV;3bRKho1YSQm=OaCBz5YlJvx4En>d3A86H zIBOR6x~JH)LXo}(u9|`(2*z;+(+&&D$##Pa2i>X|5LU()lYkq1Dx$8+Ap8t`1lx;A zlMvPkCeh0BMq#Whf3x6I(p#$v+IMac!fl`?oEIvc=az+1%3gp6MKX9+Wo`qn!7`@- zE-e40*@gy6rRF5Sg8KH)mH9?KH{OCp4xW8vE-aQ>-_t-=RrCg;oH;?QH<)|djrX8e z+5i`N53>K)dE%M#7l{k`n=(v~lcZeIpy5mM*7~wf-Z6-dR_suQM|r$*c)?hvNWKDC zPYo~W!o!_=fHM@X5GZePkjwx802g#cSaefwW^{L9a%BKVOhiyl zM<8}(av(DOV1ZP1_K>z@;j|==^1(6{> ze*ghuOGiZir3doG0004`Nkl8ZB6bJA(Ik-Hsl`Mq|2%Q8Egm&>$=xT^K zbn-KF3!Op=9lDsb6p~x|k@6L+62U;ZUhHspmb-K<__p8i{Chsd0~l+pvBvsqA-5ZN zWjA1DH70h$v9KGkuo{z8k=uKt1?H93e{i;?VWZoHRtxNUmr4WXTHwC-i!l&ax;tpH ztSXHbfngXafkWe}Uog5uvRKSzpj!&xD-+nG=XsS3WTkM&WZ-j6JRgj9p9mqhO5mID zog}bEEJQNU?JY0BwJ?!0!B^eD12R)T%%R;{^!v&VdP^?e^}wN_j!A4YlEDsje>;H} z*bI0O{4yKx+&`;K{<)vofRmc|6SKjgVrF!1G6p^;Gx^mF4LDtsn{8z@Kt?GIjYj%; z-O$KrfRhOPuoxJljG5h>L||n$U_&CCVSB|MrmB~0sTlVM$~Ob68`>4TeY6+~&UkAv z=X^KSy;a?YG%GB2=#i${OV%xhN|HtDj?Y$~h#uoqnc2|b@H|fV+-UJLP4yE*H}ae( u$`LZOD6s%Gqt0J0ptbs9!-WIwKi4;^p#`vClQtm$0000xt!XyklQ|S{w*X~2DsFvE_JED z7E;_mHf}&0HICwjZ5}sZ9yN}}zG?@r*v@RwaCW4@hDO*0fv4JQf3E>&LEygjN(@x< z&?nernO%$Kz+SKK1vahbJTL&!C)CsF#0BDtedow-8^#hv*^~(H|e+_u!K75 zkQrloqR|}Eqv?wV_~5{oh=Iru$=-Z$U@05aQ4eB<;))g>-%DD0R?n}dvJLwa+UK-e zMGW^9Rqqj3MEg$Y!uPIcvOMCJ*_v^%$)R~svO#dev;AXkLf(eA#)^g(&4weIh~~@m z*8eb@#%e|*Zw;H~;sJ;mL;i3MyQqI{_~nQ8pX&=tz4grQ|IbMP0000@Y0SlaoeD?qV02g#cSaefwW^{L9a%BKVOhiyl zM<8}(av(DOV1ZP1_K>z@;j|==^1(6{> ze*ghuOGiZir3doG0004(NklXk|Dd;Qd@Q8%8r#Af8NIpWLYri?7o!@U8E}pRDQ;gHuz8Tx|`1@ z53p`%5^0%NTbq2q>2}@fk73=A=g|m~cf^nM=)zOGZuNyzzi@zc$A%Npz8r9FW%eVD zWVK*0r)$y*R`lLY6lfNle^Q9wdBZ7^Rk(L1jL+2W$m{>dCVYV=ozzI7}#5-P|&DoxyqCG2Q+6^&54qXhiQ31*`A3 z h==zM5US0Pe@&a1+^HV74tP}tM002ovPDHLkV1gOa^{xN_ delta 432 zcmV;h0Z;z(1cC&RB$0kQe*uk2L_t(|obA-Hirg>|2H@#b`c>Ttn*)_sq`1;dSWxNQ z5^$eOZ=4&@tGElg2quy?IcpVq$>tge#4MXfAAmIeK*e+Pq1%j z5^0-PTbq2q>2}}hw_)Fq=g|z3d*WAmb>UmPZ}pi|zc9kSW5b2$R1UbdGN+klvRW{h z%ROlYEBfjd3bYE&mlWc6J#dO-6&{>h-20DS8=ANwm$r0ZI&xe-P1Di}24ycdZIF!F zi{u}k=5ZRa6%1-1f6qS5gJeYFu%KY|^2F422G@PZbPw}~N9tP9h~6U#R-c~8A#U?4 z$C#mi`J#&k*~L?XHh#(h$?x@kG(I(C!RfjDeja(7sBE$>>v8#2Jz8(&*bZ%H1?NNB zoVUL=^piGQ|6ldu?e$jG<1IsPw*`!rOXplQY~ha_)m6M;CNBGNf39BOH%8YxQhImY aKgdsxy88jnXX!uy0000@Y4jy*Qgwp^302g#cSaefwW^{L9a%BKVOhiyl zM<8}(av(DOV1ZP1_K>z@;j|==^1(6{> ze*ghuOGiZir3doG000A^NklGO;$0l@VrIN}y+18fZF+3vz3%$W$mdE@76vW@a=4w>=;j0BKsf1J>a z5y3V!)YZTkE&CotT7bGS-H=0?qGwFgO$aDo&jq&iOn}>T5NTgGJvX|-Ch4vOR^o;4Hk3oqPiEPGICQi@<0l=S9X>g0a7`Q1I#iUEYq*#6e@Y@d4Zc=BL8_$RJ zstchRk=qN|6xAqr&4VE3aQIBff6CY@Su6+6Q2;%60`ex^6n_JJ#SZC}`=_%kaMlS3 zuk-zP7bgU%^}{^bj$CHzlqFqRX4%(H`m_DRSH_v=Rj3Mk@tiYz{q%yC z^Ov`Y7NSomqV_wPt*_YmljXp7R?wYAv@S|cclr;3#2;V z+Ju6@Zj+0*W{DSg&eqw(e{dFC_2Dlw44-o$oS-P(Cubq0;)@|6*HzbYmBnmvyBzr} zvzrwv?Y*vknBFxLrj=A?2c`X#nsx%Kdf6ou1n*iU)heQk?J_V|(JBhJ302Q-ZXTIY z;5i&D+MoubkkGJZ_E?qH2W$|u-Sv&hz+f4};V<#o_4Om%MJL$qe+j7J=-M^IovRbS zVqHLVcM}eeK+nVNQpq2$ufLb0z_SiaWC_ZI7pBm(v_i9^RS>*?3T_5NK+9Z>w@DPs zS2s65jR7mq<9%=J7Grn>seMmMkWLsDk-QKt;PA+i7a*svYK;2%^9u7*Yy;ZSgWt|z zDs&CeXgT>IfJT*SN-}^}he}~yAjs^BO(}-h% zF-r|#)nU$Y9MC?q46KG|5L*n4ImX)(K=lv&!4!~2F$$144IvfCLF>TQc5!A6&@zL- z9+N!_YA_g>sxXN@=kA3z_-px@4s3T^$2VwcmRLv_(No`7JtI5nuINxS>mS*bB?iW_ zJnIeK9}@7+0HWynf2QNsG}sp5iq;`y8#=QpF))@V!G_4;O9AbW1bAQ`1SsM4_O77bjcJ#)ogHJ=ZG;=2bR#RMeM&kun{uw4fc?g~uRC)7Cgdpc zBIa0c@78Ez-g7Y9bwPz1n%Dwvs(D?k2bR1lRpHx`^LNhRNBR?7oCaPD1;yDX>;3r)mM);?em0#fDAt>hIIQn=~R}lG%R?gCU-{zPdODUcG{C^R_UxsSTwZp z6-^)7{zgQBYnuvur^%uhOib2C1G5E-(?saY<}f1g?4xUocwhK3X7B8EiUN|GL^ zUcmbCjm3yDCPm`q`S}I*^LL+JO?2-s37~R)k_cd!KJk%``yw^4JU?H;AQ0F@&V7R7 z2_ub=j+JQQ8&B`SdC(h-98;LV&2sr+FxUi6=DqVe9)g0-6JjSAlbEl(LER>to~jv| z<+8#0T@ZVN*z1!Asi0eQ02)X>1kh@!lLthDc=I#}tUe%`)}sQ2#GLX58nk&T}b&*J~QeghJ;9iRNnly(3B002ovPDHLkV1lLZsVM*e diff --git a/graphics/object_events/pics/pokemon/charmander.png b/graphics/object_events/pics/pokemon/charmander.png index 2ee4b9eb3401f8d2efa5a5ba6cc8934117fd8a71..8cc5d1a2581ca2b50995332a64a1abeb684ff9b1 100644 GIT binary patch delta 525 zcmV+o0`mR(1K|XaBv%J?Nliru

@Y5Flghrl$Y^02g#cSaefwW^{L9a%BKVOhiyl zM<8}(av(DOV1ZP1_K>z@;j|==^1(6{> ze*ghuOGiZir3doG0004nNkl(beawcZ_@MWz(1}pRcR9LDOy!3 P00000NkvXXu0mjfMfT$U delta 424 zcmV;Z0ayOv1o{JzB$0kQe*uL_L_t(|obA%FPQx$|24H9EfQNXk`$Vw75F#N~Hij&b zrHYry6zLp>NQlAikSraNJOR86PD`6R7q>`ENVy@>XXk#$b{Ly$uDRx#>ri|c⁣* z9Y7N{AIRj1F9tAf05)NFP`PL384X+tU>soI^P@*KDDT^g?6(1N*swLXj>yoV%H#&JK3DE=?c0)S6Jk&ae3%Owibw4|DN3A2H%nGYcg;8ntY($ zv^bAjOYHVEv?QP&T7h2>t;B)cwksNle+gIQh7TEd!P99v9wfX;&!+?bxV`|D*b^|q ST{EWu00004*r diff --git a/graphics/object_events/pics/pokemon/charmeleon.png b/graphics/object_events/pics/pokemon/charmeleon.png index fbf75461d7de6dc46a692c136de58c0af4506b69..99d38dbaf62aafb65bb8cf3b93ae62f31642164e 100644 GIT binary patch delta 599 zcmV-d0;v7S1giy*Bv%J?Nliru

@YBM&@Q{>}gZ02g#cSaefwW^{L9a%BKVOhiyl zM<8}(av(DOV1ZP1_K>z@;j|==^1(6{> ze*ghuOGiZir3doG0005cNklyr!uvXMou*LV92k@WRrQ!w=R14voOeID{U6?PR^3X#b=prVI#-VR*U#OO zO*-;l6rivGIYL)62fYE413GH8E0Or2;r9g!P&${)Vk=|;_va?-tt315`ve_8e}{LN zY_Une*MtK~psg`62XxfvZ4N*?_t3uZ74p`YF_nac>0_s=St&c*HHDcN{F-5V;<&v_ zH4(Pv^j-xMP~(?oK@}%ZSHw@tRFq(=o-b^)XH(T|R!hJEXHU!*gObKfH8U|^FYY3$ zK)7DqVncsP+q56B`SPrjqa}tBb$11%fL+77U(p19MZTB+UglMth~*j|@v*{-p1`<%1V90avTzvo60@gJ`Zv*76dcq{+_002ovPDHLkV1na843hu= delta 502 zcmV|XVo_YCFyXd36^o;jLSoOzkz51<2UcUAR-TbYv&-0NoW^N<-*89# z)xlS7A06Jc&28I9_md}qG!zK&d_DbzOy25Z4qJ*3t7&OSQl!;fzNhxeRSw-Rub_LGXv zt)qVUxm&VHM}9#83JWj;bTxBO8<07mqqe&ei8BSi&QXBUxnvsKA`AHaLuS2~WaoaL zpabae4wE%D3HX+9e?$qCmNMpmjvBqq0chtQ+84e=-by*7lCUs+?o>5xOozLsFcYI+ zGi*;Bw>POKLf4$$s~`hv{L(Dg;so}R_;Hzv5_Hw`A072(s+!Gq2{_>FiTPr*M#`yX zCg!WfO+*z4SBqP0=r3rS_9Hf5ZaOn)Vi<5&KnmD3tojvAY~WYqd-?ZuUd4&ntnm@= z`)fts)Vu2^bjc!h#Z20CkO3#)Ug8R-CJ1yQZv89nqWi7K8)7k#fI@YBnkt4oQ41Z02g#cSaefwW^{L9a%BKVOhiyl zM<8}(av(DOV1ZP1_K>z@;j|==^1(6{> ze*ghuOGiZir3doG0004ANkl`6u{-o;wuZsXkSxLo4Mb-r2c363YO6^wCEje<@V4j9FOvilUGW zs;s)0b+sWCxqZE=77b7yXoJwYI&5eIe`*|O+t!kOrmEw9uUaxPHIEiqXn4lZf@h&)(>nu=H-tIpsmeA&oB`-!0mPx{3Gvqcq*>wprP7XyAIaXqM6XE zqnTXp`*n`}gNEuYN56*0NIN$O3k)2&n!JGo*{^WfoswYnl$;WN8@VXHF-!U1noQIY c{_FSvjB>Duv(C$t00000NkvXX1g=70g3tTaYybcN delta 383 zcmV-_0f7Fx1kwYLB$0kQe*s-dL_t(|obA-Hio!q;0MKcctG2Ke{F@cwK(L4k0ZU_* zE=CCWF$adgLhx52m@9<+5v!ZM;@lZ-heNKogG}X{-OP;1vH(L2F~ksmDb#Wiv#|6P z%cX2ktE`JzXIoN{+t#hb?VDjpOXfT(Zw(dED<=e@RB>hE>VNW5$A| z>*CgKN8b@MtaB$CGrjE1Ua~r}Q*h+pNUd)R(d}NcI@WZV86d4~E!w7%bxOB$gSHsm z^S&X&k-2}R!CdfX!nRNQ#q;#2$c+!YSvzh8%MG+0V?k5L3~)Wap6+wOm9fsy0Da;W5(Ajlu#WN3JGsAVKykTy~d9uzHzXCj2&XQG8>T^1n5i ds3ZK>@c}yZ{s@ug{4@Xn002ovPDHLkV1mXVy*vN_ diff --git a/graphics/object_events/pics/pokemon/chinchou.png b/graphics/object_events/pics/pokemon/chinchou.png index 703014eda63b66c0c262715a9e427d740244f0db..c6550ccdd3c196d6561538dd5ca4e6411b47a05a 100644 GIT binary patch delta 692 zcmV;l0!#g(1&0QZBv%J?Nliru

@YF9mQmSlj>r02g#cSaefwW^{L9a%BKVOhiyl zM<8}(av(DOV1ZP1_K>z@;j|==^1(6{> ze*ghuOGiZir3doG0006jNklj2OWc9)oL@C(%{5e$mmoy+L$m=MBhlUdEC>-`eW2LqA>3!Pw5!18E&Vf0Fbuxx=d(gH+|FxHmW0sKCI}X5hq3c)O31SbyH^!q$e~4{@SF^Rl*m9mv=rm`#Wpu=_@dQwi;@`f-j1K!Q zzrFc*kRaQ*j4eO$3BBe*x4c_=noHvez@tiFKc!>NuctjX0Wx)X$yVt4WIR4SKQtKt#^$>pk zlnyg1i2VG*;i!bF5}tc{R0n5E6~$E?HFqK*8JzVGRVVSmQl>8{DC~dTumiZTS71i)kMcWkAZlCyA`fZ4-;GnC#Y)C zY>SHK0L4)1tKOd*))V!7mOp?mc)N-u5aKxm!H9}l@R;vbKt}XEM4z-^^ehMRlNMO{ z3)9i!`&q^?JzR+DhE01c^)VcDC^tTON-me{4GDre$=*vh@T|km29G z#f1|j2V069$y~tp#6(|dtJ0Dg}BgMf9#}HCQ0(6?ba)H z>mmB`dDzdKMl^e7L`mNHJtB(CqoQZabzAIer5fX{=r&wmdI@{bHh f$0r0F{*m|%Ey)9gsIwCL00000NkvXXu0mjfnT#U$ diff --git a/graphics/object_events/pics/pokemon/clamperl.png b/graphics/object_events/pics/pokemon/clamperl.png index 2c9d0d873355c4cf50d8e579eef1598c5cf19bfa..2a4f337299a634d0448186c8f2be802cae0b10ad 100644 GIT binary patch delta 520 zcmV+j0{8vw1Kb3VBv%J?Nliru

@YF%-_nNAUmv02g#cSaefwW^{L9a%BKVOhiyl zM<8}(av(DOV1ZP1_K>z@;j|==^1(6{> ze*ghuOGiZir3doG0004iNklC&ak-%UU+ z{Vyn0{-|yXAB#Kh2ZTxU3%h<@m~|~Qf4G*p!Ils&`!ZB+AztK#e6WP6(QqLl+rm1E zLo#Y-wuQL3z0ZvXS}5SixX2`6TUbSekO(xeg!NQrdDhlXgnCbC2DplnBNSFdGilit z*0(|k2^)L~=YY>>N;xbaHXp>zwvaL*G72X?m_l@TV-j$c>|Po$vCX!Sr9z}|e+ks? zc{SsZwuxNrITw#1+M{f&8%g7m8^T*&8Uh8#}Mv;#dxMv1rEsx_u^>SFP)4qy9qPy zV=9=3(XuxReXJK%7?;fn6T*FrCgX7KWBo*-U$K3=es>%HqkIBLLJ`{Hqky6S0000< KMNUMnLSTaM72wMN delta 410 zcmV;L0cHN&1ndKlB$0kQe*t$%L_t(|ob8k`YQr!ThP8PS^bXEYG6kx^HS`*}M{x*} zKwxMF%d>|>;KP`7a15e3M2Bqh*d-)YCqF63rF3b*|MvOW-+M^15SlV&%9JU8HxYdv ze?jZ!M|EHLN|MnJC|B+metkvUx)nOysmftbi1%|9>#z`~6;V%~f3R>GrV6qz?2;^| z=`gb|#ANqaISs5(!jUm46<}Z3CX~_yH1LGoMwL}L)Nh1#Pgn`KP4X)gw$w5m*cWy? zDW!r9zJxX4J613O%NO%O!|V$gm$GDV;)^RpmlIcj+uWEQOzg8S-$3!5p*9~iIl<4lAZwb|kt!#(gAZ?$g0A-UmMmXLW9WQ6%kT#7Mfl8-Rj z&(e5|?V?KOvbkYO#Ter(uE*Fu(dbv~->%=?#{VdvU`GYE5V?V;Z~y=R07*qoM6N<$ Ef(*ODuK)l5 diff --git a/graphics/object_events/pics/pokemon/clefable.png b/graphics/object_events/pics/pokemon/clefable.png index 43ff65d3f131e9a815d844894be89fc1bd0ecffa..7d59d444217775121d91a26a6e2eed25998f5f57 100644 GIT binary patch delta 650 zcmV;50(JfJ1l@YGAX@+SR()c02g#cSaefwW^{L9a%BKVOhiyl zM<8}(av(DOV1ZP1_K>z@;j|==^1(6{> ze*ghuOGiZir3doG00063Nklme+*e=(enV%yCLP(fDjzE_)mBE#U*wyA2!jp>oG z{07hg)sb~UDmc>-T|mG;X~5U6DbP@tH#`<+3e0IyyCdhG0*el^ma&@ha=}|>$U}kAy4-eV^PQ9l3Ky}xr00cJhzMwL!#~v6=ON>Sk`b>cb$F*fA8V< z!?p#MXpBAVE5;H&(5^SPoavhD8a&wZjQe8rc@Jb+mfjr7a=&c~%qY-(5sZbW1=FIl zxxr|iX8d?}Pe0@=hCR{d7wcM&o2Jhz2$R!oD9eW$vfF)H;fvD@hik6wz2hw7@ZdOe z4)ktxpC*I|u|VH49s_ghR|ABFe?>3_7!%R}lT-f?Y;J;yXRFB}HBfZl(-AkjgRn3S zFjRUONH;M|;(4j{pDw07*qoM6N<$f{RuuVE_OC delta 545 zcmV++0^a@I1@Z)tB$0kQe*yhTL_t(|obA=Uj-xOT2XMD;{17YMJc!dRl=W9dARKpGrtx_Hl(Djx+49xwc2gS%&_>ab^mv z+~6)w2oXYtRl|4)Ol`Fqz%MMk$-o#N2N)gudv8f5T2Y#vo8Or_IKP^K^JZy93;s1fctSp} z7AT~tOl5gffN^zLn5MY2eC}|5@TsuF<$wYa&GLL@arL#4PiFnK>7G{Y#ro{nr&t@m jIw|mT!rg)Y7qOV1ZP1_K>z@;j|==^1(6{> ze*ghuOGiWihy@);00045NklWgZ}mlz_Yy*gjvP61%AvQt0SSJ{Fas}ikge{rh>)1!>QSc<09&-i$9YxRLvYoHQLTq31p z$ptz*o_sOQgNDWsB&&H@(26dM*0(AvurV>vwAqBM-xf&i+&JIC+UZVQ(`Q9f8~`)Q zPVK;REjnU^9ZZm1xF+qXt0k-Uv=p?GmxjK-;e+JDU6?OR1dwjumenE2K zdtmalWHq3Haie64*9h~I9nr?r&1SHUM9=yJ-;JV`@BE(Af`b{I?C7wXur*EIdlzIY zPM2cOsiWQp(Ny$2eP+Hl%&X^;`_+GS?x)pjc|UW=2l##td(W#1^b!`aOn5u+fAb3l WQMK3Fj}XTI0000WjI}DRxdX5pOM$we|sh%$$f2|(qoC7Ao#3NEh zmRz90^TjvQY8)I)kgV2iK`*+n&J9ym;9z2)?Xn3+e=LyN893j;-sw(!r_YO~XaHNu zPVGQ*EjprtH#SHv$~Nt(sU@rKwiWb}w}u`M=peZ$!Hm4X-U@MF;9!b92KXjOE_4qp zx|XaATG+CZOz|heY|hyc9Zbz?jW0>`>Tb|YC0gl5pE)gPY*osRC3X{zrbTOA2HA?! zr8slysMkR>6+JIsndg>y_gr$n`>*c(vU@G(JBNIL=X*GNUR9vCu!wEK$ASNwUxtOP UtJxVdp8x;=07*qoM6N<$fV!Z diff --git a/graphics/object_events/pics/pokemon/cleffa.png b/graphics/object_events/pics/pokemon/cleffa.png index fc7077b2da269bc408774e232299ecbc9d8b2034..2adc34fac9016d18186ad5f6b1d2d1294c79c36f 100644 GIT binary patch delta 442 zcmV;r0Y(0w1CIodBv%J?Nliru

@Z0xybXq0#^V02g#cSaefwW^{L9a%BKVOhiyl zM<8}(av(DOV1ZP1_K>z@;j|==^1(6{> ze*ghuOGiZir3doG0003qNklQd~1|Z{UQaI0Ruw(gySjyFehe zhU7S|yO*$7Z1M_XCD-^4K2f-+93reM7H$%D4zv>TcVBjAhutL$FlEY=DO0BWWL^Hr z!5T!*b`G~MBHHNIYk-dCCzMLI@f&GQ zu_?W_1*iM7=Txvts?cv#A4FkV`fUFT73HC1u45KltBZ>3#B0EF=F3(v7cmR&SooUx zHSrqYg*gMkhKtm7$Axi-%)E8Bgf;VxyG01h(!F%RW$%t`hoV2;TOVMR8E_wmV3n1F k=g5dWHjXVE`S5@92~Q%pU~I)9ZU6uP07*qoM6N<$g7{y>sQ>@~ delta 332 zcmV-S0ki&(1fK(tB$0kQe*r24@!hcfvoR;S(Y@CI11&G8l5FEQ(vo76 zd2Jgm_gB}IU{&Uc->BY+k}C7r{ue5(6Ukh}EVxj0&PC}p;4SlgFPNK{1rL13d?>vJ zI54*$*l<(19=I_MLXnxb&XTaO{q7PWGL3uafX(QP?1Wi;RNk}(+{+=_wAti3G9pja ev4;~6&NpAuM$%^6dX(<~0000@Z5G-q$fV%(y02g#cSaefwW^{L9a%BKVOhiyl zM<8}(av(DOV1ZP1_K>z@;j|==^1(6{> ze*ghuOGiZir3doG0008QNklGyx2vPp;OVEMgB_K5qhbYda3`X zyl42YE1x{g&(_m3tU%~Z;G()Fnst@9f8M%%myJLufZidjB0xj4Cg0Kx}FB#0urRCwrEugYth1XgxrsC@AsNR3{y1An zzMf?p-ULeF9SDbaSFxJZdc08lvk!!a9Q$DtIeQTM5jij`0O6a#!QsAle5TqSPgBKx zAZo^o0)+l_)t@r4R9syh>rEy%e~wUbNqoZ~{CrQ|-cMJ3lUORQ`amh9#HU}3U{A3Q z1mU}ZE0nx09Tv;41OISf&ly&10?}ScDGi->SFsKJ@&0~G2>fv3JTiono9nCF?2n9i zT2)D9&?_Zd;o`$S2rKhy0<&3X8HAr^XGvz5ZP*G~NyCzx{*nVT8+cvZf3g`b+L7f# z6s=*zy7l}UFH`MHO5je|3GgyWSY^0kz*F1*dY+_$l{|Gg<(54jJzUH?VL0o6Mc8RU zM;SP+kgb7>k$Fb=TqFq>V=cg^jAt3+dIesaE@!7JBZNTU#n=RJ*5r9>g&hSJrQL)T z?W(plLiEr^EV_*B3hKxCYDG6T1KJe0=1#!4C^9SDWz>$Am$Z${u3$QCBS_UO;H(S8 zt)P}{Kk5R*so4sU?0ob&+goMWIfm&Y*sQQ`wL-L8LWtV!m%KAnxc@S0dcSM_$@&Fg W2X_nTEVwNI0000XMfoM delta 705 zcmV;y0zUno2ayJlB$0kQe*&CIL_t(|ob8o8Z`&{shPi0yQvL_VE;2PhK4t?ARdkaf z^NMK6t)B94JalpXTr_xb1zR-WCF~tVk&KHbL#Lv-MR`Q&d5<4*gm|y_dawVdiZ}SL ztDe8kZ`SJ_0tt&bUHs5|k8%Hf7?xo7sMfurUNL7 z%*mV;2?v3^90aq#A&`Xqg{~%DtuFX+rRMvYuCB&FegZ}AWX=LfxWBlXopt*lIO}@i zNeE=2EWebMSg0BEY#vR;tjmINV?g|$*BwXT@y z;yDBkLOcmTv?F_Ae{E`%W&6myYAerUAPEbl)Ku!yZwo~Bfh;Vq0d3lJ=6y9X3kzlH zsl4BMAzcO@0$JFyur-Zu>S)08&k!iYzP>K^RoVmMO5Ma6knrPjdj3!}t-ohC;5h`c z&|E5Y-C#InuJH^Zkc8?f6M6Y*s&YAQa14RK^$MqOijW`9?Uk@*Y#LsQEWJ1Ezy=n1}EG%%P8F)-W`1U|T zh@U1gZf#-`!nOsBi~}bj0yUhD30PuGf!xj3n!ZeIoarMAw8!-i8(X9XnO$n&NDU*T z0O|mmH2z@?f8dZ}GbV~$*y?$;wk|SSVprO@LK*=xAs&fM8P`az90{En1#*KH=~EkL zQ1sAjHyDK!NDL+g;I6LwB($2?Wt)K7Lf=QBcrU7t=$O-wx|4nnvH<4nH%H%MfhhB1Xvvm@;cgO&({j#r n`8e~*t1ka9@Z5(a`5EAIdR02g#cSaefwW^{L9a%BKVOhiyl zM<8}(av(DOV1ZP1_K>z@;j|==^1(6{> ze*ghuOGiZir3doG0005}Nkl2!cNEVOT>Cnt=Gv8l0-Sw6({TUyy zAYBI=7EbB_WPvRlOa27_xqCBjWUvR~K&m1%nH+cJn~BMRd#HbS<6kpm*ED79h5RaU zJ(vA7z%ZU)nj;yR7BY5)9qjzpf5A&3%L^=w^Cu(R0Ti)We&v$>QI$}jMC;;(kR2~r z_^USsxZ9V~Y=322h$99f3?YtOe7xk|-U=DJ-+TLyw+5f3C%vDolNs;tK4so_?PB)r z^W)=JD_pX=c%FB|oXpsVn>+8v!ObtfzZ_o3L>J_XW&Ln?xF^d?#*tgDBbjzHLd#n> f<9CX0_`l8{7VTYoY=04800000NkvXXu0mjfCGH#& delta 544 zcmV+*0^j}E1@Q!sB$0kQe*yeSL_t(|ob8jnlAACTM%ARS8@&T5>^h0-eTB^aG~47c zF3>QuDI{pvnG}E<=*-gi)tF^6GBnDC9i$7pnxxH)KQ}%|obQfgGj`22*IaYWzouF7 zw)%h@H~-b2tbFylAgLCc*1Qa_nrVo$c~Zw^yYR_EziX`R#F~$Mf9CDSLLP=Ahmn0> zt3?4j>xiP}Mbo^Lvyds(ADcqWFO9-25pME{{lXTgOw(iEmO(@tQ5g5J5wZ*@m5*ryPY6JUc>Fp$CxT+&DyAycA8K8d;T1Vh~@D?E#&ZbUk>))2vvn>(9$ zQK&?cgo!Z1UWLfef44>$$rOwb8%H*%08{{prVLq5ek46IevFXuk;ygHewO=2xUCB0 z;CUXAX8{C(Hm5!@DV&5DBHRe%m-{*m`SthL!z-DnL+&i=hr`1iSza@a+;Yvdn-N;x ix*5Mye8>NF7XAP${9W6g&T}UK0000L42jB>hBv%J?Nliru

@Z8!_u@HK_mq02g#cSaefwW^{L9a%BKVOhiyl zM<8}(av(DOV1ZP1_K>z@;j|==^1(6{> ze*ghuOGiZir3doG000AoNkl;tl zkpw+VU|uC;GvGeWz!31f$L6%x-BV5j`ygi9hFn6YWc^s3?#>c++0&|_?N3$uzN*rn z3HiVM<7Sd~D*t@~dUgzakLU*oC_4tee{~e7aUjFL6F7O747yw&7tl2^W%S*~{=7&C z)X#h4@?TQ>-7)$t(Q{hd#z^ZO0atnx1tPZghRJ}<`Q4s95K`W$R!%skke5hshSjrw z<%KhQ>;xVpmfqMu)!yydBOy1lCJN{})`9{sT56~+nSFJA4m*d{8V!gQqk&<^e;x?A zYU2!1{nrHzKvhVf0Fa=9kwAJ(WE4;(qyi2n2_T`EHBmra6f%=uLM<@&Q>Y5$U04D- z_n3%LpnZ_4dVUI0wV}ukPXb7&69Eb(3@7uy#RoueDHTK4Qs*i*NOSQ-YJyI{xg8j9Ajslo0ca0_-COkd5`Q3IkmK z0qm1ve(f6Z`gf>43E_*7YmR&szwre*ztXo1_wVzPR0Fu{>m^?T_Obl9bM86%^Mc)@H3A=4re{Yp*Ce=oOjqnly(_@)X}WR~f@M<5)d7LsV>-TO9occ#c9k9ajH1hK0-yI|ppe)% z(^Ai4A-vxfuc7_;E_S{LaMS^Ti`4#|?<6O3prxI8_v7~ex_t$*v^jg5Il2%40000< KMNUMnLSTZ95$C4> delta 879 zcmV-#1CadS2)+l9B$0kQe*;NLL_t(|ob8t1YTGar#&siDZ|o=7Qyc^d1NUlIg(1)k z2?h042BYBIw1qHmAEZ}T+5IfZT*$Pyj|jLLr#>>gEP*7t9tR?j82x-cXA=+#xD=r_>8kpn(8DgTmeq z?lj>6VB-;B<0Lgyf72=e#3}HMJA_za?FFDYg_SX&jnhO8fO^TT7PW7(i<87qCID;& zv?onwS9B}z2B5bltertN0OnN$EXDzYAp&lk&al@oZ?pq|$=$SHK;ZyZTL2w;WbV|o zvKvRaIF_0iVtpPUKo&6P4v-6A=h)Np65wKR)Xku|RyM!ce-b4&y|(_DNd-(=MQVuk z1pvE4Waa=QZ{hqcurtBj-YwPRJ1EYS@(ZL!zd~QQhD>gx(Y$7fA)8jW;g-C=gQC>& zptSNcy!ldY!-CG}T|73OM*r5U$)z;9tUO?chO&-+-Q!9DOAlhF@4xEcPuZYbmc(&{ z_--PNo`Ih+e}=w3Gk#zc8=q`5`R)E*2QA7$m%`6bg;yx$)n>rmHhx7p<+;&h?sA}_#1dNJYQ~E@)LpB6PR39t`O<-(0A$l@wblNZ;&C#X%$9bE zD01C*o6PQfT4+9KB(Z3y)0UT7UkC^_QT>7RTXN-gf92XdbWsyp*%{H09RJA50su1^ zv|O>oFiQ!2dn<|vSPvhs?1WtSr#f9+aa*9(w#1kjU4_%!w~D7tBJx4RZSe$9ee(0Q z12~;IfX^GxbM(AbS#p~ZKofw=a9EJ9<5PWB4KF7D;I*Ge04MtZ`aoseSUma2*Ozfs zwINSOWuEMB|AHC==o^~u+{9p=v~o5E7=MRn?&OV1ZP1_K>z@;j|==^1(6{> ze*ghuOGiWihy@);0007gNkl(NCBq4PI@xPKX^p;BJ1wM}b{TU}F0KB%>_EN32 zztr)s1$IWq{mT}BS)Aw{`8H`7d$!s5fA5AgG74;{?68kt(S9vcC?qqaw@<=7s@XI=haW^91wasnJ00d68})3Sqe4bHl} zW2{g&-EcL*ooNBqPzK}?r76iMJuS;L&%2K^f|Y#TmjY6sR&7Jh8{~9*pi~Joe|#|@ zWfjAEUk$@*^jaLw+VZSk2moo$J2otB@G+3#`n1-ThxbANNCU zX~l|z6Hft556}$n4spDD3P6Jc7Cg4Chv zpN7At(rL5_gsmPy=shp+25W|5g=Ep4BhnT}!}K1~HS@M$FYSj^dfM+754_qH*6q{< zTK2N<4oR!Qt)0(4JD=EUCq28C<|`^54xNc8PD=i}5JV9mFE#fe3%5l9q|?4@FU z+pMu7UeI{yy4Z3Qa@Y%fC4@1-c*S14PV@mK{)qTb+iwc+bB=3)nDzhw002ovPDHLk FV1fpETXFyZ delta 677 zcmV;W0$Tmq2K5DyB$0kQe*%C>L_t(|obA=mirPRN2k<#8p-$eQuQ4Jm9u<+zO9&fe zsnC~b@#00;UUm=*!E z>$P60TJuW_|JvYaEG%BO0Sq%wUx@bJ*()2$#(y`Yh0!3Ta>0K7e=}$@uZZY@x@`{@ zsiy^$3$^{-b6^;IXI)m3>kTxQ8=}kz;0v{Pv>M0WQGC|r2WB2nOLw^e4vYZT6Sir& zzk2^%QVkhWFf&yzV1r_K|-ra$$5i_?w6D* zfrc*z1gv6Sf3JpNe^K%v4rgt7RxbpAAmR%t3mOcoaTu;oYi)UWF9d)fX3S?9QJh86 z<-~iRV18P$;`qc<0Mi3B!>47I9Uo)R;F!galj^i$#e(IAEn~+gB|x|R>6#RzHq}SP&lc!j5&1yrCF!D_a(Cs3$D-NhV67JGsC2Y6ff3DD$-_a=79OW|LXF$HL zlmOjh*H38veJmXmX)J8@2tx09gEv?+6cdtlcZEn>91YWRNDpkc2XpBpr_$qo-@oVG zuCQ*WZqTwfeRn`w4Q?G1_QCncwnyp7wKSi|zh8DnqCxFJ{r=*C{g_6Xc*dBXC;71J zFs#^lrdG_a>+z+Z$dXET%L|2Ut=?htFf?JM>yVoiak zcxrDH^V??46!C_}L)XQYqmaX1>sJ^Xj7RLn_lbT%8;L(6{?qymon<^)8u+@ZHWwL9>bn2{02g#cSaefwW^{L9a%BKVOhiyl zM<8}(av(DOV1ZP1_K>z@;j|==^1(6{> ze*ghuOGiZir3doG0005&NklF!mUa@feTs&qglS z%=7!F{A;_Jlj2t% zwkv4EX6%wRPqZfs3#ij)&_Q$Pw!5|tnu+8L%7kqT^>%>5ge*X(nYRGnOk^==6Siz1 zikmtQnH7K*NJo|~0UElgmKHETZS{(kQV_N)2&X0wTWDQWS_fT$iXy*&Xa1=Ie*hD- z3*5YZ*~~3@_Y}ZO>sm%`kPCl%u@+YB9%=aeV#~R}X!&8@VGGbrH}G;a&IMo3mUe7u zCQyAp=-YIsWw-CC8D=-k=)3D~8sK(~Bpx7wid@eTdrLMxzv13`2LTa(kbrB2 zq+>2nLQO54X+d_C$i1U`t@z?Ehr_e)kgZo>iPQ>P zo;vwi93YN-1uqPdiC)1`&4UV8>QJdt7$SWHzaKCpj6K?;J=&xFS<`0ET*puIYloim zIjdh-*coTEduD9Mq2LAiTz3a3mAAU?5V+&egSMdog`4ptWi#r!e`8?Xj5#$7bWaKk z=;agGsyR$jjeXTjNDnaA?Hf2Xkk(XMfR!qnKyD@!fSv0$0{{%Yu9-D}9>|WAZo_bT zs7ec1p!asivDF;{;WFsDg|$s*ZPncm0sJM7n5&KjkFPdu$=zE4-g?L$FooX^-tRdq zX?Z^QHU+FUU*;2ze*n|=0B=`g3Ot5_WXDP~f$-MY+jhI%-CLlO*juNzfN8Z%Q$!Qq zDw%O<=f?p?x#T8+PvPRJRIoJTqxJpvcr*gFQ(?<6Em^Eif#Np8hjb}mbsEpw%SkQd z+_qp-T@+L|RP?tiS(+9I1r2cw=*W1E=sY?2 z{D#tJ7XcC9Nr7vJWXD2513k3}rh)8gkY`u-+VSEqh-C%l{5vrlo%a}x`GBI@w~qhY ZJ^_cN?KH@5(tQ8`002ovPDHLkV1i^y=6e7D diff --git a/graphics/object_events/pics/pokemon/deoxys.png b/graphics/object_events/pics/pokemon/deoxys.png index a7726213aecadd8f4d36a93fe02560504d5d70bc..2d2f169a8de6fa1d3ee344734f30a0be01ba2325 100644 GIT binary patch delta 806 zcmV+>1KIr81^5P#Bv%J?Nliru

`D1SIM>4NL$402g#cSaefwW^{L9a%BKVOhiyl zM<8}(av(DOV1ZP1_K>z@;j|==^1(6{> ze*ghuOGiZir3doG0007^JzjOG1XTSvD|MAZp z1H7OA*nbk@eXIuZowma8^>`112m{#Rf5G!G44uatkQ&H$SRSeq0{&>jtqMK^laYK? zp5VWgCi|5GgVoAR1+{C^^KJO*@Xajr!;n8{!F;Ap@ELp9D!4ugnLeQFESj^~?AVXy z+~_iBGQi!%iI24bJrA%movlwj2b)aX!;le^Rd6=DwtZWv*s%x%d_=<$5~J; z#LMrD4s0<>ub%#&)naSe1QSfP{U1*?TYk>PnaiB> zO%R4ESbKA}3I;BtY`f#eaT`pD_7tH!(TwCJM|1VuCe1dl$*Jq)N9 kyk~WT_c8Q&&wuan8%f`=mY8zFjdfDS||pljbH z0i3SN5NV^m)Sl{R>EaH3sFL&`0RehFeOaVzCV)K^t+pR!{!b#0GQj`qpSc)b=Qr~Y zDPChLs9&{B(~tTJ(}09m%-*MI$}cytQNgisP7|cQ*l?i0cMvkef4h1@@)<);8q0ub zWJ!U}nv8r%@8+MDX_BV;tgT1{O-O_|ZwlN$q{1!W+vJ&8F7J~((?QpPAp^WTKP2cB z7?~koEccI+W5`iFPel|m1uiow-2x*6R?qvw>D&{?LI@uA%i~VQHf)B!zwW;whHZpM z!iLG0Uovw7$F_V{fBvX=tb;}?5TlS`qSo9iFtU|Zep6uI6exUyO$^7#2poA>q?w6~ z`|a?Jv|pQ>T@<%xlL={D1B)YWBAjizz@yj0VMg@7O|DrikvbycW&6nVKD)-bX!qGJ ziZywg7fm1zHphctrT;N>ZDh5wAASlw&70G2aRrUHd2?8Be^IQgcoG`(I*^IMsxL6H zO1lL-TijA-f2Xc4pJd&F)v9x~k#%6M8P6icp{!@I#kM!9eiz0Cm{)*afR+rcp4Nd@ z7SNd~)dUW%3((-veIKxeb(e@%ad7>_mfvn=+yx>9vRZ(hDDYel(XllWSb@IP zF|dlFXaBv%J?Nliru

`D954UzOq~D#02g#cSaefwW^{L9a%BKVOhiyl zM<8}(av(DOV1ZP1_K>z@;j|==^1(6{> ze*ghuOGiZir3doG0007kNkled{{tFYJ4VoM^4lY)KS$o$ z&Go07;Tu-Fcg2>WdmVTlJ_a_!@Y82(*47LIx?*!r>`DqhM zwmb`J?fTgDd44WHIW>o1RWER;*T=a(f3Q9ai*9KKpl(lHAV~cTL5Yf5kbhj1XgJJl@Y0e6 z>b&Gjv&WrqutrWznKnXSQ;O#tzEwFgoTe?FO69vC%vpSGpy8`bU}Is<0;X^%4%a5< z2j%)kclTq?z^fP58I^&Y#Z|L#AkHs>`}kxaq#cPFqmWj-A+;?7?JpMQEG*59DmMb1 znUm)MC4Wy3+;a{Boq#I%69D-GDLjCIIB$B3K!GX=(~POAXwEcj&v|2D_&WoG023f) zqrwUCJ@M(ime<55px${(3jwBZ zCPT>ae+|Nnhwom1M;;zmAmLX1j?q(bEB}}<<~(_D`5_9qBAhkvE{_Q3TIHjSFKBoE c*W#bGzrAndO_Q#zb^rhX07*qoM6N<$f+BBEQvd(} delta 637 zcmV-@0)qYB2JQurB$0kQe*$?)L_t(|ob8r7j>8}jhFwrw8sR#3KtpTG2-@u3Bkutm zIknHQGrS>6c8iot_j}>{cnoBR;lKU2&otrI_Jebuo1RWER;*Vnl}us#cmZfORfZckkxNc}pSf7CnHhUsfYEb@L_ z>Ls*7+A{#TzRX63-Y%YH%B2|Z(pcCFVC;m3fOQ?TnQFqXM}YJnQ_eyjfT{*`LZKL_ zUu6^5L!bTG!-J~@k1oo$|_xJZzf zau<3b6^#R{>kKaEe-YH3fIMX{$T)e`EfMRi@WP&6E7Hh5{t0(D;U zrPqegoL>ZIZVZI9BQawX(uy~vwq>Bb3$ZX~VQFquxh@T#lU4#H zf13yHIR}AGKo$H6fc$|J9>74HH@!umK$V1P##B`_XBxKWyfHBRoq<7s2@tdL9VlyF z5bBueA@xFyX$8Y!eU~Ne@mDQmpnn~02B0rAn^&-S!4mQac!qqabQecNi)8_HQ)ljR z4nqbIbxA-1u#f-&sP}`r?~edHA4ACEV@$+R;e_~=`1D@OYvL17?>wc208==VA>{bK z24Tj-cQ3#r505L5@Th*r=&5*=e@qy2o;M}%{&^3lc*v?u>(@$cFX X&`;q#&jN4d00000NkvXXu0mjfy>KH4 diff --git a/graphics/object_events/pics/pokemon/diglett.png b/graphics/object_events/pics/pokemon/diglett.png index ee7fb302ae66cb3b45988c99e17635a092e443dd..e6d28409dc3e291454a6343bdc4129c3d03f291f 100644 GIT binary patch delta 447 zcmV;w0YLtw1C#`iBv%J?Nliru

`DBmp$I{iy%|02g#cSaefwW^{L9a%BKVOhiyl zM<8}(av(DOV1ZP1_K>z@;j|==^1(6{> ze*ghuOGiZir3doG0003vNklX1)jftk;UGa)8F3kl>Yj`#`& zq@qaWAG#YPmR7RlhzX&J`WtXE)bAOZRzhsP+sS>pCkbOYIXO8wIXS1N^nUul`}aTf zU&fGwR9G7GIyHDgPY+UIVDcaxJl3azf8T^;AmQ>z&&oHm>Zb%dV_qf(9?w>!{~?@P zXD#L+#LSk?xrf8T=Zh`rQz5(W&o8Y)JO~jNgW%~f&;5?@D8%a;}HHu@HBJSu-*k>}W4V4N%7e&1JU$dA%P5T>-G> zI`Z&9!~refcFmCxIBY72zd!b)?@0Qz6yyK^002ovPDHLkV1m#Hyw3mt delta 337 zcmV-X0j~a(1f&CyB$0kQe*rH^L_t(|ob8Y?PQ)+}MO}Kg$dPEE<`_}jP;6r=WKl%6 zi-;vO?xLN<_bb*2~9quzCEf=TQ9f0co^s~ziq2)EvP zPdN%Hi@{p^dRq8?b6|Zg6u!H@^@i{)BrIpaaGJMaV!R0H{j(1T4}@o7V&Ue&y*bI7 zk@F&?_c)Eir!tA7(ADXny|cE%qfz!Rj77UJ860^JeS_Gf1E*lzBRm}ku}5r`OFTd5 z(}3#{T1AAY(AAiJM**O+*Jyz0V^D33x;!iLRlK= j$P0*#aaoUS{~z-W&cMtO=G7M~00000NkvXXu0mjfFA<;| diff --git a/graphics/object_events/pics/pokemon/dodrio.png b/graphics/object_events/pics/pokemon/dodrio.png index 8b9499870e3a8bb18b5046b83341f6603e5bcae6..a90d8e7a74765772d6668025daac277919d2b40b 100644 GIT binary patch delta 1057 zcmV++1m63K2=NGzBv%J?Nliru

`DDJm_hdZYjV02g#cSaefwW^{L9a%BKVOhiyl zM<8}(av(DOV1ZP1_K>z@;j|==^1(6{> ze*ghuOGiZir3doG000A(Nkl@k9_$cxBJ^qae`9}{`$NALvC!a!@ zqdW<;G@AtI6BRUibBw2flh>NijFuzYf3(7;D39^f&$5_lrdbws03P+wrv>A{32T~V zqXytOz>UsqhB-rF%zfZ6&r}buX~wLI1t3(hz>RKO&AJ39^gIe=s_0X5-hU4Lo5Mxb z*hqM|U}r;xD5sn!DkPxLaY)c1Fq&p~&AZRB|KbamT=jX)VNoSRg(%oUk2E9hq-4LABtOel5IPP*$Z>(WpH>tS zD^k)4p;@l2hzpkccH0YC%FiXew3f~}ZaybO9)zh23<6hpVQy3>%=sUwm~F{Wu+*eA z-4c*p{VM4i)=qGK)(Mfl(B)ttECg2RgoS$U1oT>dm!RxUp%)T7Y+*>3e``^)Qg4{x zGZ}=)LFhId2G(xky$}vlC)_P-Vc{<7&j<=NE&97|x3XnNxA#fX*kQO&aZY$XsfBSM3gvizlDeMPDtWk|3y%5<88Sdnwmeq{i;{Z{}vVr~6 zRI<{rDs<(9o_~1ZZq+tfD@_WAf(4-t{Osq2T9eF^r-ysoRJaeCf&F8uWZvSWnTV|y z?%+ff=B%EDSp}i}5ts#mY+>GhKHYXlVZv~E!HyKsAAp{XcN$n(e;(u@95L?9Ih^#w zK9~;}<~4zaUiX%%nCT?kmS(~jDDd>#r@IfB;9b+-P46*FA8)n%n61#le7pVn5fipe zMf@Y+4L{yJ+?pe-wXu4*9HxxhKt}~b2}auye|vf;k8pJJyvuZ7?pHA{)ywFYl!20B z#uDRS1-rQSdkrlaKLvu2jY`mKx{L$&E4GSRUrz*Y8pt@Xee-q_xE_Bp?)_fF>F0Rh b|9k!d;4R%BU<)}N00000NkvXXu0mjfP}1df delta 956 zcmV;t14I1r2#N@hB$0kQe*=|CL_t(|oW+(uZrd;vhj{@K@B!kXdkX|apvj)Rrb~w& zA#-5_oWy%%NcRNrO(KJi1|xw;D3u!lg{U+1J(7|rC9$_wKnr}7`1>CJ#)SN%hpOXz z>id&Vq0CX91X`L+0`!Rr8ofQn)4<7VO=w2Tk!@OGQStNZe>Br9i#h<0dg#-F zao~hC&9YGga2()9XSTzfp)lq?aF}PRhu1V?R>cAks#xGgx33mmf)jck1u|9isX6aI zhyKmsvTAH3JY2HnP$9}G=ZOjlD0CbWbO?;58D8`5bL_wR$|YBQUUOJg$xtB*_Ru2@ z2?M(X9FPm_Mh(LFfAb)Kh9PgYs(gjM92nj2HNTJ{0R@hI0{-s;!)p}Qz}@HAf2CbR zB*;O~jW;)3z1I8{dNgGa2KIt2@qt=*Ggz;A(hH#fVV8eP@R2YD`2x3k(8Rcwx>}C(QYGshDla zP_WdbHQf@BUHvNQ9M(>7zU+j^Ug&Z#5EcTfbizWtbOJh;R}z%nDfB{uhb;_gHWwu; z^_B^~kU@wXe}rzsVPNeh-V5O{b;8}O78dTJ{*0hd)1trYc4xND2rEig8`Bl+g>5e+JNRfz?N-rR&QuU02cgRWA1PXUu7Z#Ndm){} zzwO>uuuy(NKnUChCZxrUk=sf(#=e{dA+q&C3j0A3e`{2uNH0Y8LWVoJsAaWacba%1 z%LevOQ^`uhs?akh^!yNni?+#HX;L^8EC_Yr7e6o5nq-|kZ|-nY;XY^v_K&HOb&Hc` zBDP)#BhrOg){8K!AhZvGSrEt;=Izh(O?MO~43`(|ND=)3=-GIuftBT^U$YV8&RoMu zPwd8gf50%W2{iP&w@k%CC*ig<6UIP+r{6x`e!v9pn*MHjk6HS3qvgkJg%;-i=I2LD z*gh5UkAOG)bi27RM_6lP^>8^%8MlFs3WgGlwj;iO-jqi;x_RDZ`dB`Gj`@@NHTorG zprn|w#Q0ai|DL}qeFcLy1#V;j0000(h29OAlBv%J?Nliru

`DFCQ&K836zQ02g#cSaefwW^{L9a%BKVOhiyl zM<8}(av(DOV1ZP1_K>z@;j|==^1(6{> ze*ghuOGiZir3doG0009tNklem770xi&`gkj^6$@l$! zNJ$9&AAe&Qnfxxa{Kw<$&Im)CP#yoqe-I0{aP$yZ<{76tMtDPRlZ|NZI#H-)G{4E& zE!A_L^#wN>CoE?VcUnecG9HtWmW{FBQ`}^P`0aRdmucA`a_nn40PZ4#_PJ|FgBSL( zN86exZg8&@9B2(@RuW`}PkY?apY1b;44@#5L&?n)%*Rr2$~6Xc~e;_}+ zVm2XAtn6B|R$UOfrV9Wrh^VtNz|0d2BW6_< zIgwNF(W1jvd(Qcf<<$uz=Fefgf8bKUIH-747J=s?-_pP)<^Q?q2GSsc(oYCJdlXYx zytt$d&jw8k5x$R^2+q8Zd6iPdE0qv70a*F5)Or9e4H?+#f^B^k*I2x|%o?7NY1?HZ zj)b6fdR5hIS#hikP!WKri3ee(N(P`Tx49Ih1? zK&rONl1)W}s*@tPXJC*aBsW7_ZES26HFK*DKyFJF0Jb=-IjSeTlm#2L5euGKqmIG+ zd73)2${=f5MT9{Ky6W#Pf2#>b>WCDaMp1I^wv2dioFous8Ww_bS2c%olaZ0kOp$^U z(w1}9VesCj>5W(SeUmXb@?O_5=(C78AIP=?Z8_>Pz{ezc2dzP$5p(6XZSQ`YY$Tt` zeHH20bJ8?@559&`7|HukNOg=}f3QW3A}y~c;l!U$G991$La=y6U3H8M-!}cuBlZc0 z8PAGP&lHOtuV?W{V(tj(8GjMMuD@zo9xtoA{t2UKoo!>eopGk;-R}+O{&wCub{QCS hJMSF3UakJ!_yx9lqk3Zp*UkU{002ovPDHLkV1jy|tlj_s delta 709 zcmV;$0y_PW2$cqqB$0kQe*&OML_t(|ob8sqY8){T$JMCS%j~&z;}M)2A-EAZ81yt} zQ02<6;wq3T4_gqBi~YQ~u+1x}{37 zMb7vOD;iv2{e}WgLC%=4ox43#tpwL<%0wNUyODEtcI$A@Y;n%Lf89=*ARvOAGDWrV zxMxDb4XRr^WeREWDI)|ysNC`>DDeb$D0@u`e_cQmrOcQ1HOkWU>J`|dc>^HN5-{bDP*IQ!Nb#9v%=MYcuYk_e<;(F#WS~qkayr{S`QQR z;S@(r?hw7`O)uOG2+b~3Yhez)q+#nZz$EZo$15@Kr!aLjp7GFTKMGWSXacI7np$Dt zzOZj+g@rsOmefg!yb+)gmqSa63E#L4e69wR0GJ4}vF;Bb?C&Zu-UKN`j#a>RE)lWf zueQ{V9M%Y1e};{n=u86MEemKn;f=s=n9wDsz}sz<*tvlL4*&;jecv-H0S*FNjs}kR zA{N#gh7>V$fh`kP2F=cxF6CV58Doh^O_(U1?xB7i@0lcnakTdAmHPgw`detvk19I! zk8;NG6&}ZAc*TBZ8?0AzmT~;aoYN?Z%{Ru5*=r2eJO7w+zF$WBPfWD8mpC0~X6JnU ryWvq?=Bw+P0F{^d>bmx6_3zd%o~OUuk#Q8n00000NkvXXu0mjfHE>e0 diff --git a/graphics/object_events/pics/pokemon/dratini.png b/graphics/object_events/pics/pokemon/dratini.png index 68568b1aac45d907197af1fa58a2559539fbab22..54823388716345b0389bdb5f0b7ccc0d02f8e446 100644 GIT binary patch delta 661 zcmV;G0&4y61n32jBv%J?Nliru

`DI0j6sHCF%t02g#cSaefwW^{L9a%BKVOhiyl zM<8}(av(DOV1ZP1_K>z@;j|==^1(6{> ze*ghuOGiZir3doG0006ENklAcnJ7zc2@f1c6+PcTlC<`R4JOoQAS+NU_AzC zrrqq%^AwV1?6?A0L^!|`@OT7Jx;^_G1oC^BVPUxhoEHd0vQ%59)ZXLq#=429Ll^YUhn7;Me)JPqvsf8Kvi zUBJiaW)_oxKxmXQm|J0Ypy-YFivtSio5Uy*;0gKTZT}q&a0wt0`+?23JrpiLL{IRX z;ebGx_j(h|g_QUMKTsT(kf2*+YI{$SKM=CxZGVdgYAIKE-V0=G0~x;e+zU7f(Q9(h z`jrGIMVSUN{ykaX$EaoU8nr@=e~zV&Cr8|`Z314Qsc9e|CM!92-_zn1y#-dN&?%pI z`-X%nKeuaD_&Zof#2+xvqd4AnaVu2$!?|k@z!rJ`KjR5G6rb6V_&sigGx-$xggGcW vFV^wH?gCqhVcjf@F?3w`^CB3a{Dtce`(4WHYSmWj00000NkvXXu0mjfB#$de delta 543 zcmV+)0^t4V1@HurB$0kQe*ybRL_t(|ob8m)YU3~vhxGzN?~pt|q4KH0t6TzrsCtz`!xTv zusbm(@@f8Cpry<$rc`L{Jkx%!w-N_%+mYc!ux{&Nj-!5NK_4CRe;?|dJK=yt2r$pI zpSMsC>%cw0UeW*};4%m3!kS}F0(k~oEbKOb^AdrO7l7CB4wCj~kzWXXp$K^ukK-&`tE*>tNuef6RI`C(ja(GpBI?cUsfH zZl!yzD$GVVVaDRk3(@$Ezs5&l6NJ3igh!!lls||uhqu5B724$+AK#Hs6<@(dN-iDT0&oO85Y h#Qh>^p!^@#6(`Nklaeu9iEaP@002ovPDHLkV1nAW6R`jQ diff --git a/graphics/object_events/pics/pokemon/drowzee.png b/graphics/object_events/pics/pokemon/drowzee.png index d75e245a6fdbc98973a3b3b060a7e032984746bb..061cd521f0d7cdc96dcfa7f0749a74f49bda8238 100644 GIT binary patch delta 560 zcmV-00?+-L1cU{UBv%J?Nliru

`DJ2bCRHxvK>02g#cSaefwW^{L9a%BKVOhiyl zM<8}(av(DOV1ZP1_K>z@;j|==^1(6{> ze*ghuOGiZir3doG0004~NklqtaU7smqUym@f8OnY~i)fBs}p z961H3gS5cDdd0^oO&HlVd}8q37ICahG9VTW;p)gwUmf=$G+3u+(uX)u%>pK~3t{I^ zkKK2~DX{S5$B!`Ma=4FQp4S6slQ>r1V~=`&Dolnr1(uH34H83ZuvhF?(>?^xdF7n0 zox4kc#Cv9VkjT)k!{~SbEi(qMPN{MVSP|9iOB~nV16tl;o8?7=He)D52;9)?SQzqk yZaA*dA_FwE;Zf#= z23`>>H(8NsB$AbQp@H%c*BFUEE6C3{=b|F)tiYeQ_aJbrR9zgZ8$?#LK}kGemrXS1 zxZ!3}s=ppYo&{`<{PiOG3g0R=(VXMR{uc4sSc&U8Ix4LNp1SrI*g77&@yB2nkuJ&6;aK;#Bu#SpyeI5K3QHgXfuW~guo5Gj)fs# y=Z51tUx!+6149V005j!=^VNm*JnpB$|J4VkzzOW|cizPS0000`E5(XjylSlvn02g#cSaefwW^{L9a%BKVOhiyl zM<8}(av(DOV1ZP1_K>z@;j|==^1(6{> ze*ghuOGiZir3doG0006lNklBc<-^zV7S3{&^vOo7JD6 znBOi#Xy)`Z?h}XHuIo?__v;YCoL?zFfA5$CE}MrrfY2r4dsB}b0yqiuarOm5*Wt(G z_d#U}l!5+jb@_Y1&wze)9#kYy1|oVNy$C!ZegG&}=Z7Y~-zpQJ2;}*+7)LJ(Ar7BB z0+zoX>wq`p1SkV};yw-mNRj}z-(n2(ze5-dRRSl0JaOL+I#LD!5WtdK@ET4Ze*hB%L`7fH%F+Ko2<5pLYaqT4BL` zCEa41v?{7?yTuo<2229LQ`S0Z<>)-_{fh&a0Q-39bk$wJ>Wa-z2)RYDhTTS2#`Z0$ zoCXV2cG*CBSCJ#>VzadeIst2wUySxpkp^&G&&a;E#^!w1LlRdO4++7-3HcK1&Ow*c!F cPW_Md2WsVI{I>VfQvd(}07*qoM6N<$g2DYSPyhe` delta 610 zcmV-o0-gPd2D1f_B$0kQe*!*9L_t(|ob8gaZrd;rhB?X}{2JamW$u#BeGJ3u(4h;B z3`HmB=t0Ot@D?LO5fK{nOc{)d@W5y2k)mYjWD7`#P9|W$-|6^&)KNm**L~gBef{&Q zs@GY*w&VQ+flDc$=6EW+((yj?xRg@9&hR8oSn8NboCL1rddLmif6n?>{>(d=kO!6) z$~gh!M*jZ%V^En2d7wKzx|tI*K`mwdUj9_UUFj_&Dl;4%dkH-xSoK`-D! z9_Z-C&vGq4jRh7C*M-Z53AnHi{FRt){QPX8PMq0J&=#_C%;B5g#R?N9h7foNfu`l~ z>;R_+-?C5^Tns#$#B#*pn~$3u7e>yop#Mb(+=oJ@TdsY*e{UO%BLrWA)v;k~JI2_s z^yI5)&!2(t!V8Ta3g>A~7>1T9gusWYh%B=FSR6f|GH9XzzbDp_1<(L|K@x;0IC$4` z-X1{dJT!l+FpUT|xZmpBsBT0#XjDjLNDajMoH`^kT2aiwd$=wowvMzJsrk`pXfFy120*Z7ZQznS@e&E wpeUm*C}Ow4zFp7=RD1qdfCVa8fcPKlFLVVNVCOJb`Tzg`07*qoM6N<$g7SwaKmY&$ diff --git a/graphics/object_events/pics/pokemon/dusclops.png b/graphics/object_events/pics/pokemon/dusclops.png index ca92a233c2ae6c4477a31e0fc65c283207620074..6e826ff65d2c89ab41f247444adb6fba7e9c3b54 100644 GIT binary patch delta 861 zcmV-j1ET!B2CoN@Bv%J?Nliru

`E6(GM(fN}r;02g#cSaefwW^{L9a%BKVOhiyl zM<8}(av(DOV1ZP1_K>z@;j|==^1(6{> ze*ghuOGiZir3doG0008hNkl-yu25uANQF|+z^hYk9>Of0mJ>HY_mgqW z*a*(|WVRDF7mSU+Vc7?A+?6?se?YC3g_hCChJAQ0y zu)qvrc>Q%z9kF#NBp4y1`q$tZRyB{EAWhC~of1gggzYosc$*YbNr6X#f0kvfU>$0S zDC9NP3s{fPwR*)`eUPT28L(GtCVO>rl+Vb;-?TEhw>Oey0R= z1PDD|-8n&OYhn?1w-PUed#F?rH%G97mbdOs7|kxhAiXkbexz9-1S05J%{)gA(uP1! ztsu#V#tAy3g-R9rNRW6Hw!?sO!Qp83*k|l|!agI0&At<)mD~wBtF+)499=>c)ipo4 n_D&tLGxP8B{?ggPe`~)0xWJjXi_xk(00000NkvXXu0mjf1B!@! delta 749 zcmV)&lMGWT9+t zOaYzEtxGIq3kpP#Cn*Ia`<}8#QBrKVVuyAqkel?8;{C_FBN+tm_HO^oLNEJgofTdV zXI?(S<>Dc;!IPJdY2o8POxuXkjgQ6ZQtyff%ZD5Uv&X{6;Z%9Ke^Qq@88T-?ZG0@% z=7XP&mxHiUrH4gMr^8=x5S$K##WH^E4=s1CCUFYW z=&dh?OnIWz?ofyee4ZyUF&P8aVL?44T@IW$CyTnA{nzxl+5K zX5$0{+TPDIf5aSC#w}QVcidmu(@(LXk12IGuobjixgXeJ#6<-|4=%@sEMhAtQe~oD zo}*0MBSG7Z<5tjCk?UEd>7xs|5wx7%H+xzd0_zYK=(^yn`t-(2;00000NkvXXu0mjfR`EAO%)?mV*EQ02g#cSaefwW^{L9a%BKVOhiyl zM<8}(av(DOV1ZP1_K>z@;j|==^1(6{> ze*ghuOGiZir3doG00087Nklezw6vwZ~6GPRLl1?3vbx6(tpCPe)Q3@ea zs@w(xQtF`}Bg)_my`k!mTbN)es8co~rkiLNHW(TSDM%ekJ_FD3d%nvF5E7LbsE0^D z|K;C%_Fc|Fa5wJ8|1(&#GNEp}KvbEKf7ObAIXaaBY;@ZND#ClFRB_v$7wdVxU*T$A zWji6t1%Nw76%%aU40pP-KVx{Bp6Nl}l#5mb{{DHKw^=BUU~ zv0dviGd}S`$J59Qx8LV_c<}*+jnkfEl|@eI^EEe49y{h4D#GqennrQx$arWVe{6PP z!DSPLVsf%(l^GO1a5=|3bGgj0M>d$}{n3f{ zWt}&!u;(`HCTSR7pu%=RthGMeMjPcWM+=rG)NK6G8k5pW%!xHLPImZ9K%}pf6 zr5t(@hVp>ruV2*r{X*z?TpW>nv`hxyx&N3T6WVUu9q8ImaNdUf5eBvT;@Q_^5N&cl z@I&(6r-k&wfJw{6mBeJESBJcGMX8p4S^BmG;iC5~34hHXh*ep@RIJKZ9&7D}8&}}g zZdk@ZEn0)$F@w+V<{cXDY+z9C_orOBgR6Wu{^9rmusmNFrwMY100000NkvXXu0mjf DQlow1 delta 649 zcmV;40(Sk22igUYB$0kQe*$GmL_t(|ob8oOs@pISfNjtLGD3zxA>hG_Y~nLyi~@ne zgM#1cohIQeyy{&F$*Q;Ls+$xVvd$SgvS#ET-lDV*x@fcrd>ZDPk*r8r_85=x{|vL8 zP5AdN;ARsvulSdvnH4bQdl#4qa~xI7!+sh1V-6E`T!6VjKTMeOe-;+I)9*2V&BXd4 zi`L*+ShSf%8kS(5PgtE>0l!uDUW6L&*$r_~MfRPG z!W8d$d4R~!i2`;f!sW2(!m?>B-0nExc`HJ@KJ@H66yYMqLE>GEQztzdcW$9Ps&LLh z=o;Qa5TV_C>)BqUe?SK&aK4lRo9}&md6Ax*u$m>N0y7Q?gp7L;LcNY$mn!tk)&3H< zgzEap1)9&b7%Z;_jz3ZXWjO*YtRVw#6>@z2id9!jJRBf|O`U|w zT9EMe0$6@%CBfS&GCCFFk(y%?TEsQ&xd*30ETO)pEl~z3f55`_1n#85%- zel#AEE#9k$IY-M7hbfooRQY>RKvAr2`cdl0dhUX-!Xz~Ij)Ci|#GCR=0C!NKu$2Xb zB~uITQ=>};=$RxV2%YyxMQJ36)I~%1J08JPSK8iWclxhI67O6;@pcx zjc2BHz+(_bf3AitBDjJ33F$HsRt()X4R@U;02*GOV&-7QEju@5$kHHq3R5Y;P~hQ7 zGUTv=(G%qf%hBDI!Rl!uoHGl^j|Ik)A3u49EKHuj+``EBn>>w+qD1y02g#cSaefwW^{L9a%BKVOhiyl zM<8}(av(DOV1ZP1_K>z@;j|==^1(6{> ze*ghuOGiZir3doG0005mNkluy?v3=?8t?WuYE5tHdg9g?|RoiD_G81Df|wj(#sih9=PwYUNoL?x}6`u zSD6iiH*&}wYX@Ejpyfs8Navgk=vX_Wf3-$o@HJ+`ZPRkiItI;CqPl8dWsW3j0(v&& zBl+cJ1|sjw8C&AR9rL3OS$)t%VGD<>{cWQ8R@b=a-SCi=9uxXw_CHtq`ziuD{wx5e zTVvQWkh_c*xda_=55I84%DC$(EBr;8E|?Q>=cVeA#}lyQs;9&=#)zJ~et!-bf9%fX z4%TA~=8i2(hieRSZ)h3p7!ggF?f%5-cOG)!z18#mgIohdK^?CiDd6VUX*bZr&ZYz! zWOiB4oOP}rvm49;Ws#ZJ%6c&Ofvm~jKJNq%u7O6c{N5J*$yra6qCf^s`M80!t;~B@ zw1W?Md*sdX!B7HW5-`v2uZZ`jvo`v0mwnZd<2`~jJ~00000NkvXXu0mjfu$UqP delta 505 zcmVL_t(|ob8pduADFsMJ>g3J|fySG|+-jnAY?2b~|p? zE&hg#m$f~%9z4B$k<#plg2RP-Z4Vfw-u13`{j<{RH7f<*VNhnhV$RdveVH|pcX-8?_;Ba^s8d!yX{NA;Q#O8>X&LGo_k0+hvNBUbf6o5bX8*{5jz0^4 zd1wrK*5q!}O)f#l`@=7su|hXovVz}a=mt3v4qmGsc{~9+u6jzmVu;|m>-Xo7wLQ4p z!Fr4V@6fVz7-Eone?!aKP7wgZVvi>_fAE+C@2#HiALSYV2*FZEIzqdtya@NzNC=ddck6V+mm3i-q zcJv`{kGxqvSeHP(@q~(=S?qRt=4m59{tM{IPN6UxV!$YxZ}j9E2v+EYWgB_gQ2%4v z5k$clQd7!!6eNz7S$DFDI`ED=%&|hMoWb02g#cSaefwW^{L9a%BKVOhiyl zM<8}(av(DOV1ZP1_K>z@;j|==^1(6{? ze*t1kM@0Xn2lB-L00B2iL_t(|obA=UYQr!P2k?6XA>%be><0+w$QCf!J2el`hs|nJ zx?A`a)QW61sXl63k}E;ox=`?KzdPyva+UyWwbfRCRpfpbtNM-7gIL#Y=eG@VuN&Fn zhpu8KEYseXVjTm)LN$tVJP?{07r}gHfAq};gG9Dhff-hVZNTJk&Vo56=lTFE3hzL0 z0o8LohjW&i6T~NE$V#-|q-_I7>vHFx3rANMe_lO0b8|t3;>}qgRp8AJ&^6hAkPPP1 zeb5k4xeG$i0_F>&HW!YF7k5GEbigrbAXl?Zbx$H@TM^sGL=Esh{3Op&+xprnTTrG9 z(6`o2x6s$Lf$&zfP7N2!-0$k7)dk+xb;G9x-!wfxq^u%2rFqV~xJ^aKQ3mEt9H58p9C3w6 zQAb1_ENF;`rBYI<5`TMk5+^JGT)A@PS5ebsv)UDfws{>^&NjHp7fPMW3QO+_Z5~qr zset%iaIV22Ry43gy_y&3bNaqO*(``ReATBH-H~Gh(}L9)^)c$}e}3EdUiYg6VV%$G?TU|c@QkThrCG|)+= z4Tf!ogMP>cWek;CW9%`Ht!%%6V-Fg;n`C}-U9T_N@tmYxCmR%fwYnW_+VlFu=1NZI d|0n-*UaD@@6@6|24SfIr002ovPDHLkV1nDwepUbg diff --git a/graphics/object_events/pics/pokemon/elekid.png b/graphics/object_events/pics/pokemon/elekid.png index 10ef20de850f405ab15c71deea8e389d953bc5bf..08518beec6503a7a9a359f0b8aac04a6d8822ba9 100644 GIT binary patch delta 544 zcmV+*0^j|E1oQ-uBv%J?Nliru

`EFEbulAJqT=02g#cSaefwW^{L9a%BKVOhiyl zM<8}(av(DOV1ZP1_K>z@;j|==^1(6{> ze*ghuOGiZir3doG0004)Nklah$9Rb(4W<7tcU_PrP0LjnRY#S~La@qZ#?Zo|46XR>h`B=wn%F%;H7 z%i!Fc>oN8M3|t2M%GJV~1|f5ssW9R>-Hh~$GVpN`b5e=GyzB?`I8vgnTxX!i{~x#P;L zTZa4Scr^wZ)S-y0#_7^&K9CEMnXW`LFv!GZXExZ1hCNch>;{xSqpg)N&Z7+h i>~PnI)$cp})%XOvYyo6!Hg}u=00008+OAwvm|Jcb-h?)sJw=r zK|l1}8Y4nM$Uye8TjPpS5i*onKCCf~XcREWWX#-4ec2RK95Bcde;mc)H$R_VA-?1z zuYqTX$B2G%Q5X}m0!d^%y>*BQju!iu2DU(HHVTFt!b~W!f~%nJi;8tw@e9+|BoU;!L8_hivNk3W4=p0O=FAZr(FI$Cta) z0LndW+);-rZHJ(nph2lr;ks4B!k|#MlUv}Z2JuS%c3M#XCyb8Xf^#2ZDBwppzs!DL b;jhLgY`EG$*aK05Sjo02g#cSaefwW^{L9a%BKVOhiyl zM<8}(av(DOV1ZP1_K>z@;j|==^1(6{> ze*ghuOGiZir3doG000A+Nklf}6q7HqLf>HUKy3|0r`28wCgITN+cFw@hIe+65t z{F1)jTCb^lhLL01bZnY;68jy&Skb#k-S7<^7;W~#z=*-NW9Xh?l-jvZz=|X$5@#{! zy_~#5GVgt|Xc{0j^(?-!AUe%qywwQN;{BrGoMi#!oWYB(ZwXn160;?A8iT?CD@*Of zi%#>pS0)u57mJ2{jXlhHf|<|H7UfbWp;l!OhdH_PAR?gJ%nD}#o8GOg%STN{$oF_1=_q0fZZx7 zf`wq8bQ;F*KlJ+r-4?VuBhFJgtxK}~^!Ro2>GMyuV4DGQI%J8@)0pue@^c4H7(D5|4ASiw%23H=S9Ps3ltmuG2`l z-{oKEF6O18#Ypk!Qd>*a)Ekjez!{eYl=|ba`qGwcF`h5f`VyR7{&lrWM6GFYY!tI_ zB9#g&2-mLo;((r*y_6<)i=*b#j_o2Xpy~bx<6Hd-(t9Bo>n6DPe{Oypw}b~8vwls?4;?(Y1fD(!O}2-ZkPW}V1gDfeU}@6W2L58F_ delta 935 zcmV;Y16cg@2=xb$B$0kQe*=I?L_t(|ob8n{i`zUH$F*p+K8(&o50Vtlo*l47dxMit zQPS#%v==V zm#qyh1{;p^)BJ3}RVpMkkCK#rGz<{NcmPiGvk_7evG!w<^%B4UI~Qlw)!SQ%UKLV4#Cv>SA zcoz*ah6JN^cY9$9X-LNyQf7 zQgITAgQ*yuSNFV3D9!4#TC8D^=Ne?Mbs`goMlY}TI$gQ!=Z z{+flsd|g)q6u+tlclYPt!o^XBjIHP#_tq>nnJGrI{+BDUB-&ul37xb0mmt~tceA_M z>n3fw3c7Gc8NI0u6eqOT)HgJFQ_b$m$yKu_UA9KC+=P+J zJBvu3rVXRpfBz>}A&W1g`Cd?QNSi+Z@Z03W?9=;6*$8xb&4}1l8mf9LIiXX<=*8>F zq+pjmtJkRI9_uwF*}J}a`1rshMu zy-q$~7wtjoFhFb8r_--M^L$19mUr7?;HK>HwqGZzf958Qpuc^(q1&P@6&)50Y!y8i z)znXEid#lfkg;Tu)i-U+ORHJMVEgp2+HQ2M>2P8D{meE>g^RNXqHi3IH_o_Z8?VE; zy4sPqD|cLV|HSA5pNU1)f(0gggK;|m4jfTiMG?;x2cm&H?FSp~<$SD?MhxKNoO>J9 zk4k%xe;b0*Fz2?-wL#!=p-)-^9=N5WXUrWUeml^H#LZ!#FO)GE1Ed9|AwXoT>vJgv zfRd1A1j`G95i>*J177E02g#cSaefwW^{L9a%BKVOhiyl zM<8}(av(DOV1ZP1_K>z@;j|==^1(6{> ze*ghuOGiZir3doG000B!NklVTe1Wl-6ge<>Y?g(9z#frO z$DSrdUQUn$xj8Ugg4G!OA-39lgY%Ihhnt)sYc9cR1g=tsG^x*uHL}UZyOU@1E_vb65pw(Uqr6xgV>}#}MyrfGw6N#3`4L{q zBV60sgQ8rOQO%x%;Ntlq#v30h-pE7jF6>gpRR+PO>nw`~WyZGWI^JS%h&_8OQ6Z{~ zYA>2yVvx~6b~MKspC96r%i*?P*wred+WhTVm*`~f9pYc~PaT~d;FB)t*mf>he`SO= zgMhS1t1gplmE}M%6>{((cS*fl?3yYgwEeoF1REq-SCu#YcCSS!JGUR=69SVTv1rJf z?=u8$kvKH;AlJSz6*ZoW9^zB=zrze)?Txq3DuRwmp3(HZRoV0UXZ)k*Nj(*g1TEHU zD#6h{tBRHvuj_U4qvl1;g?AYze=8dHHXcIu*S$AGzb*KEwPaz4-eH z{o*gG{j6#Za$d&oe7qYsWpgBlVN`O?FdY-}@fAI{1((Qm`+k*`;Nls*ru5>9+HV!F zbB+v8H&TvUU2QBk;xVw9a~K)iUeRqow8(BWlzzq{W+k|NCf|wn{VM3Me>Jtm1yS|KLXc@S!EUO;u8XRUdJ~alQ?D z0uC?JVL>cs9Sj34po;;wsQA)#;FTmCXe?$Bq=qSHvm0Uc+R(m&<=kp2L4D`E5Mu3& zLdJp30)rv;|NMO`tyWtYf37p~6AtPIi&+UuF`GqpB| z#vUV+6_`g|a(fe6mmOh!;_Olm>z0`?2nz9LGMP+;AGBcw)K57w1VItB%=RS>WvC2v z8OAI^We9OQe({;v#e>7m1xim5kBLn!Idj#o-As@BX-9%Naanp(y z0K8^kkg`OW|Mv3w`(Lf}>z6T(_Q=Ova&CnN!f@2#hxLdpH3rk~Uonfo3V8B3@VX8L zDT9T4H=F&m%B}(>e+I#O&S5$)6u?#HsgI*?%iUC$go5MziB%K!iX07*qoM6N<$ Eg8M@kwg3PC delta 1018 zcmVeORTwjqQv66+abmZ0f-vVK|qaoHYv z=z~B$ZzkXGdoxdp2>Cz$D`D|3Vv~}SOo%@ooaE8y6x+Acoz*rIe@;fhz#5!j5uadd z6WlcA+Dxoq0D_}8$JqWog^JhlG4@BnPQ`5oLE(p@X|T(7!2OVqZjLbzre^0rT1>2W zmp$sz$x#lIFq}ReQ4-7JapOJzn(ZRI;bw5T8-l++q0=AM7)P zJ*V49$U(M#@sKXACx_U=-OZRUL3;orXDgF~DP3f8|w!O1@3 z7V-R{+og{Q&xgy_6&D@dj@QHaXj2aNF0Uy4(3Ps+Nr^wzfBOvkg?xUwmajj{ED-bwjdky_`|dHTKOuoM?t)=rtG&?T3%w zY+^Bomi=&&7Myimwq+DFDuS39Gw(tLG$}blLlCq%f6e-F?!2NqanUKW_-mGCzIQ$0~Qy3 zUGi4&@eU1?3oWyn(GUccVvfU@GA`UQH*Uo`H?X4_H!|U@crt-SCUwau=)JzX`_=PO z8#9Jfe~gA8XuFI%o(miEJA!o1kk7~JQ-l>K+$$OYUNJBz*$|t5^?3LGYf--aDz@`G zN^Nd97uqE@JnHacJ2?wn!!wAOpwL129RR%Qf^%mM*IsIDg0ssRY3gYq!&=+5%d&AR0c9xcZ+3eJIYoChsQ7d?{EMwjyrsue^%T ouG#(8+Dm+4*!$J~i|QxiAEMkv%X)b*`2YX_07*qoM6N<$g61{+PXGV_ diff --git a/graphics/object_events/pics/pokemon/farfetchd.png b/graphics/object_events/pics/pokemon/farfetchd.png index f07591e40048c04bb6e635c95005acddeece708d..c8093e49be4a0bfe11a6513620a2719bbadcdca3 100644 GIT binary patch delta 592 zcmV-W0`G5)({Yqs;&S02g#cSaefwW^{L9a%BKVOhiyl zM<8}(av(DOV1ZP1_K>z@;j|==^1(6{> ze*ghuOGiZir3doG0005VNkl8nu6a`>D0r@cL+Ahf$z>~eTnUb~dl_kzh z{Vd&dD>btU)q|&mq7|SqoJt`}bujN`U$oTL zA2R(fp6nm$G>^Hj(<){z>5@acz&eY$e@}ygG%TpQn3*VG6|;uK#LQFK#msn8WHCR; zLgGdxi-b7IzOjg1fFuEb;f6)bi(dAnw++l)p3GwIF<+V4Wu7nnwh`AIvAZQMuv$^$ z6Ue2+mn^inew6)fe$Y%nA)&enyiX8YyOiMXYUnYruJ2Ieb6}gL%TrrG#^lbrFMY;rSVpycX&k_UK)MS+`{bQyxj+gX0$?qs#Fk~JZ;wJu)#}S zLpgYh=F9t+cN=s9qkZ8RSbjwXZf#)3PZZi!&L02F%(FaaV*Kcecpv=giEAZA&bSUf_W3C;I!TihfxvVI%ux-ShA@+~N z2i9w9d;x`&_?E>McQ3O0a(mWHKq;Y~M?NJ8qcaKNsm2}xo8}QUn#fE6z|T4L_Tg!8}eiyNQpj$2Ku=DvJqkGJ>0lN6f$Fd@sK8PCK!C~ytHFD`A`Qn@pEY+ddzkj80MQOsC{R@jVw1PcW(r%p z=d!5-CvFnM2)l0H(@9Fo)&NIHGe*nTRiT%*P9gAn= eyc<36UgtM$nWjYfV_{qX0000`G3^hs@8Sel902g#cSaefwW^{L9a%BKVOhiyl zM<8}(av(DOV1ZP1_K>z@;j|==^1(6{> ze*ghuOGiZir3doG0007eNklC{sTe?o#Q~3(#4_wf*h$+N!Tfq%|8KlmjQ9x5}07GBbb&q*GH5V{0VqWv4&g2n|MUWa4qnOWYJ}Vec zz0DcJ<;z{nqs|8;43k4FAb#|u{t)(4<%XRNB>Y23+IO*REZbg+5mO8UT)E{Ne&r`SMzC3n_p-n-hO)UXg7TKn!q>fL}4vUY3A+_etMTVvKRX)p>ktM(2{GVkIh zA%<$o+}%GYQ*I_ngF${;)~!}b`X(L;s)QhW@ssY>tT(Pk%-pqTHWFMraZ z$PlQgF0*Hv`yo1e^u9d~14mb)f4KnCKMe!og2gB#( zUh@WsM*tmy>dFZ#n0Yje0&aQ~7c29Ix#6>Kyu+E1O|o6j4de4O!+ZqUV@g)4tRQm# z%!?X+Kc-cu&H^s0yr;M9P8>J$_ChesN1!;pFTI}If4mUf2%?EBo!fTBf3fH79xrHU zmka1Rj$?QBJljKLf54p&fYN(m zzexkWKPap1fHw?Q+kD`(BSbhLR{z1inD@I2|Lyt(6(c^to@N;300000NkvXXu0mjf DvlL$z delta 661 zcmV;G0&4x&2IU2iB$0kQe*$nxL_t(|obA+4OWZ&d0PuHkk0HElZdD|+1y3T;b7>-i zr=kei?L`)$q$d$e*LVqm!qUAg`+-Cj&#n+HB@5lbuaK3s3KG&R=Fd#%ghHWE@ZEly zH}8d)%mBQ^OT5HCi!Gzte_bC{qsj}$7F1aB`Eq50ysnYA6^5JFf5flwwfc=hg<%ud zb;S@{#tnTLgqF}$(H9%Q)Yo-AEIgf?X)tYIT?>Vl>WJnN2o18?sMocqNSMyO!x)o@ z#BS74XB(6Zvtv{dKZinpO6nzUv~4z{_bhS&kk_rVkEeB;%RDr!c$A5EG1S@ zS!VwGTi&&kkArE_aB{_)X+W&Kq(PRDda`()ChY5oZ+7$if5{bZh-XAoLh0htXAO|w z7yAU2)!icD*^^P)fVL&)^a+Oxf^QjhYs!1xR{}}$Gy-OtIh0>fzn5Ay+>oVKFBMB vm^HLl25iH53b%pJ{)2VC-|rs$xA6-v0$LM7bh1SN3jhEBNkvXXu0mjfOioM> diff --git a/graphics/object_events/pics/pokemon/flareon.png b/graphics/object_events/pics/pokemon/flareon.png index b7cac2ed234b98011da992eb27f2faa30f1a6e00..f4f4d4ffb736b70b2555cb6db0266778484c307d 100644 GIT binary patch delta 822 zcmV-61IhgQ1&9ZbBv%J?Nliru

`F1svF=Q2hV^02g#cSaefwW^{L9a%BKVOhiyl zM<8}(av(DOV1ZP1_K>z@;j|==^1(6{> ze*ghuOGiZir3doG00084NklXO9}k|iAE z|0*1qq7F56{5Ra#pfuAhCW>zkG%?0rOl+Opi)G1&+dDcHswp2y?|t)r$q0R{kM(Yr zl&@{PZDBHcW#f(hGdF#CA+|_-aGx1q1vq0svtCW30Fnz#AXa5sEeg zjL<@bWZL%`696kEQVDq7@pgr$p2L#?Mre}CgK6JmC!#QBo{@r_Tr!&K6okB%^=a)7 zaRKshY#J}M*hm5MZlZ;ef?JDGxUKo)N%#Y-5>P9LlAP0eWqfl0X8`wi{tzSP5y*_TXvT!5|0H*>BqU$pp{bAG*KjQ~w8ZhIexjL#fc*XgCO4{M+xD_aql8$ApbI|7^n=}HNn>mC@(emj>#E)!B&jGYd+LS2= z@zmmCE7Ln1h-r!PK}a87-cY}7gLk}s0~j~}r(|-B9{>OV07*qoM6N<$f-qQs APXGV_ delta 682 zcmV;b0#*Hp2l@q&B$0kQe*%R`L_t(|ob8prZrd;r#<_IyqL*TpK!BHc30(NqG$f0_ ziZ8(|0s*0`0a{ZR1Ew@c3nBA*N-gTBLP?8E0m8{Y{`o%N@s48bYkZAQGXUP3_}EC) z_MM3j>UU}T_QYQS{+~hD@$LG=Cc_Ez%UAec3^?cXA1BDOK~iUlf8H`#uP|c=42hm! za-ukoQUYjD&C8c#vadF#Sz*Q=T8IP}ypfuhq9Q36)VcptuQ8F6a;lk>y3#)bM(r)x>;eivEBll8DRh)xZ^2+%Z0w( zON$gM$_ z4lZ!Vzt^UAp;7{eLX=m*`47m}n2Ad9ju?z>qQi2sGo}WImB(MNdFClc8!vcTxNv^S z$-X1I$390K4grn9vJ#_#ZX=#*KPiOLg`5SJ{L;mpH){2ve^I>g#<;zjnrG(8z%@>n za1J?Ga^F3S27$*uNAK`EItK_?4Rini02g#cSaefwW^{L9a%BKVOhiyl zM<8}(av(DOV1ZP1_K>z@;j|==^1(6{> ze*ghuOGiZir3doG0009yNklRiR;)Mv&%EI*0i# z?Lj`xp$X(cVf-E3%c2~HrZ?x{Z!(u0W}u*{?Lxx@tiAV8D%q09$r8~Xm)!@!`AOFQ z{ohk82ciGtzY~GCI?h4=VDf-}A-q-4e?QLd*?A}RN|8xPC$ z+Qqx|Iy=tZGUY3T3EksvV9ryXA7NY~yjGDT+730`+DUoRN2Qc9?{KFgFhkCSTVm287 z$g4R~7n8q7sGLi3Y7#KzZBC!H2_6~i`^j^)QbH7O0T%V5-gu+A6vW68ee5JR z-pEZ!nt4>v&AS18_LAhaV296Y*4Ab;tS_~~_|C8}9(#?TrCW$gAhRu8nvsweQ*FWs zJ~C;ZRsw_+lah=YeXN?US@rzhwpk121}X-zAftE$%+9N`BbMrHA=i71&!{no!td{Y z^m|RoRRlB5e*jz>QLF{cf2QKw2xt=*AY`!0U^gK|*dA>&{$z5Iw}OV-4&vot8g!0NPjlxy9$aMbV$~$jKhMEMaIUyV z>~V(kV(vfc{e#ihi9dC)Cxdg@{S&a0GTVP=Vwt(v3r>6&7gFxMK#H)~f1#))nUmKi mA6<<5UhZN&l)L#~8$SWcz~&$n)izoH0000- delta 854 zcmV-c1F8I#2&D&*B$0kQe*-W{L_t(|ob8m)Yuhjs$KBwwSV~Slm`)oDlts`bP}rf^ zi(!yM{)jQ;Qx8i<-l_gyQVatf`k(Z$9NLpQ$2AKStg(M!OtK}{$%xpFV|x&skA8gL z_dVHiod5CfMCkVRa~SMQ?(lDf+Y5vJY@hwD2>sN?;d-Zp^&ghtf3koL~O*=980 zM{7nY^E-T{MQd)^e_47{ggNI~!@eV$iqH|lj9n6kG+Sz}BEO-l36+r!=(!%N*{q&O zH%lLvl)lRz8DUcq8m!9eWA>8g++xyIx;_}<)?w4{y zjX=%y|NItU)~|mT+JJisFb_Cusdyz; zIj-lOf~-D{f622~II9F(d|a`zHY3yOQ7H^=HFNE;Qwtipfg}e!+rYUVnUZ3tOlZMJ z#`V{V0pntn<9@A=WYZPPp5K`^E5S@dNg?65pY(y6d3kpvLf#GdYKze^(FUFA_YXgU zPF->t!%XoTfO9R1l%PITbQ1&VC*t7{7G~ZlHpS43f2PM|i=*6J2kvGAo5Bdd?0Ll) z7TV%e3Ff}IXSzHj&(Kwz%G1@3LMhlC z=?-y>$2}j`BaFG}(Z*+QM`u|hsJZDNT8@Wd>-uyRx9;QdnGg3mfqFg1XW@zD4mQ^r z%8GgPOsMw@JNKh#Xkk}`Cn9L^S_r?zN>cbXcEf|n#)S~mEuI!zthV@8?jAg`F$&zw g#%d_D^Isc30T;j1(eLoL9{>OV07*qoM6N<$f{nDTk^lez diff --git a/graphics/object_events/pics/pokemon/gardevoir.png b/graphics/object_events/pics/pokemon/gardevoir.png index 4f22bac64411f334da58eba2adee4c7dd2a74b77..cd416d612df6d801d1cc78c7ab2004920450bdad 100644 GIT binary patch delta 760 zcmV`GA{(8?9Si^f02g#cSaefwW^{L9a%BKVOhiyl zM<8}(av(DOV1ZP1_K>z@;j|==^1(6{> ze*ghuOGiZir3doG0007RNklTonEcqMSE)_%BdnO$^a)wmuP|0AMw(1bYa1e$l;(9%z0?#KOj9v1OhYz~@z7yQp z26(84dZ=Yd$v2ru37foaKFI!c#LXt6f9vB!-5>)mJzq2F(17;Lp3^q3F)XpzV7O~0w9~$7fAVY- z#+a|J<-evI61Cu~xAS!a%`iS%1pcVR+1}nDpxtJRts7{DvD4}Vy?3QJ+l#>DI^6(U z?aKDq?(Qo;Hdvj@5B>i4mNa?Jd?DC++vz6#=**RM`CbW9GNTz1EDT%GKg7O zG8P#P^6TT!MrT_yNuo++Fb0!>e{jisG+#HsXj=Xgn=NP0pW(ZgZh+&_W{1&v6s{9T zQFI<&u4sinZ*NAIX!yb*nt$>};PojdDK7%QCF_&u|59ExvTA^}7pbn=( z{KkQ&^XLT8^5etFQ-XF8D6bkS)=N$`Sq55zcwvHW*rayQ1yrOl-N%$Wf6g$E2kh9x zJPOF!1-q~^k@v>qq2|bH%H?v(_2SgQU(_9eT~mSf1_QW`v#)s%4Ipkw*az4}i9K;k zw#&_ioO@WnOU}7@yN)`N$rIw@pLB8n*s@lwHMrS8oTE|$H<;|Xa)t+RNIhe9Px+K@ qGLaeKz?&7S>;F6HI$(v|$7Q0000h0fr5r zjt8XE+f(3H4%<7C?_t=d36m-R+40!x4s;<-tul!`%AVBN>6zEtUWid40zuKHcL6|e`!$o0jCWN z14aQai|4T%b{D8xf3pF#Ui19n`ubxo9oEm~%d-3#pv(HUSBgx?HY>$Lg0!J&{b0UQ z)nSG%tEy7^FI@(;pCjkOX~6HX2+6Z;nJKYcR_AwvZD104PR_Tj6Pr1X829hqju{}s zaSQQ9&@1Ttc%G2h9d`Ig$~%)4fX!!Rz(?MnDKqfjX(qW_2 z!D!Hm4I#_rUHyiUy9l)VhMMa*TJ?dflARgdgmgh(p4wS+ONm!eJ)s3xVLc%MUN{Y> zy%`=&>miMBWq3X}yq+}?J+O`xb*cly5d$PqbZhyB6tE;#;evXG)O8YviF6yh?M1n&iqBv%J?Nliru

`GD;2A}i$VYZ02g#cSaefwW^{L9a%BKVOhiyl zM<8}(av(DOV1ZP1_K>z@;j|==^1(6{> ze*ghuOGiZir3doG0006LNklD0MX@6aTXDm9Cb z@%AmB4@6xFKdRI&KwJ|H91w2S4tXU@Jhsn+?N}s=o_Xe(|00!Z>@v1J9VHZ&!g|UegWl2f;O>I7P=Dwe;#xdB7MP{J6BLh-6hRFb0J%iwDJ_~^WZy{ z*~-6SE@dY~D|L{?Jt20&W0G64gAH@I&rfuKqi*CT#8C@rdm>BT@*_cgU$VZ0n2SRp zat!h#0joernWXc$=V}qU<=imHLxJm=3z+9gSb|Dk%>mMB+_Rb{3_Dgm&S$b^e+GBq zTu^%ULgpTg0t3R27ZV>Rp%jpn*}TIo7s(mK(2kSP^EiWpQi+6vlGC_nm~KG_E@nBB z4Ko4fF94qb@=<6!dtqdIWnK-cPWu;nw#_Vb#flu!nmKgm-|*uPOa<0+H?6P)RLZD& z8uvUO!B72lSaFc;_2Ub^;D`BIe|nx*SQ=vuDcJIx_uoLI%MKhXQ7#-^zsD}B3GrLR zuE#tIF^}U<;zX`#92cS|*OY_vz0*NvSV4-nh5HOr`my;HL#r`w7Osm+{w delta 534 zcmV+x0_pwl1?L2iB$0kQe*yAIL_t(|ob8pdj@%#+hLO^nhoQE&N@ZQTlzG(LOK@97 z1D33-A_hyoR1xOD2Jc{*xJ|LYgyfH5eg<~zW$dY^p879@VKl=w&UjNv1tUp1Chjo3cE6m)+Q;pdSYQB+@k9=id*OK*6V=lT;Sgi7uL4zQq zY}Fo5yqCyhISW=fCWM(ip-DXKVbzYN1C`^M^MZI{MGTMJz-qWBVCEDKk4Aw3k>X?K zE*nY#v@ef5ws#P5e{|U}@wS44Qmuqe$sA7%xeFWw8FGS>8v*whfUf{{Gc<{lA@hqe zqe10#+Ay)7cEgaY=mrIIaQ6>*`vW<_Cw93)1XRi>o8yW1EBLLy$BL`$&Fee9A^O<2bNSAe|BOJ+kh5;7Bt~z<;Mxaw;61x_+e<2N5ULU zVc4up4E*AYD?to1^xwdQ1JMMG6VxE6FtA~Q8pJiz`SYp;m*F^ZSn_X!D{+4{@l;ix Y+!j;PLIH&b3;+NC07*qoM6N<$f}>vnjsO4v diff --git a/graphics/object_events/pics/pokemon/gligar.png b/graphics/object_events/pics/pokemon/gligar.png index 7d89d630ef0a7e3997bde833f08ce7ebe7cf718d..3b9780538783e6dce1f1357a6217fc71a035a4a7 100644 GIT binary patch delta 1019 zcmV`T1ud4@C)of102g#cSaefwW^{L9a%BKVOhiyl zM<8}(av(DOV1ZP1_K>z@;j|==^1(6{> ze*ghuOGiZir3doG000ATNkl zoMIQgE?6Kbye_VBV_lJYq04*g&;8dIHkh>v8Qu1Qq2e=Cj5dKlreDe** zG(x|}@9{qxlpHgr10a5Snz5grW&kXXe*`d!cu&DAH$BbhYwf0|8KHO>Pji?#!9bzl z2KMe>A)MGH%iRF)UvpS|R{JtI9tuQ94&u-&wo4L7co;8GyzJg_+`+s=Z3(7jjpugF zavu*1emxY>>;wW?2BQT{WR9hN9}dT|J*QTZy;QWF*0G5RHZ1oCi^cghqRBwufBc$Y zs<&g(>I|19Bq(cY99ixhQScMU=W+rL7nm4Fmc1i{)AO>Yj%`5#-hjaLk0}Vu6gQ3> z8%I$x0fG5aY5`s7R(keTimqkZ4r-=3H?N~WWE@Mml(NL|)i`o&97SV6VmX&ml6VTe zs2w@hj!eSy8#!tnSWb$c*9vx6+xQbtp|SqnyZz+P+x}$O+xA{t|$Yh?7}Tj&J?y#=kOeup$D9XdeIo002ovPDHLkV1oMv#ZCYK delta 915 zcmV;E18n@u2;m2iB$0kQe*lp8#{Xzga?Y3zfQ0FF#$kG$0kAw1z=(+xMfZMsozd6Ee^0M7Ldh_m;W+n# zkw(!w*n7A~ICV>o`vKm+7O?oH31#p+6kul#k~k=KGZHCynCww9>)-L*!>&eM4W?Ct zcW%w`pdwOChXRJZK&0wuw5O>murlw%;W&2Z)G2aMns%Eeu`$7hi~3Gd#iQRm5VVPA)C$(dFg_|z@S2*TjVv9^wIeHjdyBMx`_nWjW!*I!YZIb2i{;1PtT_ zEY~u(0%);n-+ohHzDa%e02t@Yv2|qgX{8y7>0aY#+jCowxogC?zp7e{i_np#C@?23;D`50$g~LphI4-G@oN2aoIXF_ ze_ucKjy|m{>uUYr1f)n5g}T^y&;rUZBvHGFv6O<{J%lDQ9MeDC0$w~WkAHvG)#9V& zoArEoeEzIgizj!4TPc+?lNT_&XOkfC&tEj=>ytpwe}19m)t{L@6xGt+Pk1~BJ_4_P z6MaDG1SYlD1KzY=(KZU7y8?K=ov-_Z(eb8Q9sF-sms>f1G;D(~Rrz9FGZb6Neif$7!7DIK;y|0>=Cl4?^6oLOjFSZAcglHCLJyr+g?f zj86&CgGe7vjEP}1EQv_@3Z3&%A1(}8UgB03=n_Y=h{-wA7dy`XkX|wt4Z6grBXM)i p_{9!PF7f53Ff>YE@PB6f3p5@MClh($2>?k&PDHLkV1j}8wABCr diff --git a/graphics/object_events/pics/pokemon/golbat.png b/graphics/object_events/pics/pokemon/golbat.png index 30907c1c6ac4756c7f18f43c083e385c5789ce8a..0b176b58c01c8106aea93a41564e0504e05ac738 100644 GIT binary patch delta 792 zcmV+z1Lyp}1?mQnBv%J?Nliru

`T2O!#BIpzQW02g#cSaefwW^{L9a%BKVOhiyl zM<8}(av(DOV1ZP1_K>z@;j|==^1(6{> ze*ghuOGiZir3doG0007xNkl`pc3K~$_@|%r{;@4PVeGk{>whW^ z;eqk~<72&diR>4V@T+(ve*F;E^N<1ce=U>lAxl)#VLaaGRqcXkyv7MYeFPAN#J7w+ zVyOcFfH2l(k+uu?W!3aFuzn&Y9dDSNG7V6AzFu*Q4e~3IXXvM;t||J+Fxf_Lk`fB#_n6^?1niXhcnU8H zRl6Cn;XFid8s2&jW5YM8?*ULwf0f!bglPcV-AnzDNZ%idOmmU>gnQG_dk_m7IQIz` zpyPMg@B(B(1K3(#3_<$-d2M*M^a*Pl@aXwf^~G{EcUSS`yqwjf-^ux20RKE34&6=T zBUKxosb%Vh65Y_h2a0NKd9!c9hp$~EAFIalc9nXse;ayV)GY_f z2MkKOYc$8JZUE>r#(=uz00XFxZ=F|DHU=jeqJM8-xr47Q2>%?L6%9aqT$p0W9$+*aloKI?TBJdu(v$IQSa&`Ns2u z@3QxGsRP)-O7P@?!Fl00+bvFoHb9FE;&mWB>g+UbP)Q?!lT6ie=NaV!FBTl)mgt` zko3LTFZ9S_l^0!rHs<1)Wqeos*qi2{=mBSDz3h!KH`Zrn2lLCEYGZSLWVt@;N{i_? z9AtyULZ1UzUk8{T>KBp|F9SX@i25G67J6b4u)DOQvmjaQQ3&G>Cp?7Uvq55^H@Ko& z=!rSt{A{bxket|)e_X(DJMYZn)0G;nOf2-u+H1|aN-Q4HUaJtCmn;JS@5dP}8`$2^ zexTk|SPkn_A03cEh)nmR9t~U4;gSM7^3b|!fTu^60q9U` zt@#1L-H;tEIR|8a;}Z9jaMCfJ4Ntn|{faf#C(t$dS%}>7f2NMnFzc$fx5T!mz8oY>d#H2K=G5=|R9a7(2cv_9r56B;B|K%FS{0HpKD zV|iw~S^+i{W%bpBTaZ{m?>F=SnH9SX?ZQxXtM5Ri&#QsUtZ1DJ-4k=b>gN&zig!yK zk;Q3|0dI$^nm+h(y%(T1hkp?8DT8~Zy8HM1T}}QU2ju@1zX7uZCZL%DKGOgI002ov JPDHLkV1iLODHQ+! diff --git a/graphics/object_events/pics/pokemon/golduck.png b/graphics/object_events/pics/pokemon/golduck.png index 8710232a07b6eaabec79d3d09158d28bb2935e38..288d78ae5eb9338c4e7155ba2ee92ae72552ceba 100644 GIT binary patch delta 615 zcmV-t0+{{D1iA%~Bv%J?Nliru

`T4J)@}2;=|&02g#cSaefwW^{L9a%BKVOhiyl zM<8}(av(DOV1ZP1_K>z@;j|==^1(6{> ze*ghuOGiZir3doG0005rNklXWU1H9A?0o$6Gl`dd8yUgOoW z#+ui7rMR))8vkM+2E8H8rPYm>FLsJ^f5MRFrIo_TBX&w1F=Itg!qeuBErr#jnRB9a zhBoU(>Ak0IMJz+xMV3cgjPHwz^lF1Or@(4YnlFLz>lRzr?$m_DTcT zi1&C)mX3j+#Ltg4?YHBeGs?y0;sYC(On98|rK!I%+C1)=CS6?IUA;kDzVtYxf39!Z zBkqD$U`WI7yDV?%IN{;;TZgWKoL6yjjKMl|~w_fl^zH3~R*KUoWF<^A-0m)xLJ5-%6@m!{haIR>=1Ta5!oH^@>* z3DcTj7=4c$w4%aS1MfwcUF>}0f35E3faJ&dT=y{$??^JB0p9K^h0Yo8zXxRC@m%A} zF}aun;(qAtLtB_}1wrG14it8wI+-0)T{&#mx=tC|@myqiv17=e!#-?rgCBdyz7rTA zZ!iGh`7CVnQ^c~ol##svY*__Rcz)#REB|Z#0r8M3U>@=VONJxmv4d!qqzmaN=PbaP0{A?Al=zdTr88sKy4JP+7tf#9 zc(uTRdyQ9$I|$&y#Xb%ON1AJ}UC$U%SU|mNbib%Vtkm+}wS5kB)rlGQoWO)C4R% zL~D{Go&Mf6c}wRBe^0kR2h<9x=KwAv_)$+&4oA=PMT$-1II()#eD`V!h}H9NG-?Ch zPCuHEN25J*qnaHrJZii7(F9cQCwncmdY-O7R0DpI6dX_>1C5;n`rEC+0mU#owmSpGMy3)RY}o(+002ovPDHLkV1n!E^CkcQ diff --git a/graphics/object_events/pics/pokemon/golem.png b/graphics/object_events/pics/pokemon/golem.png index 01da39ddd5396fda7441639c61670fd1f6618825..bfd7d02ceb2039534580313944b1cf13ec16b9d0 100644 GIT binary patch delta 704 zcmV;x0zdt+1(ODlBv%J?Nliru

`T5;7iAuDSpK02g#cSaefwW^{L9a%BKVOhiyl zM<8}(av(DOV1ZP1_K>z@;j|==^1(6{> ze*ghuOGiZir3doG0006vNkl8nu5C?F*0f%nQkfCD(6syWv+mE#qha=`>B zUV>`QHTQvBpKxK9Rn58NFr4RI46IJLu)L%Jf>#(OkUh*i@5dY{cq!{ifj6cBvO$#f zqVs1)6CDG_J1+fz#cDWahC&JQ022j7N$R-Z`e=7@0 zh$W93b8ZR%y>43r`loRL>us_RVCy?jK>M0(j=62`>k1$R&g}x13m3@sl^@VuCx?O^ zZR?U2MZtK?FYVR6Xb?mhmSk=hSTQ0Y(Yw`-+Y2w=&+e;|3M++&-(2f^sCXQnf>q!vWjw%+szlU;z-W^D{$ z3P@&g3P#blMNIm=wTa_<)EyOo80g%t&?Xnfehd4)w|bibqWgHk*wb_*q(CYN&ihT8 zp@rv;^3t1&_IYh6G{4Cdpb;rF4%kO;4tDz{dyMY$n+o^?A>UzP^)KA?UN-yn(cKSD z0=!=zQ-P<@f0#hS7~LPJ$bod=%Hl;kpP>Ny$a)bu5T*<1!-IUl=UJ^+rDPuprHgwKPo-|Cf=`j9mgz`&>Z_} z&6J>O?`dKRGlNYW1w#ueCTw@txIn3-lnPZXt}zKE9$@Qq4I!cL7FMxf-%8{Jt-`7n zCmiEj>PabkSQ>N9eBnLcu9<~>$3igAAz^w+ z91Bj=)(tI+#=|x4;ghBHK-s9!muqHWQ$NG@MYisV`N=KZg@WaTvZA8_q%vXGedb|i z;g^qA_N}8uiz^n`W@e!_AK>d}jb)fIMdDCU_(E&mHl1Fae?msak_(peWN`$CGM;~d zX$upx5Y0T!Gv*g1ak)Ig%x8-{i3c_|qNfd+r~ocPW-fsFz;y-*={pG$FEm}&Yfo`rOA7ANE8 u`T6%q4vNe=)302g#cSaefwW^{L9a%BKVOhiyl zM<8}(av(DOV1ZP1_K>z@;j|==^1(6{> ze*ghuOGiZir3doG00060Nkl);up9W|o1hhunb-t7&o?lk zkBSF=*L%Vm#;%sh!1EACRxlJZR~nX8&>IFufpim8UQmGwOI*CbdNXtq*a8fYe*$^t zb@CqoLCj(m^oD`s3Ma^YAmD50qS<&e^jC83pl|k}2X1ZjC#(?)XR~ji9s+Y#ML}?p z0ph(Y=9PJza>K<}Ytyv}+^1_*s5SB?=nU79#04c)9gHB^1-p@R(GOG}xt(c~4788D z3!b_36Y1Qd3-&`4J+#%4-8rVGe?5PIQXeo~Z~+bJMp3K9v7wAZ|m%nnG8ISabyKUF>|G1Sp~geU=&COoCxI2f2q}Q_)7P>JoXKfS& z7a1VlyJB9M$0_$*d{s7Go4`%FR)tz4Z-UNn9Z6hJQdPqMl3lPHITy`H<&mqI_Q^o| z$h+W~OFxm?ExKSoMA1Oi9@(8^dfM{`DD?r;1sAZ^c){ddf4^{jf1NVcdQV8Y&o}+~ z7LV))E|hRHGaxURl;ew8WO`^T+rzcx?%0-e&CZOA+mBv$?gJkL!7P>3m+UedL^WPB z8f}cdWU{>9t6p9+p>9jIeZUNnKH!p8(y$XB`tEU2n*CN;%II(Oog&Nsa42IWuQC@T i=lWH@ppWo>7OrnkdjTeP=5lcW0000`TF)pOV1ZP1_K>z@;j|==^1(6{> ze*ghuOGiZir3doG0005-Nklw z#naVuA}vcBXIqwSpg-a>_Rue6&=YW4e=1o8?rO&Qj6GcSQq5G1nxY=YwZn zE+)7!^IE7F%dA;dH8UXAj45U|$ro`>VFS=&cA5pI0DBlF9sKveoEZc_FF0lrTtnT87*pmmz*9THND=3>S--M@-Z4c7P)zY1;_U=Kqb&57PlgLP&KSE-BD=RkFO=ipt@%cRQbpMm4-Z}A z1!~9s))eZn<(s$q(l{OrDe`NHf6Cf+Xvx1bJ_^n^USPip440;_wAI7J`H^qD!G1+U z8umOwVLUrQ#NVA4DE=UNLnpZGEB48RV{b@;wlo@9!crZX;PY;G#|3V8yZerx5%$5M zI%ezX-db7kLovDw*xD`-Fva+f#_UeiQ!B!2WleZZ-IAc*CLgSiQzusZ7o+hPsTvG9 TsABu#00000NkvXXu0mjffR7nF delta 530 zcmV+t0`2|G1>*#eB$0kQe*x}EL_t(|obA;?YU?l%24HK^t+5I2&b~t!y2v6qLrl=J zhHkP;FVl5mSK>oG7~0t#0)nl`&%; zpS`AHL^EuI*m(JYuh@gGGjEOO7|Tp~-OHT&iap%vtjx=+gRjZ7|E$Qa-V{fR@{Aw_iSf0!0f;9YXrVtIDI zIxvmo01FlvI?}M4gK`agi{;SI?2{enhpAeCV$2)F!-zld)%)dz zrjg0?dCVG7@lS^}pI@5|HXuXw zx32p3MSa@xV2vmaf9-kICSBPf3&^;`Z!zb U&$c(K000002uVdwM6N<$g2%@WD*ylh diff --git a/graphics/object_events/pics/pokemon/growlithe.png b/graphics/object_events/pics/pokemon/growlithe.png index 9b86f60a20737e7f28b0aed2eac8cdd7c3bb556e..ecce6a8c302ac38aed77baac487cc3500aff30fb 100644 GIT binary patch delta 624 zcmV-$0+0RK1j7Z8Bv%J?Nliru

`TH74Fo$f5uM02g#cSaefwW^{L9a%BKVOhiyl zM<8}(av(DOV1ZP1_K>z@;j|==^1(6{> ze*ghuOGiZir3doG0005!NkluB>8KwKIw@chuVX*zq}?{c)=5#8G} zcCDwX2Vm{MIKLc%C;=FcRTi?jf8>1ZmMQGI)e{|pR!KY_+cjv$8r@T@VSnork=qSC ztBvT`hRy2b>x)ys*xmsx>FKl8(D=)4E(auO&9Ig=S?gJ}D)rqS(I=%E`_zoR>gLow&R1_lY1d7V3?s*MS)#ktkzn#&9%t2Ok#lG!OIzvVGtQ|*)O^-MR%w;jr z{rSEoe20aM3G2PU1+UQt%!_kl;{E3MUL&1AW?j%1wXV1M(uREMTQrG`LtcB@flN)% z(P9%0W58S^KD7XOf9!cr(DdKWO+SXr7L6hu7_kz1bA+$zX#n^*xgXBAEnFV$LwjgL zW|8j7njDNspJcX8pPuhAn@TA>?^k7c{EGPcFoewbk^qpS%_ji46`bMixlu(idfuOM zwA>-y(;mBKyjvSUc3@p?haf5edUeV}wo9)1W*)*$)!NZ6eP~nGy;4)qjAd(0IfX6S zQdYEpXR{zG6*f!f`rS!jO?QBEaiJH{I@`^4Cs30fraDD3pGA`~Zi|e`=&9*j)6jy} z^!M|~GVKf)?Y~f?@%P`aVT5qzYayJMqxtzE0}lTreo6R`#1CJct7etiFlGP%002ov JPDHLkV1hr70OSAw diff --git a/graphics/object_events/pics/pokemon/haunter.png b/graphics/object_events/pics/pokemon/haunter.png index 9529676ee0e95aa313197adb0138edbc28428b86..f004f3483ff72140cf5058f1d069c28803b16ef9 100644 GIT binary patch delta 561 zcmV-10?z%M1ce2VBv%J?Nliru

`a01&o`i3k7y02g#cSaefwW^{L9a%BKVOhiyl zM<8}(av(DOV1ZP1_K>z@;j|==^1(6{> ze*ghuOGiZir3doG00050NklOIRk zv1WNm*SP38R{a1FI-aMq*0&SOkz?$& z?vP_zq4OH50*7qKiRtpTE7IlQNmuLH~3 zkY(9xcmv}(7V2WPHea4)oBYhkF}3{TS_f>HQu^$>ZgFd2?GJCv(ous*Re!(uqkBb}i=>0AkzxdhBjYerGc$&ePrW*9ItW{zoW2A5hB z*MMTCH&g;Heo@pFNaw3zw-~0zPi=gN5gQ8_XIVytM+U6(tqj)?Hv61$jsd>00000NkvXXu0mjfC5HR# delta 458 zcmV;*0X6=G1)KzsB$0kQe*vdSL_t(|ob8o8j>8}jg(;|Masx;mX&K6u6`3hlTzW5p zf@{vOgNUD|*hQ%VnOZY;})B*IOd}fYf!we^hg(fHUs_Rd%8MBX=xOrJRSj8A2#L)h0|Z(8Z-on;_JHmG>s) zJTvGFo?HGxuan^#(RUh+ExFxJN2LX0bLpQ;}}oY&;S4c07*qoM6N<$g3%J# A%K!iX diff --git a/graphics/object_events/pics/pokemon/hitmonchan.png b/graphics/object_events/pics/pokemon/hitmonchan.png index 3e4ef93e1aaee099dd5c8129e5296fb9b68c2c0f..f8f32a50e13abf1fd1943b3ef6551753d0be2b2e 100644 GIT binary patch delta 607 zcmV-l0-*i21hWN@Bv%J?Nliru

`a1|6PaQZoPm02g#cSaefwW^{L9a%BKVOhiyl zM<8}(av(DOV1ZP1_K>z@;j|==^1(6{> ze*ghuOGiZir3doG0005kNklbp^-W))8WX;rQfv=dGe`q5GSuy4PY0a(HLeyzf+t#W{o9LrKr!U=> zoFD77we313(x#>0ctvxQmb<9a)*a`aNSnIT#VKuKeL=Ni?JiicA4tozHw$dp_<>~F zbiCvIsc(|DZY1=t&g}}ij%Z63R(Iv`$;zaqttw@bCPuvB_^w)5D$Xq~5ZiJIe_*Cd zXz*0P%D0t8H^tnY_7ll5xHsM+JdE^EO2*9b`S+r;;AzIJs-Qx9GIu|!v9~{pFk$iC zyAKVseXAI=_5O6-E&#d`Z+dK6JPi4e?}|_$xCs-hfwA0PR`}v)RPk%k!$ss(@rdjS z0%L$1L?+!iXKeU3?FfA_exL1%eGxxcuU&&rsKMhq0Qb8r(EI1qfMnjNz}zI;6^Hw% z!NVCD;PZ#~_qc#JKjrwFd%2w^3nSkZ2SSpzSK>WCzRm{ tSwrAY@^Sj=fqB72Y~&Y5u9Wyc;}-%F04v#$DAoV~002ovPDHLkV1krnA(H?A delta 484 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 Vwn6l?JIw$9002ovPDHLkV1iTN;zR%d delta 1886 zcmV-k2ch`$5Ty^0B$0kQe+Mv0L_t(|ob6e^kK#rYrU>oMKQ(vCDbjh18(}x0iD*_i zD&$SIO)Q4W%~^tqf8w+a68sm}ZP?=O8Wc=nu#tsd-i+-9>^G1^I$a|9NeD~hnfbo& z{g`LF)oQG<#u{s^vBnx}tg*%#Ypk)x8f)x-VBOpAyFc5o&BYt8e*v`rJpq8rTWh-p z5C$E%xWE;FY&^XVf}RO({BZrYivZiVt$5IRQ2)klt^j1xH}8!Kv+UV08YBMuD=xSK zkj1yH&Y&}BwI7TNT>_}Lm;|PoT4Bc5Y(q(i!+U>xnZPxG%pJ7sLC0%#T;oD!fW;a^ z6Tw2^h=5aQ zoY6RNq&d!w01JbmPm5D3%(%s)bWs~m21wwtIN}tbpvIXLgVDGnX690X!`o+UqUr~zaVukQmG zAQoLAN`(~xP8HL{2E$ym)nl)>nnMW?R`Xu(ZeH13${4&>e-gWT613PmoLjoDTIoaRLvKFY=K!a(RS$NMRaOx8D8MX{&e*G@NLs== z0>rDI>PRmTC>2&&%q@a|o?A|~D+mA+2YRzG2bj%z5Ls3=3EKnPu|3-hyiSFG8Wq~S z0K{D6DG|sgBG$%og>wSydc{ZApjQiK_IX9cNs+~&f4ABzfYW&oc!YPK0}vh8a~wYj z0^1#&3vjbI!Cf-3Dj|4{K%uZE0C(Hk)DhnS%w`%?TaL~UFco-_wYys=fazl&=|q)` zVM$<1&)HA)-+47>kA(|Lfa;%$V};U`hlRpSB{5H{1lpb7ULRnSe$=Sin2uEjNWj|7 z_xtH|f7Qo;;?<02QhK%w037u%&k3xda6$C)XJz$bu6=F5Un&fmKsKrbdB+`3m!OnU zxa^U@mZ!=9DWqQjeqJc}wTi_ca3+&!;_oMuz^R-PX}_3}15|V@qL$0)PUyA_5^6R^U>&$Rx8f2X(7+e6~R)Rx`KP^w}`*AN9z;pe*< zk;9v8HYc0SQ-zfa((Spz>|P2eVDe2HA;@Ye)H!5DiErgs^*xf&I^+O6TaT+}I$QU1 z1{$E65ATTxQk8)Nl?5jX>zlIVTwykX7nD{g5I+LX^UKjh-ejfo=6He^P@`0wf>**$OZ`Fi7xkUb|tn`1-zxzR1dY z;p~|rV2+`}qSwDD{voBXUgJ|=H5x*?F7?y}IY9ccp5bu|(VGtzP+bDcW+^rxTK?T# zIw#hMctOy7n4!Wwg?~>fti}&ZML=T40O6r52S}Yjy5X^)|K`IEVN%T&tQRv4e=uFl zLkeNUUqxKJuBY(-rRvGb^07(Xs zkX=vi6VJE3cjgy7pgmwvnCW9CTTEk@etVDuBp1E`m0ij3-p|z4GlBmIkYa$HND||7 z?=ZnDa}tE`1YM)Tssvz{*UpI{=$MGD=$|Kyu|se-}U91dOh8-`tLV zr(S!ay#S=03}L$)Z(|UQY?Z#f9dVhyqZI%R^VQ*(e}4H+1pbcE--pVv^6L9U(0|na Y0y0=R##tX<&Hw-a07*qoM6N<$g2?rMwg3PC diff --git a/graphics/object_events/pics/pokemon/horsea.png b/graphics/object_events/pics/pokemon/horsea.png index 52d792eeb6dd930ed59551149b2a13277602daff..c6fe9807c27d0c61e6f97192bedd318c070464fb 100644 GIT binary patch delta 493 zcmVOV1ZP1_K>z@;j|==^1(6{> z3jhIPOGiZir3doGkzE;oL8NY33R4II!$V*a8GMQY4SJbg!9x%U8MJ2UP_;uvDYoIQ z9sIXvQT((?8er9`RjdAsJaDUqAOL@dlb(lG@vBJR-X+tzDTEAVO`B+G(z1MTtv)!)SmSMM7}3L2({% ztGA{Zruo}2acKz3Z4qs1LSNqyWt-h+y}u1Jj8Tb8L+JEAW^8`_wE4&`fN$!?&T$Nv zTo{5kjS&G=hZn>?okPX?d6p@UFAb}}XhlipB$0kQe*t?*L_t(|ob8k`Zo@DPMLBBnsRFd<1+sLF)B_Zz5Cn#Y zz$7yG6a^ae9=(T$AQCd@3{^W+lw%9t+QEN&7R67Sqybi~TD9uG$OE@(Sk4ntoHMr) zoJZ??yObvkRfm}a8!H?fkv2rbQob_;xN2iV!b)rGQw0h;t;sItf3aaqSjPt`0G!qq zQvpP%4N^PLb*w1y*f1KPMv)L)ZBU#C-07WZhI#%rOguIO<#vcRHKDJ!h_cP@xjt-% z0%KI-u_1K&5HmKve%gFy7r-}lV@n*vC65fjo5qNMs>3T{pU$CT{ZeGgts z!4tCV2?Q%%c!E8%f8>g6W*9GU=)DN=y${mh7%mdkKHTJx0H3nW1b@m5h)nDoh6y7}+uf3T@)Bpeg07*qo IM6N<$f^JW~n*aa+ diff --git a/graphics/object_events/pics/pokemon/huntail.png b/graphics/object_events/pics/pokemon/huntail.png index 22546291309f9f5af59b4ebaaab4efdaa221aa68..3aec64c4bf31a2ac5d093306173abe59ee820b4b 100644 GIT binary patch delta 1058 zcmV+-1l{}N2l5DzBv%J?NliruOV1ZP1_K>z@;j|==^1(6{> ze*ghuOGiZir3doG000A)NklljA6vuDqk{h#u1X2S^Ap=7ki8Mo0H5L;2 z7*TZrB$f_!l8qXvXHQi?B+h_LjFR(7@JU!Y6;Qpj1Bg$-o$a&VUCDq1g4=#~_x|sH z&+lv_^zTOSw-dZM{lkK$i1%H*GGJC3L&=qyZ2+jR_U^{NLIxyDcG~$>%(-P{6 zx?{98j~Q6Sk;SzH28&_OAM8MfTaR@`-7)I<2!rkHz$6dh&p@+e<&J` zWdbkH{$B5s*M*vDO6%dYJ zcNX6LQJe{4f8qBRUd_o_2oifJ9(-+`6=6jV9*IUPI6Y&FgOa8^cYmP5f3e+{f_r%d z5Swy3ohe=t(X$iGTPJBva9ywy@-XMr@QFm1tvE3C4%F+k)F=fQn0ezExG_xr`9O>!&kRG zXSCaP(+Qj~%k!ywMO_szdw4nc_OKMpxV(6VpyXH0h~7BV#7(^rv7 z@FMv#ibBlu0Cp>x`5nZ0DX>m1J|*XySr<%?1mAV>(U4oxli<-bTJA_`5^?2Et!K clmF}S6B~Ksl4;N`SO5S307*qoM6N<$f_z8qW&i*H delta 917 zcmV;G18V&82;&EkB$0kQe*E59*NE@=zLZGXu?g}d-4>8HM>?5_g7;J31`z-1Ie;pq=LFnI& z=x-Z@=YLqxPTU$nIuPcp&1!?4$WpWuM+7XuTPKH;Hos2vTG5(sf6*0*Yf84xHU_gc zzZua|G!o0%v)y>V;9CZ*aAZ1|ie_SjX2A_uj{E&C+-q~Opn8k_1 z4Fiki5VLP9nDF4yR5TN#ZGbRX&L(15V`On@>F}jd^Q6mHK+#I94B$u!sgJAP9b|;m zVc02}S9^+N*o#_Ff6+>eFffP^ri2Xj6WJ^V%kXk1%VNZJcJ4yx{95ozDKf5)#GlkHZ`cyle>^DntHhUG>dykdUslXz zLGJsvz9i%|1Ywk#QA-k%mV!7Ifvk1H-b z$2nnI&}Nl*e{shaVRJ3hUKemm+!YzkzOb^de&?(u5q_cg0WZ9?3`TCig9PSRdK^P~FPfTxQ%3r;nEUai|hO383g z^am#j^wz zU-S}IF`nE(4ix0v0e)(1*$aJ1?)I`JSc*Wzpd96_foR*6 r>z%v3{7Ue5hx!``{|egtUyol_>oc;i?gxed3jhEBNkvXXu0mjfMti-! diff --git a/graphics/object_events/pics/pokemon/hypno.png b/graphics/object_events/pics/pokemon/hypno.png index b1de4cd3c79006601d128b93b8767e8999a478b1..f6a1292fdb8f70430ec191c0f1864cf52db39344 100644 GIT binary patch delta 633 zcmV-<0*3v@1k44HBv%J?NliruOV1ZP1_K>z@;j|==^1(6{> ze*ghuOGiZir3doG0005-NklB*66bJD41^hmQ6u3=;<+VD9p<_RWx3kCF z`WXX-tQAslralh^Zx`;VO>D`oQpimQc|+i*M1RSOECJl>UibPenm%sx7fkIe0IJ&^ z@(f(@Q4zW4yj`%$oAb1>SA0~ZOb1Bqe}YxsoTr_=;$ta6LsFAYTvc#at3(ydb`o)PsVQWnk#D{-u6{L2QCf$f9W8^ z)9~y3%($@YPn>9m78ah?Y)?e}IB{t-O)Es-T;5Ihlp0Ofh7R7QK1^@QYtu?|8GmhO zIu2`2<>$UZks1mb#-`~;e-4~H?K2!*vAE`PIut^OCP}htj)eHOWltHef zXn@qXF`k-+j5~KAn|ifEX&oPSfR8W91+%gaGn!w$Fk@|JV@1glgx|*l z0v@WEyef5i!x8tf^NbnXlo*pcmMkVqz>5xPts2rx`sxk-RTJ99*Qnk+00000NkvXXu0mjfTD&0W delta 500 zcmVNKnQ(ynY zzG2Q2e0+Q5`2*w{5@W6$8ccerrRIx?=# z4NL48WYmntcEY3MkqHM%yUWxw!|u(jdg=G@!5^&T`%JZMH*x4PWD zXJ8RwTO_OvgybCKf7YAntv1j^dBS$6n{RuktVo`UzG$3i(quTypLGMSwx0QF5hu&r zf}8g`1DlE(XsypgCSohg*8-Q?28>K-t&ENNy62EIOR+$0xDe}85lUYZB-Up2gc5jn z$|g8kiAlQYpn=;`Qcq>9Z#dC8@z}8<50!@Mj+F@25g2Z6 q%*TQHl0Ln`zZ-(seEl%+-^O3U#r$Xb-`hO^0000OV1ZP1_K>z@;j|==^1(6{> ze*ghuOGiZir3doG0003aNklToQ5Cz~_d7BL<7^n|mLk_?RDwAYe3#V*z z^+;9Ny5LAK<4{YLyQ#$6eLVk6A_TymJ$v@-`MV4@%VL0}L7>cXk2Yx-P}&^#oG%t{ zs*xE6XZVS+1sWrBTpF1&xV}VZQ^urwK2+>qk3B!YXhCF5Tcs@!TSeZB4Npl}rwxN@ ztF}F^3!Yv^7`894tJ|pOhQ2PaD#(GsYH|3*Nc!Nl7gaHn4*?ZAmfX^4dco=1)K{{g zo_$%}=_&NWIix?iOQ+wdO{bT6rnq^7&9UmZ8`g&rJ@Mg-4*2Zp=S#S_Z}gL10VWg! W0)6;q<|76G00001DFGlB$0kQCjlc#L_t(|obA+2Zi6ro1>jkEn>!5D2e2Ur-~^RPvaN+v zw%Ks-k?kFS^ft?)honKE%yNe|Y3Nbf9Cw^A7H_JS83t$giLnJ5BXe9BnKHPpKxb3N zq&rmXUynUMz-U2aOk1Tb5F16_iw#dnSf>rWYRaZLt_z-CM(DRMu&bM>=Z3BtupG#N z!D?~%#Yp<#wHM_u_wbWJ97mKRIWU-P(9?;U^ueS&mm?P3(r9|Y=~`D;vY?uMS>5U> z^ujr$KeFTjmwBeRd4tWdYPoCHhY>yT;foIV?CIxAxVW$Nlf?lh6kDr+IN9kE QzyJUM07*qoM6N<$f_jU9#{d8T diff --git a/graphics/object_events/pics/pokemon/illumise.png b/graphics/object_events/pics/pokemon/illumise.png index 31ce8040883a82c7ce8c6d2ebaeafa7ad4bbb5e1..5841698e5c47ba3d43fe9bbbf4ce6cfb7addc335 100644 GIT binary patch delta 716 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 delta 603 zcmV-h0;K)S2CM~;B$0kQe*!m2L_t(|ob8pnj^i*4MFpf6zhdi2v#s+LYUN)yHgGEn z6SyUp)Wdqrc!4bkh+@M&wsbE=T8c66_HOU?V;aYQF%Oq743sYRinXg74JJO=upH|J zgJWQZ35Q6jJe;hQk^!GUG`TsI7 z6jF;94AL39g3PRf!O5{+F$LT)1llr&!qvcvAcv+nvsmsb=wm1Xl}+U&h!%2hTY0PT zINaAZ!I@QHaqb!77OOz!&;$<-xS8}m8q8b_&F=i}uzmS6gEjQw+$Vy8ED$rBEmo$3 zD8_r{d*y5h&i|I2e{>}nSq0$JxsMp1*9<6%EJERBesuLnJqOI!TngCtKUFF5&@gJ7z#5H zF_~&Guso4v57Z(Cmh5#UkO3&Wi=5TKWIhcIOMo)xYA|rtf7ozXT5)MRl@1_$E;6T6 zaAH7>7|kn1^=e!V;*F`_KP4-Cau(E|fkzfNIaN^vg9uV*Ft8dtC{Q;Axb-aEfNd1V z(_m&vI7^cAtl{L|0J&RPV$ktRa|%WVKr8~F%*6n-Vn^&#Q20!9d_d?sh(T9oh@fkd z`u`7^o~&yqQC(zo3gB#{+@&PN*ia(lasO7cvQZ>fL+Cy<_3i{gXAfOKQWiTJ*m1u; pUB2A*@4ve(58^b0zf<_3?Jwx~c8hLOV1ZP1_K>z@;j|==^1(6{> ze*ghuOGiZir3doG0007BNklRAS z9o{;WK7gO05DKMq_<bZ{WHTpDT>>-_7<(*2QIb;#D@1A#x>`S(5D=_Eo< z?bJ@~e`!o!PVjuo7IsRuJ=qdc2G2Jke{|E%>v$5>*KEj|~u_zD2#e!qF;tk>i_z^z@dYx#$dodPY3V?n;{ zGkN_A?(BkHi)H$9u(S$v&E=BtemeuXV!1Wpj%C5OgTa&+4QXRtfF27b`q@_2fBo>` z5f&s2+BW?@7cdu@+YA^FYwKNRf+Ob`ya?J>ffJa@!~#CIyw!o@Gr1;9zVn(X@4VV7 zkh(**;LJUr1#PRq$?Z3}DQ-*h}v1=pNsn3{l& z9ekgpNqVCem1eb7AVFDh{$p4)e*v^(60I{FpPM`An(h(TIqrq(Z>%@{9xnm>16Tcx z6BR&NdEJN2*@62>XIXJW5*DfzkC8 zJ^v8uJ-}IIT|i{{oqLw8%pM(`TPKa?Sa@7NHjPyv#n}@+#pYyC{94%*e`MUd%B+`P zURh758UjhgJrh{YL+L^Vh8TWHHY=SUZlr%cnE7l3=Lho%p>bssSiM~0!@YHOMHc6l z9h9fgDtP@M4~b(KIC6* azW|`^PsJl<=pg_A002ov22Mn-LSTXd)>Uo* delta 630 zcmV-+0*U>)2FC@EB$0kQe*#iTL_t(|obA<3irX+02XHO5^92e6hJ;xR_!3=aHB^HG z2E)*ZFbwz#S=7c10j+a^(m;>V3@tp!Rgw?|w-{dK*!r-h?jpOE2n_il`~4Mt*o0i$ zwO!l)(uBH##pPD5^h)-<+!0bQE;k{R_wzh27wvVa2`RE288&_1f0hE~!%iB9`cO^yJsZb9Gbfp1=cp5?h9+YOm~ zn!vqV(6^i>?|o_8j&cvN#TWrwgE@*!-k11ZnM zmI*%Z0(_I@>rb^RH9*fc@NkQH!bF973ai#SFc|Y1aLl7Go=w1vu@n;<;5oo|aS|st zdQxfHS_cwT1vjUx>H?@|lFw2s=Jp@>rhCLugnOy`JDWv+f51C{=)`n?=U4|&QQz=T zg1(`(6Nnh%Ari8i5?QVfXX}0@#_He*y{%+=cCPC+ld!Ku&hoft6PUlOF^o>7Sp!@( zHU(sw-SfwEZrAAS%sFW^!zyHE+jQ1}6jw()7WQON{MgtQ6f7L2&dV=rYzEZa0&&hl z8(42jDX`P}4}T>00N9S@g`o$M!s7L9FS^KvOp56;<@X^}Y&P@O`j;LDRb zB!M%)QlQ!vHh?SJ`DhyQ3Y{-NP<_rs{|iB!f^KbFV)y6Y1CPADT0Vm(oU9`3_ QMF0Q*07*qoM6N<$f=t3D`Tzg` diff --git a/graphics/object_events/pics/pokemon/kangaskhan.png b/graphics/object_events/pics/pokemon/kangaskhan.png index d9f08d071b32627fb55a893631c588ad871b075b..2b5ddc81fea9a50533f971720fa7548bdabbb5a0 100644 GIT binary patch delta 802 zcmV+-1Ks?+1@s1xBv%J?NliruOV1ZP1_K>z@;j|==^1(6{> ze*ghuOGiZir3doG0007*Nkl~PxzAxtbl}S4ggm)VXxXLv)+3Ga#n%{{q4o_# zOc*8DZeZ1c?na?AqMr2vZgv#g27Plvnf~w?Kt3o)VRzj3Af^GM5yQ)=O5@9AL6$cS z1zm2cHjcWAFd@z>>su75gs`lWfBesuFky_+0$gw)u)<}f=cD7J^7Z$ahg!J9=H zlePfCty$Y3q+B*5DYvHH1`l2C~fS zR7kHART3iI28~r`uoy8tM|-sv4|7Hn>%-UjYUXYOp)cyMBWuYhS2nLWqos6?jpBNM zmE&43I9C~lO4YXD;c==|Km{Ww&v`A2?ukl04=1m`aeVAZcc^;{O}GX7IiS>PUa8f5 g|3CZs!ap0o0T^m~qZM5b%>V!Z07*qoM6N<$g8bNWs{jB1 delta 620 zcmV-y0+app2E7H4B$0kQe*#EJL_t(|obA@lY8x>S0AQW=x^L3Hgvl*=1|N#B36b8S zSKkc1)NhfCp!*WRw`4Ctq!ctu4d@LkD5@64@E0_GMsGcX2c+mb)s|1jp;{YA-|jI%yTkXclBde`{NdC^WA<6X%W z5j|eTfVp`|zC`kGJp{y=7A5np;YXsM(3LF65&wyT75FdUbyuWZ_0Oj?wgFW8|X6%*tp2gv^l<}KNH=VQgW zYXxhBCE7z*DfsY6#pUusI27fB=f{XryJX99qt_%Qc@4ieNsS2LCGOv;AvkPvP2|DG zA;^tDZQJ*x+!(;w(KsfkfyS0lNHDb!3u?KD7;to)5oh~$fA!qA%a<|0W<5G21W(RM zM|vELn%Gvcj|mnlPN|MPVWaadcnApEW9vhY_2`h01ERG+p~k^VK}g7(^rTs;*T~WzluwuaLhHLEPe0o3q z1k?NcMAIbV3_iOstTbSLkBgq(Ps$%(KKWJguYXqjxAhCRB+{jw{97de0000OV1ZP1_K>z@;j|==^1(6{> ze*ghuOGiZir3doG0006yNkl6fKNxO%=iK|PcdnjF} z2vsN)rN_Pa0Rp>45J8ZBkRA#FD|m2WVYPUP2xh>-7Cf|Nzd~L{1UHhVftpN~hr(V8 zWuL>qFHiEH$=d+j)m`1y|5E<%fmpXTf5=)x2u#|u{tUM>$csfo1Ki$6Nr9e)y49By z($i1}fmfUOniD48^ilOO^D)b<&<)H0?alSZ*HDw0`Knf)%`waRXj${lb<9EF+-#4( zqQ2i_?`tjA#VqSR|Jc)Y%pm_@=J)XeH94yoRYu2{Ww$v$o}H{PgIviS4ljJvf889uyB{UO`YN{vx8dk3vTerjF}Y+wM(1b(<17f z5i@D=Lcv1=^ z?FfBtujBi@w0A88NSU!J1QLq~fvZ0F5byJ}5ZDafa=Z`gOj|ghtTW;XkO;IAU0W6V pwkn=MZp0-M{!+<+8-f3ORx002ovPDHLkV1lMiO`QM$ delta 583 zcmV-N0=WH_2ABnqB$0kQe*z;(L_t(|obA+2i`qaK2k>XMw_YZr^de$Nd)V8G8y2Ap z_A|8L)%^~BfPR+dYNfJxTkVPmFJ_39J@#d>(o2;zli5y%dViVc?f% z@}Im-01kDiL;Wum-4E1zw1H?$3Cuh6{tS;ZkolZxfIECg7<4_>!VMopLY4PW|?;| z6RR6tgqDRF$QN#Z9?enH>$TJ3?g%ppO0$b;QD6qLHqQrF5o-EjHGXZoJx+c9&NgW`K%w zUm9w^@w4NedYF$U&idNi0%m|GGR_NdQ}boVe1)1!9H(yz)bR;j*ID;6|C+>UpRk%$ z%j|uYc+c?bMD|a0)bUFbLw+eUpK0QB!J^coli+sWze&7be{jdYt@_ml>Ns%8SkX=I zNhVGgyzzrKevsJ*iPHslgZDMxU0{wM$#K12ucoGn(?HSKypXlDPZFmWL?fe6@PDBO zQfRl^3^!#PA#~h8+OAQ{dOV1ZP1_K>z@;j|==^1(6{> ze*ghuOGiZir3doG0007WNklLefG_H`q35oQz4&*G40; z+qa}pS=EE~i|S4OuYWCQk?DQkb;t~7m>t)GWU+sXz3;E~`{!kYk-00o&h9$OT+`XH zTLZm)!0Kw>bCH(SLH)=yFZ$_*YRL5xs21BLkg{r=-LF&byTw5O9jmDm^`2?Yf0u$L z*L#7K!CVjx(_tWv=QTIZ9idGf8odWFC1VYTVx5uq5JWLJJ$4Bo{$Uk)6=D6{sD-u`)AW>W$$co%v&TYUb`*zHHZuc`N1kb)4v zg@J^LTP%3sLjiSY$WKoo;E}OMe>neXfZp@Y@FgIoim@YM0oTP1#hZZT8G= z+qY;{!nQ9#N(RMxc6dwX&z9>e+m!0*Q^NGaRjYXQ?M5f;CIoI*+5EU`k{u);YaAfIqPnfDOkh(Z=QiFPRE1xd9#o#&(Mu z&6q-b+EZy7eaS5cO;7uN3XJUL9DSa40(tnkdTwr1G`{7L-SNj`ZvtO*xExF1rXba^ vU+UimP>cr{*xayf+k&s|8^_E2Z`b|-?`6Bg;C-XY00000NkvXXu0mjflAUgX delta 665 zcmV;K0%rZs2I&QmB$0kQe*$z#L_t(|obA;ybEF^?2XGo|J`8J_Scv6CXVmH@%cs1L zaNSLsTuO!}b{Szt=?>rFDiK`SyUe5v&CXBo{r3^VBJ?%B#;1%n`1rUlsCG3yCuyP) zVpUy5oGl(AzKo^{Gkhm076=)&1?-$9v;Ba;OF`Dss2euFpo^$se>OyYc{WTfRL5>H zO*N~ja+~Um{%?LQsDY?sKUP4-l0fpZ7DS8PU$J)c>GAw!+vq^-lS3zu6()A5&4k2Kzz*&3gy4 zOW};EA^C|2cPxyvSo@W-^yCzOT*9?`bK@%D36ve47Z7zumdU&TB#3H|Jh9 zQy($1oAqEyBWUKE^3i>RhJxKvy8R>Ve1@qXY1T!o?S_}8f1w<7V6oaJ)~EcGr|-w? z%4CuSXcn=qPqb|b73KZ}Bu>EoS>7)DBM%bLF&8YR4yLpHU% zIyUB-7KSsfjy)d}7*ca*M8qwA8?q<0-S;~KZVJv7#B84+28^35X8fkvlXp{HxoFMv z4co4N_8n|3e_i=I(?9(6dpBh%ZW+O!UUuLG{0hxpAGE)oox9Lw1GkLNvXxU`dV!(s zrUo73*N4#Un5$dvWUui1xt{|A+n$4;r|ZC8`af6KmJiP z19t_n3jMG7eE^1V!FEwa#=hW(=i&DJ=Z(LOrzdRH59T5r00000NkvXXu0mjf0l`W~ diff --git a/graphics/object_events/pics/pokemon/kirlia.png b/graphics/object_events/pics/pokemon/kirlia.png index 4212c7b7ce90722682074b3cbd2259255218a2d5..d8dffdb9845b5a9af0d3557f1b26cf3c21b4628e 100644 GIT binary patch delta 510 zcmVOV1ZP1_K>z@;j|==^1(6{> ze*ghuOGiZir3doG0004YNkl zN*2_rW$6H{h=IIDhXh`rj+vN9ZFQg@l6$xdvJ;&VVM5A(i1f4LJK2d0P^C(hD&Oh& z+_~C62d8Dd9}1OQ-|=d|5Np?}tO06ae+TXQIj=6X;GaEJ)&MBGeY-)<>;C*D7MH55 zfu-G^eI^AD<0O6^mNw}3Fbt74J2MMr=cNt1*$qcYTl0AmbFOHcf(dPw87&s1L1#Ki zbf#$U8`5SUvChPTw&XhHT1eVFNjPa!P-x*a$XSXY6@gWtV4iY8+H7h4EK>U;f4gQH zA9w3WBW<%IByC2bi0|y*(lyg+dDKu=fr4=%X`3w3X^=N6Y_%0C+P96v5p96_1GiZ) zds=QIpIgml+hf>9IPw{A<21~>KE4}IJqETpKJmFext~luW&sz0$7Vq=_1WBhQvJn% z&TU;ZQ_}St{%Rf$+f>g3;CVys+d!y(08+D+-N19b5`~Zpe@r#7Vz#vRq~*B~ zLe7&7`jb0*;+t_ZVLMMYoVIU*RM=X42UE>TqpAuTbZMsO62orlg>4GzQdVIrp$nm< z3cE?rrl8c)Y2aDOypXw7pylS&1Z|d7-^#-N$*!5En^T=>3fruRf;MlmOq}dv>6&TW z-w)6#&@xpjY?D1Xb`5+J(t3l0VLuM;MqvZ=UWCn-+4X*x#k?L4Hxa`wqfyL22dAO$ z-uP)ejTqSB;XUTwhRXE^T{I3?Za)C!88FJT eOV1ZP1_K>z@;j|==^1(6{> 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 D7CJHA delta 78 zcmbQjvX*&*%EUTrZAJ@E7srr_Id89Q%xg9fV7L$+vFS%LUmK5LQ1KbJLo@&S-?S=C i((tZ3+qLl{KcmQ#ThC@^p1aS@00f?{elF{r5}E+_FCdKo diff --git a/graphics/object_events/pics/pokemon/ledian.png b/graphics/object_events/pics/pokemon/ledian.png index 0ab9506544af4cc8e6c4d591c7c15c67efd0afd5..f4653d768ff04e2a85e7ce3c673c7560c568b2b2 100644 GIT binary patch delta 915 zcmV;E18n^72IL2jBv%J?NliruOV1ZP1_K>z@;j|==^1(6{> ze*ghuOGiZir3doG0009BNklEn86>MhT;FkbfN4zDR?7L0^yA+B-n++vVZ4sl z@oxUV~#UU;ADl=cu0C$Qtwf0FwwE{(t*Vl2tZ&axe!mfUA?X-d2yu1xn|u!^CZcf0`S= zu>^PLY9a1av9BXwdXW;iRP#Jj%nP0GKnTnlq2i!eXkiXs3Xn0r78~KcT@}2F_MfS@`1MYEPcp*E?O;*9tT`w*IsrclVHI~7{c^qKL~Cph-$v_+OrTi>Bq$8TuT=3gS|SHj#^dnA z@IeSS9p>nl>$l^G9zXN2jHnaW6*jz)71IbGq8X=3z#J;LTu)TRxJmx86-vHiiHhG+ z%J(<-H)%=ho*Rrwu9&LWe;IE8=G1Xi#f&jz#u`5crFW}N0>QoxNGL5Q@4tK)mra0V z^**+oG5v`ZF?>)Dkse9Jilmc3uzsIgbW?7^`%koLdMH^3Z0RPzBeF`?&3eJT z1hi<^OXeC_Z1bn5lpD>S73&IET;xz>7Hihm+)ZF{T6vwG)!doSF=swxLyV_ph;i_p pH^6pgaASxUMli%`%^?4;;}4!TM~qB_Ate9+002ovPDHLkV1kT5p!@&; delta 800 zcmV+*1K<4Q2k!=uB$0kQe**eRL_t(|ob8k`Yui8+$2C|>2J1U?3SCcKvNWLQMMGtX z1;In~Wip5^g+d^7slf`QM~J?MIqa|CAq6Lxiy;;mVSIh3yOU%!R@N4Bi9>$6cfbF; zlPt@6AMfMe7|t8~_E_o90nQucO)esxHf|4aM*A%{SzhXZ)5h4+f6?k7JEQ%Un=CJR zBxvK@4)+80ICn-JsLwVSM=&PoX$#vP=~)LkcM^}lUu=hcbEWecg>F^RWb2F&(m%+K z?-6n`DutSdN!dh)jLEnj&|n*Vfg%IeKLd{XuH^Mde6kw%6TQYF^N>G7Ry^K?-$%;$RKEz7an8)PGPy8{$jF>-e%~gpe4aP5f~nIq;~b zj%kRKg-~xnagKlGdMV5&NkS(|XrJ?i;tgMfr4WqJ!6(SYe?(a0os6{5e^A1H#Q_EX zMkdYsEH8A~G`~ltJ2tgm5!%DCi-`dcYB~lwDTMklQj8_L0=oj2Fvz(OGm z@W)S!w?mhSe?h^~c4`9XtrYI&bw&9+6h`v1)%9#PK#myG z0ah5tsT9^(pkJ>?;pUr&w_4b(cxr?h9*HnQ&X{EM>5g%e;#Vb9e8rc#9*;!a9$z1) zW=ota-f`10n*w}cWyhRzWX?-JzP!_`i&}u>&=g?6e|GZW`$x7d3l!`3u?+Z)9WSdR zu|m*aA~Wu0G+WjJB%Aj+K9<`_eEpT}N`YcifLo355xH1a>m@e=SXQl9EDZ3uBOV{0 zg;nlZv+01(vo&O^E-%*?Tn{)BEDvgDR&Z^8-3wvW#`x5OV1ZP1_K>z@;j|==^1(6{> ze*ghuOGiZir3doG00093Nkl{~Cps-q-`s!omHQ6-+?14rh+=vBC3H=;O&LK00cCg>D9W&QJ*l5udnmjIa9m}zY zO6VcQJ!F>T5LP?ptrU!_Tg$)kJS6@LKx zMyS|@FdIr<0)pS2K?v~G0;D_;e~`P9$wCB5A%2fNCA5d}AM20-7aU z$Py}BPC-XA5G@iyvI@d=qJ)f5!UIU0vGQfvZ<8}P$=veFH1}|7UX^q4e+@!1)_JMs zGLdaTd=mt-1yDjt$U_jUNvwqz?5sEGUzJy;8Jl^o@KEp(`I{G+_pGzx0TGoQ69YsB z68Yvtc?2OmB?NS8ysqXQu>TN*c-wuETOiIpN4&n$as_`C3CB4RZ$j21Lhh$<&F?I& z_?ic%TKF_)EUE>p1TVYhe~KRYj&JlOEkXN1@ERCF;1&?54PGEg`*NwvHmeM-Us(=HF!f<{t0msae#~@&d;uck0XrEk1-W h&Ze1o%%^&_egSp2@;8!Q$}#`|002ovPDHLkV1jM{pu_+G delta 770 zcmV+d1O5Em2hs+RB$0kQe*)b}L_t(|ob8n{YvV8!$Gv!sDW%&%KSNQx9dwAa6`Eo_ z+9AXrLmf({E9WWqp$?NpIA0+*lx7G@LJ4#T)ji3Q9Gm9gIBv@$1b(*k`%6y>iK0`T z>Qw)+;OGngCWhhP2;=tXIP=^Q#*}~?(Pw`2#(tXWvYnl_*XaYSf6z>D!kA_0&@d1P z0Xj-r!Y*TFycH0q9<6W}#X$%ev7C{nMG53BTbEHoNUKFaLLLfP5+(7#2|0D#r(wz) zArpnS<^a!0PpOIazie< zww&+yt-C;HXgB%8hB>avpSfDkx8zFCm2J5a6VJl5D51HQOYyjx>sqL_k{BSXbza}B z_-lDiGGO(QdG5m^+^Xc}Cn56I=Pf+fiTYktg?OCKgcB-h17+ofH~PGvrK9@DJVSVo z3Qmh}G~ay6f7r9hviM#U%67~=kQMS&+B;{8OG;rZrI;M>s(GKB?H-B(wwIrBPgF0< z0_#Q9Gw@cFh|kj830v=!vSqQtGg~w~#lVFZzW>m=I0#r8{^eM`ln*8V%DQE*;>iZC zL=Y70V_8hYgPK=iN0C-Ie!6a2G&USs7Rz@d+?O@Jc#6vMN7zB6?k>y>r4D)81nj|V zc@zS=40GHOV1ZP1_K>z@;j|==^1(6{> ze*ghuOGiZir3doG0006GNklAtHwW)u#5&#mfc~03C07^X)e@KHEj-oYS-~CCbK@u>ShiZ^|FX50MAcB+) zhBV-3${_J$81Mr`FoEoLTVv%r$zawaN7FmvRy0Oi>sC9HLBK|l8&!h@4vbUN+)nlQa*&40 z@r8~2-$(+JI*xF(sK*M>Gag!&jQuJ z$RM3OXbG2{3>Lr_@%9qI;*(TJvlk**d)@+}VFf6%*pXh5N9*&=>Bs4xHRZ4CpHEJO x47J(g+275!kYT##JYv_F!C`={Ys~+1{Q!CIfU&ekWM=>X002ovPDHLkV1mxMGOGXp delta 500 zcmV1;zxBB$0kQe*w`+L_t(|obA*xYvV8!2XGD5T7MYXQ)yJNG?i8Y>y3>* zWa)Hp`4ZRZaJ$sgak3%y8dae*mR_QiLJN10w}gKre$SRH5pt?io$6mLAcX28H@7lg zG7Q$tN>B~Ufu8@lY%h8~WI(u+V1%6;Ado<Z<5N*@M`n%_F-EK?cq++0f-;x$V_T9=Oi z@N2gRZ=iYy3o&iF%1xunfI@jMqGN(VD!h@Mu%pa?o-TXtV0SbTNX1nBjXzrq27op9 zO|=6s7!GB>>gF}aAgmSZ;)8}kGIHnoXhsTdv*j@7J#bX6YEQ0;Jy1bs^I*8Q&VR<2 z4+e{k)5&Fr!2m2`0E6Klo}_7+g0x95^L-%XbO!$*ua4)lu^c~_UyhG&7D*;_lGE4b qF3DjNY`W`ToQWNX*WZ}`=XwQLHgIos;+ZM{000002g#cSaefwW^{L9a%BKVOhiyl zM<8}(av(DOV1ZP1_K>z@;j|==^1(6{> ze*ghuOGiZir3doG0007)Nkl%`5Pz{&}MPyIOd?_0%A zVub#;f2H9Bk{JVTcYXXXjBqzk{>(+Ie+`?l?vm!5v9!(g@%A2%TMSmt_rQV5aLK!E zu8+?zd5cX#ATBaO%+hXLK%491TWw^-1Q>ux+@;bZxS#9uH6!fW=BVEvm}!0;L$2m#!Dw{z{r2qbiFyHIm{}D?dD9?2F%Z<{S4uuQ1k+1}dO;`cbzi zSad&~=CDDh+iV%6V-;xS{$b$n2I~E3C{F_r47a%-h2=em^s#PPFaYT8cx#h@P49UQ z;HyA!ix~3*#;P@%TD_2q>;W*&%j?B(yRTUm6jOrK+nRJ-dv+wIt3a{Hf5G^cl#5!o z2q1yDC7MCEDCmcNz^g^(Q4ob?Ai~jc7+r^v0vs(KDYV5k`xtAf$RQj^6q!+B9Xm~|tZGCqpS4jHH$A=@cpl4>SJ zY-xtHh{4gE&Ds!=?rh+UKgB5nCzdwBa%7J_;qG-?KQ>sdekPEAF*9d7WXSyAzjYng fjzM=j{@(TzoU*})>{p2p00000NkvXXu0mjf6xDmE delta 632 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 Z?O*QJg_=4P33~tl002ovPDHLkV1k(9z;6Hm diff --git a/graphics/object_events/pics/pokemon/machamp.png b/graphics/object_events/pics/pokemon/machamp.png index 4b7a1188f98cfdf8c029e95efaa1e70f20f6e898..165c97e920fe85b99c6190cb0cb43dd320e3b29e 100644 GIT binary patch delta 951 zcmV;o14#Uo2Z#ueBv%J?NliruOV1ZP1_K>z@;j|==^1(6{> ze*ghuOGiZir3doG0009lNkl+CT8x84gNK+qszMY;QVyx%u7_IZW)KmL!uHpV~XpA4lo zN(kw~_wYY)8u$7B`k#)l?1nZsqnNN`f9}ngISK6HkXP%WD-!O&F0ybr8U?qT7o(hX z%Rz)WaWa&k7mk9_Fs}EoOA=QnC!OfAD+ZAzw#jV~l;>c%dUL*88!7|sTCf^Q6V?Zb zEzxs{G?xMbi{4UnjDo{c6Ls&Q(3J+u9Vwic-=`0PWr>7e+L&nT%pZy8j0cbllE;UV7j)n>vX_#BF zj|v{T#2iS1x7?Dgm@Z*lvpUaliRj_{4zw=@hs-@8!))jDfP!7(DQ75dCjfHxdNByx z_48#;;2Qly0C?ovbPQbKi^O3$e?T+oB&du|3`KC@)truR*F2-eA#XbA2LSILHS_n` z8vu{2mj%PO$Y~P=Z~l8097;iny`9Rr<(i+pfwxafOTS@{p!v__P4ti$DaW6{Yrw%5 zgTT6_g*l_<_z50uYKDg_ZKwf|(zzA`Wp1?#*g4_xd53jOoO?Dp(DK}^4ghf&}L4Cd~CT#Mk8-qj8`rt(0qMq zn&pBG%m!2tIS#h7`he@%d4S{pE%r63mUX+9(0`8df}Nake7f^r}t$Fh;J@Le$w zG&>KgcM#1~al#qgt5;|Houbr1nK>DHocB9sa7#S1Ukt9CqqV`+nT6GsNU)z@4rW(o z3RlC%xdB%3#A<0XZ^yJYko^IA3?&-fW$poIM>W45`8VLP#&zWSRf6Gb(0a2{6#E18 zmeW*KkPSIGRoPPfJ+I=SFsu@L-PLm9#IQz{Ukp_+e$cPR*RdZ>d`IxN;&gxNn~8sR ZdIZE~(xRJ0LpIGl5Sne6w?OtQN|JdB6& z&&K&L`4>Z}lM+Ij_&Ka#)Fe!GED0O3|V5ny`98@Q#D8|am#Lppd7$)^>!F~LuFy> z1)HI?aeb7~MDHciUJHmU7Dvf339kC2Ct;RofLvPQ!?3c=%!XxsF_``B?JnKuY5|eO z;xV0sC@39Yu(4;He<7@#3`Kx*OSJHDb2?T-iAzLoF8haSaLL>gvdnJJ7bqAq`;wvX9)OH9he70N z+2@jg!SI2L`V_Y5UXIHFv>&sevSVg|t|gpK*m~a4;aWDGf5wjhFFxu0ehwBOAnO&u z_%CtZM8TW?k_FdVQ0Cx#J-1x*(|2%sTwD4B2ZWJ7wrpa6%t$5v1YQHKp&CRUH#(Rz z($`P$>UqoXlBJ6^08&2JVx_`c5xoBV4J|Z-$e^(^K)Swq&R3O9JUAOHxJAJYb5B*{ z(t}7r|Yu;oC{~e;3g3; z7QANzK8=~z)&y96Z@_Gif>>~&{f5F6(j-4Z3THzWf0Qc`8J10qmG^2OxF-R+cM$E= z(Blr~)vKF%P?S3;3unWC`#dm%IpT%GVerNn>J8r9IOw)Sf_wXHwL_h$+zhobD|GS9 z>S!}>hwlyKa)AM3iFTX{FMzwDmfwPW4+L!SF>!mr@MF*g+bN3q0)yi;RTE@GPEIv; zlOV1ZP1_K>z@;j|==^1(6{> ze*ghuOGiZir3doG0006FNkl;>BW|}%l5XiDqFHWHpppMC=_-s%jaM7k7hJW$T`k&j(-&w zcXy}q?HrTEVsU#CYyEqUgZ+MApTHM4f0vh6GfYa8pfW!fhL1D6*oR@b^D`+9hr`I= zmAtx^5*toAfQ=CFJj0ElpUJ8KkUKw9Xkz2#mo7k5b3XGk{ciZP@N?26_&I>F;gm`B zB?9;$GA~<0F9%8d5f~~k>m@`lsiu;#Ut3h8CTo!%O*G~ibbP;rwG z@CPZE!{R#b4FjI)nq$3Xr*}git&svGnglJYk%5qv!mJ4$>x3e`ZFBTTG%&Xk7@KM% wLvxt!{$4k#7-92)Ok!&II-Txb`taYzAD9np2|0Pz2LJ#707*qoM6N<$f_*A39{>OV delta 546 zcmV+-0^R-T1@i=uB$0kQe*ykUL_t(|ob8jrYTPgohV=x}L&e9Eyg)X2k7APd34uJt zVhE$|rAr}LmJc?)*wP;MWGt()CEKz=PQyZ>uya{H|C)a^qgjNmagA&ItH45B%J~+f zqA2oQ;G&75=oDsDozLfmf58`7-U{Ixt{KCD zbNI2ry!YVz_NJ_LGVjEiNkWxLU<#fs$Bx|@Y;wLJB=X31)w6L`2kpcaM# z=Et%tSnqTE4dB+(Etm76kW&5fAA!g^nM9Ky^vzwDD`!9*f6s=ph$89fmYqIyd3^Nx zG0fe(Z9;bxKeI9?+E&-7>^YkZJJt!IJiYFD)Ca>y4gM=*ueeFT>_Ld#yts}hL(DSW zF<&3p>EqBBYox#vO@bD3VZen{K5ImlIwGDvw7K{rm|Jll`)UhAbC{g|UN}ot!@V81Uc5A0$YKr)T4iD*ylh07*qoM6N<$f>ovz!TOV1ZP1_K>z@;j|==^1(6{> ze*ghuOGiZir3doG0003vNkl^|#&MjwfA_6+-irki!(@!X`}=km#B2B55K6?)d&Y>U zGj_AP=Z5fs2hlKfgJ?5$hf*$(7*va`>qKQ44j)R^BKqwVqK9Ds=UhEppHsEI8}(UXz+jpt6}aYXCbK+(<$T~j=? z6CWwMawRh^GSj+tW8le#sy}S65e8*Q+uiRJr*g&R)g!L8x#zdkVqWdGfO|!Q+{UQ-)O2b_;|U*`3DVVmJ_9swVzn{RtNgU z28mg;v^&o)`vA-=2QJy>iCDDcJRxcSE`6{3{Hk6A+J7U(oFd7AOul1T5UKD<`QT?% z%PF8&Z2xMYBS!5j=T?f`H3>XTBQy%~T02g#cSaefwW^{L9a%BKVOhiyl zM<8}(av(DOV1ZP1_K>z@;j|==^1(6{> ze*ghuOGiZir3doG0007ONkl({NOMQA?tbpeXo-H5*rU^g+f5lcWx8nE03rapS@VuEBB!38foP>Mr+XZ$C zE^(-T=`i8MuPCu7b)J`{E~H@bMVmwbuyM^x(h;peLRb3<7UBWBiFhP%(6rzx7Vg2jS=EQCPMqJkhui2+%` z@a^_(C#Q7eK?1DhUvfy$vyBOG78&C~0(6!L#T*;IXipdgM~2}#vFyyJJKRSBd*X2t z081n++{l(nv{ZX9wm3P0 zJFYxOznv*}M&3m;uBygWRhC2Miv8A!j<8^=#Zf_1*C;ndU{RkjhuTc6dQPr?b3;`v z&-S&c>S>=J5%J@@N$~xLunQ(`gJGNHz9t`f#!@hSrTXt63{~iz+(nei`P8+%T+b4- n_w_$>vjS!T^VC`5zm2~?6PmQ<5`+YM00000NkvXXu0mjfyuw{9 delta 649 zcmV;40(Sk!2HFLXB$0kQe*$GmL_t(|ob8prZrd;r#yQ-R6qy1fQ`Q88dxJ%Qeku=k zfo>ck16~RZwSc@#a6@F^JZUPRK0`@aqK-=GEM5ZSOacC#>F+!Kl~P~v6;}$~w-_)y zR|{B&HpNn(pQ{z{k->)rgupZbD4^KtR&ocIPoh=EJ~f{WvL4(Sp3i?5ddu5a-DFA!q6N}O|A1>Y^m8^VAXM3JiCPPc`}3@ zGap@^4`t$?kl zV*jB$2S3iU!p<}1e;Hm^-QNXeIgFTDXBlqqJx^0KX9bG|zb=G8&!U1LNQnVi!SL(m zzLQfr@*n}$@~a#Y^lW1SoJGcXkN}+}LNUk2FWM2K;K(psCzhT0c8mKcV9z{G0$_=R zg&WyYiIxg+asfL+*09zoH$4NBX>V`-*eJj~%7 z+nI7_3^QlL9xxP!x-q-)l j%?g+W%v0|YpEmvhpTDtE&Zw|p00000NkvXXu0mjfqT@Ia diff --git a/graphics/object_events/pics/pokemon/magnemite.png b/graphics/object_events/pics/pokemon/magnemite.png index b866ddebf00c8f99cf57e4912c53c595725435ba..8d18a7e34faeb99150d4355b1bab6857196ef531 100644 GIT binary patch delta 455 zcmV;&0XY7(1DphqBv%J?Nliru

`H12$2~LLUGC02g#cSaefwW^{L9a%BKVOhiyl zM<8}(av(DOV1ZP1_K>z@;j|==^1(6{> ze*ghuOGiZir3doG0003%NklT;BPj`ym6es1l{E-q9xJ@VyJ{ATW(PM} z9rP>~zJzHG+v$7T^*z z%>sL7{>7NY@0lIRdtn+439~}^i14sL|1ty;$3VG3YpwH7gHNp44n7vv^E(L4WeR28 z=T7Rp+5)`E=w28d%Jy=txJcRl002ovPDHLkV1gfC#CZS! delta 354 zcmV-o0iFJw1hoT@B$0kQe*r*AL_t(|ob8jbYQr!TMZMaKJ}Y!-Kci$xmcoNlq+jS7 zI@D`C*rNvz9s4IWs32(*Z9%SN!_!krl7d&=$tM@?kz!mFIXO8wIXN+tS;uU;!XQ?0 zVZmHvHtJPeIBw3fzfS91O>Y(W-@Q+zwLH)4{u}i8Xzy^a3XFqnf3x)aGkp+p2h^By z)ruzo!5b7#fl>IU-z@z;4%&C%^u2qg!b-!?3%rvb42*-J_k&4Kg+4z$=m(Q95mt@- z90n=l;KH%jBY-CT!sIV`8Nf=DFcFrwoqg-4b{hu+<6yb#lv29AiG5&6Zt&Wxi1F)y!kOI`So^{$WlHRKbzl^RpN`6PCS@vgqUksh&WytO(B!z@6u2Zk`H3Kz^`=?DM-02g#cSaefwW^{L9a%BKVOhiyl zM<8}(av(DOV1ZP1_K>z@;j|==^1(6{> ze*ghuOGiZir3doG0008VNkl2%#82YYP;X@xe~c!NGv2RZdfOZIyqqlPJsGApVAEBTP=R58 z{XiS8-aJ}Aoi*iq5`e5oU~o`hmdgtw;D()mr?D)T^MP>n_sBn7J!5C*vWiFmG7U5W zDX9PqdjXFwrM!qp{Uxnu?DL+i{2jMU19>dNy*U*ab^+GGcM<(^`WOr5`kpN^G7#tRQe;0^gVtDKx8PrOt1%Rv1k$oUz zJGm->Y}qgg44}d$91%fkc;y5lZTk z0&pxZEP?jiw_-4alVME)EV~_Xe_7Uy!_o_SHUiMtbk}+QOUlIXUF^7Uj{z3*QR9Tj z*Ygn^C7sZ8t%fy0%T|CarOKzvj>X`i=PK%yJUlyx^2h~PuHrV{3Rdy(feKo-0x@Xh zOzB3+Su0FE_r{&@D|UYDUTe$URTO>?tI6ml>~@rTwk0XPQ6p5!vLM_)f0Uh@tF_K= zS#*JE6NdXWgyE}R;MfR63JT0SX-dntlR~MI1$Zhx^n3nPV&@Crn1=hSD134AQkzpJ zaBNF%Cs~2R83%M`8FW_IK*$m|(2l<_<>OlJ=PT~$C&L}#sS`L(+AiWNG1ApItGl-3 zU7-Jx`8b-2$j?v1i~fn>Z;k*eT>-4R9U(_JpOCwf+vFP_r|$P%AQ_i$U!#+G9!EG& zJfc9~C8zzD!m}jRRg$?KiljYy-VDUyA~1slYy|#6U;;P(^&YS9GS*-%@NWeFy4C`p b*S7T=-nF<1S;4O&00000NkvXXu0mjf9i4&X delta 721 zcmV;?0xtcd2cZU#B$0kQe*&yYL_t(|ob8p*YTPgohjooEeyl(*eUBc}OUY0t*pE?4 zA@L#9tP1vV4~FKL7b%!^iljq`hy$9A{70Hynx&6qwskG~QQSe-Jp`Ked6~+ZXGb z!kZ5)fLOD@>~y>|ea-|ja1_Y81k;zGV*L~G$5<~!eFrXQ0mM8o2mrVM11EvZF9GtL z)nD>@A--(Er6-=52g(wMCnVGNy*V=t%fh4%^x`7KOUNJk{^Z>i& zeX1vB_2PP4m~$3Df6N23v)0{ikqJ!TAs!iyTI&HZ)^CVYpb#e;ZIEp_FbmAk87O-u zr~~^bP#drHld5993f!hH%KF_C|8^&4fy$SvEyg66I0i~6t`Vu- zFmc?G1TzYWeG;r31Zb)0cAL#lfGY4~8M%$efCD{o6cX>~e?-o!MHsr);+|mUNk9ys zH%-5=0=Kfu7p3g#J2dApU}9I!@sq%ph2w&mCxHSFg|=QpF$?R&tMR1!Mx9^A*E;iZ zmxLFcGyQY7?5IvWmDKb`gHY><731|#PM+`gI)7%h1lGRmZb$68@2enk5U3h8hIiu4 z#1E#`nnoX8f7&1Go@UWg3?Fi9Xhv=6b z5$80YFiz};>MQ+j;@>ZUY+Sy3BL_B{2xy)pB!PXbM{d?HMK)D!UDd=Ls%rkNd>BZ> zMNtL|I0*cWAOs%#*L%5s$=HLvz&{cE?b-``UB}ih%HqUtx0TA!00000NkvXXu0mjf D1#?`S diff --git a/graphics/object_events/pics/pokemon/mareep.png b/graphics/object_events/pics/pokemon/mareep.png index 1d9f2568d90ad609083f3f0c778c251939b59316..1effc12c2a91c458eef309af2b702e12f6540edd 100644 GIT binary patch delta 706 zcmV;z0zLh$1(gPnBv%J?Nliru

`GI4=xe6Jh`W02g#cSaefwW^{L9a%BKVOhiyl zM<8}(av(DOV1ZP1_K>z@;j|==^1(6{> ze*ghuOGiZir3doG0006xNklU-la_?@t?5VR(91K%j-`e|%W`l`m@uRblub+1x^nqtiP7^yw2TKB#%d z?ZU%s&f?scuE9zRqt4GhJaHC?d`1JHW!%e!1D{AkYWrXf?YNAykqDmnz{p2}Oz3@| zD?BWOZjUxyr<6_JfdEgOaX<>6(V>Cga96R)#rv#*HY{Gs1FHj_8sT3MSHUyWfBb+C zHSt(FD_>BIL`v8IXbR>hD~0PZ%iq`^CPME^q0WQMhXV%+n^q?i!rE22-pm6=!=&0` zBPq~X4+!tn0BElO8c=sthRt(;k=hA-WA>K3&f?NS*3i!PZx;#XN|G+c$l{x*47?CB z>#Gu=@@xQ1G{}JaMS{69X7);Oe_!QBRbHC5bIzg*w^hR7>HMwzXj!>X+&_kS7coZ& zDfLv&0|{C4v*>KRj!QUvn6u?0rE-6iI+%BFK0S$xTLfqc zzw0r~yIsU7MFAQM1D!@6uH+YZ!Mw*-l%gMA&tZtC(d0VwwFTd7Hmbt#^tOON3)A_q_A6i35URrPUb4A`e;P-pb^htoCsuq= z^NgFhhuNIQxi4LVl@>;wpM7}ZED-sO20+WWlM4qvk%rXv!5Z3e8D}FAJn?~%j|7>} z`#w{6SP0!7ZMse=o4f-7o;c%x6h5Ov1Ha*}VwH>cSp#iYyp#u42Rb#vzaXxHXQuf9 zA8O*UbXLBg7>Sgye*w@G%uiMd*JGByu|G_N-j_n12bm8C4iq-6P9}u4t8%@W2aJYE zwZ%qKptBwj-l_r6UI8?q?y3x%=Kv$M6Zp#PEqR^ArG>1ao$uew6U>z)U5b&#H&GdQ zA!OD!B|zor0GMcy0eABRb7jHomEgY0jjFsfZRd(Vx2u5ji0Qj#`kG0000b$YS_1$802g#cSaefwW^{L9a%BKVOhiyl zM<8}(av(DOV1ZP1_K>z@;j|==^1(6{> ze*ghuOGiZir3doG0004rNklQIL|)ZZy* zKTBC|fJv%*9&MG+YqHdPHy~~;Ei*V1f1!KMw#td?Hp}e9(-qU4#cYclxG|yWgihn< zXm>k(*ToNg!#?d(I^Nlk^v^Lj>`+xNyW1~_c4QhJFVqdK2dmra2D^V6q6UVE=Z)xS z;B~BS7fTAP2BKC>*XPnSe0f7U9JErqgCKafn;bt4Jlw!Az~aMy`%FtLgK$yef7$hA z=a$(GL{v^>v^H19c_p7!ajvZ8SDt93Rzp1Q-uU>GDB}qm)uSdlrlB&*fian})M|(3 zclY^vOHNXFg&Kyn=2;!(Tp1tqs=0}~SGFF?3t_yQt@W;LXJUN`<1#t1RK-oSqy__y^9714jQ T56oD`00000NkvXXu0mjfr~&1% delta 411 zcmV;M0c8H=1nmQmB$0kQe*t(&L_t(|obA=UZo)7S2k?6W`vp3oj#YUH#x}e~rUF}8 z`tfW?2o|@Ms;W~=q6(=?Y)2?k7GgJU2hK)L1uU(U+kXBNpFtM`&{bDmb@g|OoMvO% z4Im2Fb#_o*bJOaR8_slU^(WvE6hC;X6yNQCk@dz@(uFFJ}}OL9@z)N{%MFBc&2eYW3xp(33}8V zi3bhTo|x_C(l_XM$(D<85jN-iJ#2b$wuo^9&j8g&^7>h{*zmM!@#gM!@+iXws(Y6v z+gVxTyjO4fIJb84e`%}-MbMD1rVk085^KESpnpC@W13o{9Hca*EP^Jip5CLEpNPg= z)G+14>lEe68V`E4;?9Yy$np1v3gt$44a@XRZLE7nrJ!5$RmsDmMTC002ovPDHLk FV1h9?%W(hz diff --git a/graphics/object_events/pics/pokemon/meditite.png b/graphics/object_events/pics/pokemon/meditite.png index aa778ce48ee1c0225e1a36a6c64957cbb3601a31..7e2ad4a5e401a8fe86f30306b404896bde89444d 100644 GIT binary patch delta 488 zcmVOV1ZP1_K>z@;j|==^1(6{> ze*ghuOGiZir3doG0004CNkl1Q8aSMDgeF$Qd*-8H`Czw)d~aekaB$V94`>JVdNvbt3ru{F~Brn zQ96qlvHPreA#SoJJ|$+ ziQxHA>5AG-p^!3{e?k?O@3pth0C;z+|3qyk`8t=|^y6?Vd9AGmmU$U_YpDudSz9|X zfG-RHt0CD@niT3*@>W|7bPM=B6+kPjt%s&X%NxUP95OV1ZP1_K>z@;j|==^1(6{> ze*ghuOGiZir3doG0008KNklBjE6bJCPcrhFznM_KS!|GB@K10oE2?&C? zTN09?Yd=LcC51qT4rvIqA%W&hIur_tjlY8u;w3>Ybm|hNc#qsWrIzl_dg;=oP%YN) zocDj{)9C{6|N0A;H#I-z4KSVB6^{QDe~@QCjgNVQmt~0+=s17mxC*dM#`hrByex%! zL!PGAlwEuIohl&N6tPMa)ZZ%eTzhw3Zcf>?P8?BxJVgx+N~sT+y=0s{m~oEvl)h7X z_k^!hAWbmm>3wSa@tk$Rgwjd!gr98ikWZ+Y=vo)7&=o7dHVO2SgqR=hDQz3of38&l z)qx${ETWW$n8)h((zPniwGNCXlcbY%JX;` zF_2U}l#SD)6mj$7oeB($2DV9S_lQzyG_b8#g|YR6BRWESxu*uUw##kd`j)GQ-rhi6 z1fHruUnF%Vt!zi0?)|7{n8or_WoWRjh*-64Tmzi2)uq01K-pGny0rhke`T(*Wfd4u zpRsb^^1?;~(wCp#s%4uUFRm{aovmu12F zqX7%7YY;D~x045s!`Tw7p7)J+|GIFs1VtbZ%0R)m-2iU;gJbgmbWDVh$JA)hZJ&)q zb+~cH#in(dhJtgm0lAR@WDBYWGtVN^1k``wvO#g5R=cpF3k~agV(lXJqeCG^)g;u3 zE(8mV8uDzp_P#K;4&UDinc>dxjOl^8vVZUT1uv=5(-9Vw QO8@`>07*qoM6N<$f&wIleEYy8f8hvH`?PF;G<7RH|0!USf3!}^hT!F;?gVO-@?8~>JVmS$xg4|>dA@@m!6dh)>{}=5f)q7Wq?7}|9MoI+l^y3<7krcQ z%L+fLKsm*HlRanFpO>r)MpBNZE4;G7cruc9qHkSrAupT&*MzFPevEnitYlUDRs~WA z4sp{+N*ZH+QuizCelXo#EYBgR|=nqQZ!3OA)uD&(aO_tqNYL zr*<2ohC3ZN#oXv`s3#%-vpSf5Xm#9`Eg?d{+_=zz?KhYKs(0$cVh^}ayY2R=z|4jl zeHy0wm;t(D%2|B9XxTm2?i%m!CdqyqGimfgrUE%)sP2vRe@l^e5R+Qc5n?ylL<}TT z4`sV|mLab0U8%s(YT%mG4$q_%Rs+|1RVdxLK9e)Vx5sLrb+C9XeBT!jeH(QV*i(T6 zJ}on;HVH^BFgr8>5Uj zo!vC%jM)vyg9vG88q7V9%%(7tgGGblIx}x!MHgDuP1nSEi_}fWoX^Z8)Q-+M4Xqlo zu~~Xum^qv8?}Vn!N2apKAhri=!qN-@`>lM8WZsw_C@cH-j-L+XGcWFmBnbcj002ov JPDHLkV1hk$W@`Wd diff --git a/graphics/object_events/pics/pokemon/metagross.png b/graphics/object_events/pics/pokemon/metagross.png index c5996389b8c8bd8db182b0d7af556eba23df4aea..d7bd9c0d8f92930d67439995e0f9a83c113ae1a0 100644 GIT binary patch delta 910 zcmV;919ANI2HyveBv%J?NliruOV1ZP1_K>z@;j|==^1(6{> ze*ghuOGiZir3doG00096Nkl`UiO*1ESI*!et9y-3?G3sU zu%h!A_$bc?NXdp_v;kyFMutFuW%lDgQAw249gCKO;U6F0dlW^RkpJV~7;-%}8_9F^ z-;QcM78vE{>P{N$Lw^nHBQ_q$*XQY8f2u-({uRx}mhfAo0X z0T+TnNi)qY_3Q)R*9qAaRl5}BLb-xXIq!tvOQ*N=SX7+l`{l|8q@I1?k#o)%3%X;g zW8gNSneKNte}fhV-0NuA&H#2v2zbdHI0N$`SyB~e^mPRHL)17 z3(PBke5iZw^cD}7iVJq^m_?#W#!Du+oiGM@)0H>!2$gDLmBZ3<2;3J^?u(#XHoAU` z7q@tAj~;C#0N4p**xoAjczZARizc2I^5Ic)5(3Fyh$0SpqnQ}pp3$*_Q;)`ik7y^1 z;iL`q1O9(B@ru%W%Y#57ewKniwxg{yI?mhPq~> zo7dVcDAoI8R^Y}G+lgSnM+W?*NWdc*3mn&N0iJl>qqBIuH;}`2a*cl^hh##=0^iWh zZx^$gfX?D3f+1G3H7?$%W;}3QHwBZ+O%u>r+(a^c`Ea%T^fX?D4dc*6X k&e2U*^90LOD1KIrF2lWP!B$0kQe**wXL_t(|ob8lPYU3~%#dQLkQf4=8&Mwsh@gcJ&n>`*8eVrxGAv)tD0WR}B>79l@9z4v5U2_gT-zcJ)yY&MeT z>c1W3W-Ktu&efeX*oXca)<^vP;tQxxLAQV^*1(M>BLRnUxv-5NkRSoi@e9OK-9gq+mlBd2>^D&7Nda!?KR&xqN!ooPsw`X)Jq3h9D@Dc5V zF?8BcJ>maH9j_^UusjGPQj$36mW^%`Qz;jSsl~O9f0UJ-7#Q$iSsmjA$=(NQ-%!_V zbn{x9ne|aL@>l^w!y`FRgVXb>!x6Gxvc{_i<<}ryutm)Sm3yB_xxQA&{_OMZ+Jh{ kIlAep9ABY&tN+d87tJnW<$xQrwEzGB07*qoM6N<$f}}Q(#sB~S diff --git a/graphics/object_events/pics/pokemon/metang.png b/graphics/object_events/pics/pokemon/metang.png index 6b078f71a59840a2c33067647bd75c7577a100ef..100d3458adc3d70aaf75a7ab2e2d79cdade279a2 100644 GIT binary patch delta 913 zcmV;C18)502I2>hBv%J?NliruOV1ZP1_K>z@;j|==^1(6{> ze*ghuOGiZir3doG00099Nkli`Td`sWH|_) z$Mbj||7{@7|H%I|c8&v#qVYU9ZRfu#e}Eu9$~(PIG>xX?qh32ZpAQTkW2N*%6s?V6 zlXv!w6JFf!wX-e92iD4KvI1&-(P$YN$|mm|CW*x)-D~F{CX>~(3 znV<$gVvTKV?^J=S2{ic@(a`BA;_>O}u?yT_((kYgfU5Y-Flb{uhs5S3@j13}f1vKW zFDd1m#=Cttt8jyZMWTz#BZl&4Iq3~1yP8@Z(D>%it#6%)e?q^`m2~$OouG}$RDV3_ zzWqFlgBHf%PD;2u0+6?JE1cn)@!{J4qhOyhD-?0HEE`O&MqkhR=U>W2De4?LA?7SO z>An|$PB_ywo|ORxeklq}(kh_Ae^w|iqLc2si|<~TE4^YRZGi5-0(I8^AnE?l3T2&T zH3MKO;~dy>26eVVF0Q`yBEh{dm&R0Va?4WP9e}GiVJ`|R4C$H;tD0&%K7mQ1gBEr| z&h(+8rO-f(#xo+=IfgVY5H5RQFVqS{USr``2~kLx3@3xM+V@!0*b4!2f2f269wO~H zo<(`=givr{1G&hZFoa~qiJ!rJHp+y;Ar7lG9bB;*dm$Feu9z2+bhH>~%c`4?Q!fW~>p#a8Tv*PQ>Tge1LK6rLBR46t?EF5o=$LZT9S z?KuOX%Mv9p!`H`W&H(g^e@mfzAxmL^F&FlYA_qKm``8QplckW1D6g2q*tZ-q*WZ=j zZDUAl+!O}n#)zToBwx4!H-(`Qw`H&I6ffKZokV4#c6i?zrnp}7hR_}r1D8&)==zgo zQ;41FV}sc7KQPOgss)fD1yu{!5V~JWL3!B{u1u8`O~UFzf*cx&FHPar*b;6(fk|9v nVmJO1e$#!#)+hRD{g02|ZEABxPHt*<00000NkvXXu0mjf7MG?F delta 791 zcmV+y1L*wX2j&KlB$0kQe**DIL_t(|ob8ptYTGav$NdBrW%RbC&#=R;%`@bXYjW#p zY|mpznrF$e@JZf|0ZUFO8w6x2A#_l%{7sUbM0VUUSlOw%I6ve3{+~X{aumIdxA8Xq z+d$m?k^gDL>j;x%v5Qnc|5X75@kNd&!{i}(Slmwf+4+26^b#wjf1i^iFt$0qHcmKy z8uYU*#|H-GwOIkRzGQZcjAe&!vdm(Z5BfQZ>cDf!ZH|HJ)eMp(Z*Iso6V%{GshpYggD*ZH#`q&0$HZKbb2su(uqxY0@PSdNgn^oN5 zXrJkd-7=Kl>q&Q*e_Uy5bwJb2ja%Q4iGMYDXjL&QTkBZ$DRw&YDSvpKsvoAl!>T|s)RmiauV#%`2ND4qF-0Fb0b%23i ziUO0g323nuig~gbZRhu1SSo#DC2fEne*k3zCB2?np$u6ze=`843eJHYXArU#aKv3Hdf#`MgFHBGf0U&1oeQ4c#IXZl9bT4*3e;~5d`9AlbR z2y6oOLai|70SmuMh(f}0x}41 z22aJT5DKR_e{I%uvSI;yAy&$+m=}_Kwx4LrYE&+AFBHhR;dzxgp?z*=e?-|Y~8jCxQo4zsEn>X7a(+9qTRNJpO4Ry0q7Ig zLia+}!U$6?>>EV}Ja_xp3;mO|kjyA=n8U)i917Rpf0N&BW5@$;3nQ{IV(L1{_pZRM zFgD_`?)5?O$~`d5R3U=H`(T*j`pg}nJt`(HonSTcCrej|!{%dyIP^cTD47ZZNR@*M z0y;wX>nNx%7s8XNv7*UXC?v?CmDmwkIt1_8;7 VrN3in4R-(l002ovPDHLkV1nVwgVF#1 diff --git a/graphics/object_events/pics/pokemon/metapod.png b/graphics/object_events/pics/pokemon/metapod.png index 100b676ca065567ef9bdc6db3e1732b0c3b9ea52..140ae77fddda04b1b1c322b1e7327cc6211159d5 100644 GIT binary patch delta 498 zcmVOV1ZP1_K>z@;j|==^1(6{> ze*ghuOGiZir3doG0004MNklV4e5Jk6fMM;@1s~jMi@d1$SY8!-it6UN( zbX+dBQP}yP1%#9)3e&yy%==?Q*FEc5&-%aRre7Z5bNBXW01ey|?q0W#1>_zF?g_D< zufOmd9B_x7h`+wg!uz?8-ouBR!g8!Ce{+LVy1rh#UzT3%M-D_`;izHe9SNCRfS`Z^ zQCL=t8olXGWJ4|kAxKEj0)Zqfd4=c1EFM;7E?-_k7}n-dDUgKS7;F8o>jjL=b>Kbf z#ylJcqOj{$^~2{`Sgs3yD&jg2gT&!_APP$z(iHdeeTOwXC~*r=)xk0bqOkH9f5$WD zuvyzDVQvEw)Cf2bg{@(nk8=>o5P;kSSwKL6D6E{)%ua(3_BUueOTiO&aVZ)IyAFG-RtaUcqt=2Cum zw?g=+h)YB861vBMD9m+_W0;orc2`&^aSc$_&N2p~u<#IuA5Q-DYFENs8^o&-a3Bin zg<&~PUL-*Paup;2asdURuyBkEx9Xj@|3T$(?4iMdfCE8TFPM#8L_;vbFLpR#9BD%L zSXkNS&-o*cMp$`gqK!ZlmJ4wFA>&|$m8oF{TuqF^TsY4?#BM?+Ar}XtaO3(s5%2r| aP<;ZzRE8A6W}z(r0000e diff --git a/graphics/object_events/pics/pokemon/mew.png b/graphics/object_events/pics/pokemon/mew.png index ab8b8c43ff6d29f2d92993d3ca6f40f24ea4c97e..bc6cc0dc92d2cde1cc46240905e3792f7a322c8c 100644 GIT binary patch delta 601 zcmV-f0;c_?1g!;-Bv%J?NliruOV1ZP1_K>z@;j|==^1(6{> ze*ghuOGiZir3doG0005eNkl3c(&`DB5y+hnzGM*EUGDHW=CV4n*= zZ7~6vYXh8{qH`!G$CzV!p=7a-QfB@IxAAweo;lX z8hQI#8x*i}6wt2M(czi8v$`bgcS0QQ`QVvGJ>{j8ogo}rE(zPN@LI*b#WUcAl-dxM z)j|^P!{1diZ8pEt#dSkiS4BaX>*5~QOC5H_(;rW{ySpwaZ)?LSv)b^AvNK#!X17Vf n)ZD~hE&ppa`^`vykLmFj4_>@buW~Tp00000NkvXXu0mjfrwk>8_Bk=UXj_AY%$m`;xJ z5Nwen4{RtXuVA%ImZPf!G~Bt0D^!@uZC`}$$9E3-a^ANaQ1rEf7V*E;{YmBql4gf8Nf;v=_BnOdHjK zeVwy2axa|%sL4`)b>)a<4XPVX&7G4i_BEWIP1z47WALsb_OQ+a99ZfM$i3_#6b*=7 zA-4y2wS#@7?6u+9xgl%vP%C;ZWA~0W90Ke0=+i`$Eh=Q*)3vxafK4@RA5P7`0IK}k z66*4xZEm?)z{fklfAMwN-k>UIKn-rRR2u-&@ZuSL6G%NgN?E%iayvHE$Ct42vEjuT zd)1)Un6z;ncZu}FCZvr=xHzXX@`&um7`w-k1@x{ZM(k<8#Vo)b4(vp+y=zUvKE%

}5U0OV1ZP1_K>z@;j|==^1(6{> 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 delta 634 zcmV-=0)_q22FnGIB$0kQe*#uXL_t(|obA=IirX+42XHMN?UzYP)yWr4#B5+9{An6$@Un0wPQ1+GxFF$|IU+9xW z5IT?ZIFJ8k$d~7Y0Z!VP*YlcoM}m!3Cp_l#@r2QzpY_0o9rnoSe^|`z9&tLdTLnr{ zpP+6Ik`M{hYEqb3jgTOu)|9$kk^mvFBrBUqLdcTXT)dGaLDj^X-Gsq10kK?J42%;( z1z3#GGad2jrZ+9QNIQ&5t3|OQX0-|&bF-dfqh%}ZwGzAGWmxTyw%QbGHA3md<MULs(aove{!B~zQ6f(Ik$SK64}P;^v5R;q-jahD4l)owzuKy!!Mk7dzVWX zO!|VYuiomqwyr<-RiN4OBRkmZcG7l+4_yUq9f-3T#@OrWdc3!;Be#ufflb3?4M6~& zcQ_U@%V2T^{i`x?O=2AOBVAwY-7B|wg8@gCo7J#n*k2|&f7V@d<=#S;b#-xju{oxg zP&J1rUkqT<#*vv|06|yT)q&!nb9XUFw!`K|7Ypgozm4V7p z%k$7yA0+2n{^id9Y66-j!IbQRsyPjeU$uQc%OXbyDo;t|IlP=;=-uCE)nnN3`v7Dm z&n~02g#cSaefwW^{L9a%BKVOhiyl zM<8}(av(DOV1ZP1_K>z@;j|==^1(6{> ze*ghuOGiZir3doG0003^Nkl8ZB6bJCP2$}p4Pupw;at(BHXe-&I#9qkc z(88sYOK99gXk$C&GafZ+CO<>ZWGD*npteiF|8Vf*ymtq8K7b)Zh71|3uV1l+X3v6QFDgp$=1uf2gNVsp375&cu%MOr*45IN#D%d)Dzsvn%21 z(Lo2-lJv$!hsC79SXkFW&^B)@w9u!0dxbWm4FTd(JWJA0AmYU@JVhHtLK_xp0p9nv zfvR94NdtUNaDtL{uIgE|4fXY`2GZ)*B6QZ0cFxdZw2i6r#9Sb)Zf$OleVqfwazc&s z%P~8qw81PmuQfKj756kY`NmzQv{hTk%S2-%$X>a|P;x#`HHL!Cq}JI^>(QH6r5dYW z`=Pbq5Vjrxn8(iisxyBVw!7)U?{?SD0txV=`A+XvC+-&bxA_8M<;`h4qxLTV0000< KMNUMnLSTYf>eKfC delta 371 zcmV-(0gV2s1jYl9B$0kQe*sZRL_t(|obA*>YlAQp2k>_+2!5D8Sr0=m&0$dHm)J;m z@>J?!ARdMrl=ZU=Dy0zSm)M{OnFJ7;c^10q)0F+J6)nN+m_4FyFzXs9~e_sg^@sRet5KG!> z&)R=#b|qZiIOyP9l3uvzFrPFS8|#X5+UA>u7G|{HuhC|-Ax7NtJ4qTUM7;ckr)VP& zXv0P=z?a@OP!$X$X@Ji$j#1LiRXvNgp}wBgKw90Jht6Em&KX*awlQ^XnG2-Vt?lhe zrgO|#qH%sPVTX`5X_%D|wZ=xe6RF0gSh(AewrUG`5om10(Sy(!3L*BP#!#`D)H+&e zJ$g>dP-FFLzqS?}lhz{u^U#^!b>=^kb~im{-R|01AOU_f-|5}z#N7h_HeXmt_{rI; R&b0sl002ovPDHLkV1loXw3`3` diff --git a/graphics/object_events/pics/pokemon/misdreavus.png b/graphics/object_events/pics/pokemon/misdreavus.png index e4445fbfbbb49a7502efb9be875a6f083ec09610..9753d612b5fa6cc144949bf6a8d37bec12f736f9 100644 GIT binary patch delta 830 zcmV-E1Ht^^1&{}jBv%J?NliruOV1ZP1_K>z@;j|==^1(6{> ze*ghuOGiZir3doG0008CNklMRw>z@V zE@?Km53+Pt_+GQh)GK^4w~O@3?JD;PwePd@tYSnsLR{RdEN%8YCtIRygjqQQxm}D> zlkI_|nL(U~$R<;tHTikD_}qKvG+=peR5nY(C2+_Zq!NJP$26$Ux#E&b)1VNUe~zcI zHF~mK=;_!QsQ}4YWgk!xGAWF&X0G-@FvDEtNAWl}4M=!g0179jfI$Ys@qx`Jqz~eP z7spmu$Z`O-p0H{bCsBQHrePT;XO$H&+~F{8go1N`SU4j95IKNvIg%B}soNDT@+6sl z%uNClljn(;aNiYbE2PDz5Ic&Ie_c@@a+Z2=wVuqV!}Xq;jEOzTMYm zMkuVeZ~&!YrI14~4QQlxE_0AZi2QZLAso$(P;2#OsLy1>r%LOwbcOgeL*;PKd$vLF zI+CgpM!^;E0L+Ae^@`V1?-;f z8F07@WrZs?^`x&O299vW_RtCc*4Mk2UADKT-a;$C*XoDD@h|Qs+_Q6y>4%@m^8Evh z6H$Zp%+G#@z*vWy_v8taQu6goE`lIP*E8*bVtebE@Fim}e)wyd_E6~Vpu>djF24u< zdgh1A+w0J2aDwd2oT^ZTT+*q>TNF4x%Bn%(;P;>m}YP}V}iTK#a(igmf2ut~5fy7gUtjDHw^0DT+Ip0EQgdjJ3c07*qo IM6N<$f_LDM8UO$Q delta 657 zcmV;C0&e|~2jK;fB$0kQe*$btL_t(|ob8jbj+`(Mh7GAA8o(90hV@j4$}<(>DR*5V zln1zu>{b?1-XUe`lzEAa*~K;_?3Pian>$YW@c93K4?ZD2>ZAUfnzxuu&w1bfva(^? zh}dzf;dtNwQZuwfE>gd4uXZRz6A5y-)=uHfvq-Bk2-@*Rx;5Rjc4wqh+j)bbv7OFU=)a7{lwD*{ zoK-i5NE`vk223?kNd>J2!&iw?OI!_1V~LQ0BaVg;qmfpmr5gN;q=Et)3I>%#psHLM z^qEMX(Q|Lu0KI`Ce`naJV8FYtV0v$0^r%St<TyrDu~rXbh=IF3d@ zRB@)<8;~9(>9@7vWL)Cgxqfh2b&~k0|1OxA%fg*c1T4szyddx9%=}qa0UofM@k21t zhJb(88Kvgpj?mD!8lYot@PV=7jJOIi4;&G?$F)kGJU{(Ie=vEl*0G@b^#Si(djr*x zMlZ;0NGj_6x^y$9VihD<7*=Lf?!_sLeBs;+a7l;+Ib9S$$mJuV-%#EeR=)caZUn=D zmImioAF+U6lHPvq+25Mvej(>O)SID{;soZS7Un#|*7~pCK~nnWJx%ARvVQ ze0L8?MJztQ&lv6hgHvcn*d**nj1v|>r##}4M;voD;%4T1b~hWJu}F#yilWFj44XU) r*P9pVc3r65`m5US-}6WP!}<*o-`Y?j^pbi20000<2SrXqu0mjfs!2zt diff --git a/graphics/object_events/pics/pokemon/mr_mime.png b/graphics/object_events/pics/pokemon/mr_mime.png index c4608e153bb089b234e3146e355bd366099c4345..344d479ee4f8bf961ec7511f2bcdc83810ae1e06 100644 GIT binary patch delta 748 zcmVOV1ZP1_K>z@;j|==^1(6{> ze*ghuOGiZir3doG0007FNkl*EZRO{bxMVc*g|H6r+k&wS3cllvB!W=dh7QxwjlkA(hENiKd zSA={v^FH4#UslcC$J}U;`=tWC!3j&RKGjKeuZNN8mstzH#}99N#E~{!|hz> zzYy@Mu86Lft_BYFYlX{IRs}J_#4Qsz@yJ{Y`I(0!tIUPRzfW@22vokpWOi`T`_@LYF+r+QHcdpYTZ6>i;cK*Q{F9RfSR9SG#Y z<{o2vO(E3S5O}eA4YX(3x6Wx8f1t3JU%m($-d|?sA`n;vYV7npuj`p&YW-dThsMG4 zSFAvyc$S|)gPm!JKwuFVWTbhGLV?PJ6< z>fGy(qB&W6;G(~Tv@%_WnOwTwe7cNgjo(U7aX^{hSa`x&ae+~L$sEjA0u2jBvcTY% zyZtca9lm~IVZjvbmlsRP90&|7uw+3Hh&fn~2O>MRDGAjFu>x{^hw_AU6!RcP5Lf)o ei+S+>)*oxMhZ(M#sIUM43IG5}MNUMnLSTY5U{s#~ delta 606 zcmV-k0-^oB2CoH>B$0kQe*!v5L_t(|ob8lBiyAQ$$5Y68s8+CeGYnKb43zaO8Roe?gw70~j7>tN;M$ z$S&6jqym-a5~MoLI8w5b&XKrWD+qKy&sWu{`plAiy{oqKl>b726_x}gLpgA<-?Uop zvoEL-@)xmT{yIJg@yx4{eMaH+kDE?-f>F3Fb`)9RD12`CS<*5q-uClQ-ol~XXJGrQ zhxPZ_Vap|(8ig$>f3VcZ2vadIj9<)(hnxK8FEXFUd>YG1=en(U7TZ9>HZT>#4_XNQ zWoLw25gEoWR=DmsC+u++&P>BTnVLW_3?>jgiwmtU7FHN&X;_u7LC|e~6mb>cvFt8; zMZ^5QscfKO8yM(#+ZCc2@xyy%xH7`4OHFp*@xH4}gKW-hf1qI-SY$M?HkH6ClSm*EEBRnZCe zk)jw}YC-u?R1i?X#uXHQ?lLA5<9b#7Qn6u6Un0D8?s6djDgakd1X3>6(}5VL@kbui s3fR*fx)Z{t=0T01uJFyPdGP<%A3#T51(IwE5C8xG07*qoM6N<$f`tAeTBv%J?NliruOV1ZP1_K>z@;j|==^1(6{> ze*ghuOGiZir3doG0003gNkleX~d&O!Y*V3SC zvr9{}R2yx*ph?Lc}J!sVb#~S&Y~ev_YXjQJ9Q7jgmH$ zn}@>E@#LJca}{BPK2YA9V}imX{XH;QOFqthm|2UmdX5qu(G<*cgPSCtJ>wq-C`-D)V#rs*UA0MBWIc4Rn`47a28p6>21y$ z#P*P79}ip3(!Skn>40%TSx? zdZ!n?i}Y;XH;Z02E_h#0KeyCw(JK}O7oFki{5UXQK|f3U(|iJinMngeWS$-X0000< KMNUMnLSTXk_?L_T diff --git a/graphics/object_events/pics/pokemon/nidoqueen.png b/graphics/object_events/pics/pokemon/nidoqueen.png index 44c857fa24bbc5a5352500f785607e7cd8868198..557c4aa300b45328670fbbf2417488cbb61891f7 100644 GIT binary patch delta 809 zcmV+^1J?ZM1^Wh&Bv%J?NliruOV1ZP1_K>z@;j|==^1(6{> ze*ghuOGiZir3doG0007?NklvI@` z@J7PIF@!u202U@a2ulb%`h9lqE&_nyYAP&D&^+PGoMiyz)hCnjK0D6y#T>xDo)#9a zzyo@G3opsa`*>k8-e-E@TkQM5FAE#v3;^b6Vdg`4HJ#pQxqYTJa|i+mgq1f-f6s$V zS(wGNp6TT#wQ!wMOoCWgd6fi#m!uY!w4CTpSh*G)cq@NU*cssFibQANDm9W)V%qW;yL=j+Pt@qc?Cp->reST!YPAqC*F{&d;dY76 z;{+DS^Oj35Z`nOr{CFP?=l9xiDQjNL^j*v)uA|B%L^azQb_Sl{2D!O7e@=elNn+jb z?pH|^MTxn3Zq)En3owrBq-q;5!`hH{8nP5`Dv4-1sC*JwN1+8Dqv(2NjuqQ-Ylu0b zXayM;Ng`yMu*1fR>SzQVHlcjT&p3W=Zc$V!m^Ae zm_2a^@08kf1v&BH%)G9OM~XDNh7yb37v|ws&^M}O^>CYaZgM@BwSr{08#LjnE~~;- nPA}Zv?3V_dzQF#U|8M*OU)t5|Venmv00000NkvXXu0mjffIWIA delta 665 zcmV;K0%raD2I&QmB$0kQe*$z#L_t(|ob8pdZrd;rhWP~4i^R>;p+Jf*&Q>6kS9|Le z^kLdZYHOgtkpePw(vd=fcrqygK{rb5QMO3Q2n}>8I`|;K_-OL~k4N#u*d;D;iGLHt z?C0+}gs+N^D2<(>kNmKDiXvt%lp7p zonaI9qjZ*o-~#qyf6?X{g%Oxz+RisBsInQR`27yx=i4^R9#Np~N8|@i2G!T4?ono# zqS5r;>v;FL9yo51L#HGeGE4&KsA^p-+Wx?C0tsSAW5)qH#12g| zEF3Jo1v8f9lu1x-9QZX{A17QLxgG^I>Js(n$dO9ap{~XZe+utc#u%&0bZ;pID3UJ)9CnQ0?W~mHB=9(N*&i9 z44TQn3zVqh#bM127~-+vJ?+EQsN&TtVBl!T6}qZR4VYsvRFj5m^!v^r#tv#;G=^wL z!DoOU`}kV%e*-5&Y!G!4U$Bv%J?NliruOV1ZP1_K>z@;j|==^1(6{> ze*ghuOGiZir3doG0003@Nkl03MO~n>$G1N{u8M=Y;50O4!jxRCMoH=vm%=t5^(x>TjW@{T)N09TfGr=^xF&K01c zY{NP2=pA?p6Nc7cUFo}p!RghE9kaOyUV7dwq(;qI?62S8vVT5uns9jB+j_!UaVnW# zVe+Z}2*g)wS;qhhyv1RGU1^jKu9h3iqkdCsQf`wI404iAMp&@j zLN1UdS6J9CR~3%Eq;n)vtmMr&uw8=x!tm)adRRnTwrtt5<#ur>#f1SKH<`hLUyr~zc zJ=vCWPp{d$%N~*9L@W4IFpADwVlGd7ZD7UT1JAweUw23YYt}o-4Ztw2lbm;S z2fV};gBhY5euTy4)hwNIcmm!g**!F)m8|qV;ER90aGo%-cI}E;8(m&u_ND&}q*v=i zrwQ)-I=U6xwzsm=SF6#mKlpmQs;uH1>7V2awUM*1BH+|=00000NkvXXu0mjf)H02g#cSaefwW^{L9a%BKVOhiyl zM<8}(av(DOV1ZP1_K>z@;j|==^1(6{> ze*ghuOGiZir3doG0005pUzt6ru3*#lJSXElTz zz}P;34e>t&yZgD0O(9j5u{Ru`RZwKa)Wz=I?Sc4jUm^iVMC zQnXj5;JBl8TyQW`$&eBrb3-tu0;FL?=@+kt`;PI~j>e*4tPm@*E#~N!6o?GHtcUvs zIR6$XelA7BtWZ?>j#-zSf8*}g6Dp-E2G+(~ZkwE7Z+G%z zpPv|9oeM%(ZR=3^Y%gZftGG`jU4I*SgB$0kQe*y4GL_t(|obA<7j@uv*0MI!BT%>!8{q5eT+N*3Yv47PN zasXrd05%T)5Nxgb=hzfdWf^r^$60z-87XDFs=)NgD>`x3@pY8>A;YriP>1zB?;5UsKahmH9{S;YBKi0?!{6z|M>9n~k!{B( z@FZa@XdsaAFzORY$aVBc-)1Q~kPc%;zWKlS8$t{2zny5pV8WM(|91QV39}s9hwc96 P00000NkvXXu0mjf1kC7g diff --git a/graphics/object_events/pics/pokemon/ninetales.png b/graphics/object_events/pics/pokemon/ninetales.png index 7f32bc645268e3d98af0103b755c05d5c28a1c26..cc0f49e743d215e30a50d799c164d8932c297d50 100644 GIT binary patch delta 782 zcmV+p1M&R51>gpdBv%J?NliruOV1ZP1_K>z@;j|==^1(6{> ze*ghuOGiZir3doG0007nNklMTEqQS^l zS`1cNgq>l}yK6Wu(Ml;&9NM+{@$nxR291UIC?DlgR!0SQB;7wX5cRwi24K|>N{|c% zOGgLE4q{<|Ek0yarI24g~V+(XTO)%SYP0~HMF zaIPtAn_u2%UQww?uE2SYpka1*)&TL&A|x2L!(@mT3bp z!XCLbXTca)(12>Q@?^GXJzWiy9ELa|45LZ9$-JeYf<$k3r`Jrt?&2-utXeGfkT4-}brJmON7Z0n5C^4}*7CMogC%$jU*X4hkC#(> z!y}GQ=?PPhqiwK=@QFh{3liA|cVKxbpfr-vEygsS&Zqvl=SqWF@C?8~lpRYAmZxtN z`QYc(Kld$uN_}sq-u7H+u;^lr$1VH(5|=ekp9!N@8j^iExfV}-z{!tve`+!-ZZiZ( zgnL|8%*l`9Kps}EwD`;P;*-ThlRGy!H}SOqjfj(KGKV&x*@L>llJmv75x?8aaghZH z?Y^a&^TF}Ox$8F=@ejjjD0csi^U0?oe~9GEgcU>8ABwL4vb5o$fg=cy z8IqT@R)TApa=WGKUyA;;EWG}2!_$)Lj9LqdNBXyVz$PC0Cit(*Z)?7b*hd!@Jpcdz M07*qoM6N<$g5Z2+5dZ)H delta 620 zcmV-y0+apV2E7H4B$0kQe*#EJL_t(|ob8rvZrd;nhIIoTXux*p9b;5@0jcZ(nnVW> z%aNWFORTaY!2S%V&<{Vh^zu`(Q~DZTV;kCZVo+%R)Ig^`2?8oTDWMR2Y&u8+&IZil zlLmnLyrL_P2BZ*-)1l(*&}aHe(*n>w8SGNa7(?Vw^@TEJofv7be<-Rd?J=j2;G`j= zy(0~2Hun+x;GzoVaZTjp@xpP(nn2sZR>JOr^nep&V>xmbIjIYFlRVPHkJ1zM=B z89X37subB4Tx@>5XU&=6&S2TGko&FmA}84eZ|fri=5k?S+&$X39eg%H@)}TnT`}M; zxaTZ#vT%u-2<|!Ae>e?H<(-gEo&U6cWEU(pc{DJx3-+rC7Nj+w&hJJ0i(GaCfi-uo zn7Ifo*?Z=6g(|!!J+h*u%c82CRt%J-O0^%^iW1p(1)3mN*^?d^UJCOW^OegBubAph zkZHl@P<}%K_ORN50j26U{PjcXmedc-l{Z2A&kMGc|9rEqe>6c=UN9h^`GhB`*Fr0H zDXrFqcCla+{Elc% z_@5;2^U$Y4I%NbrEI zY%b_^*+UBKVtKWVbLcO)*1s^=ro-C&gx(`4OV1ZP1_K>z@;j|==^1(6{> ze*ghuOGiZir3doG000A~NkltMJRfL(Dg)8%2$ zzzGnCeZTGJqEPMA1Y=}!P{+iSTxSGeJS@M{s;u^k1Uv_UNO8KS9syF)+o->KaZn)4DuOvaao%XSY}a?2JFY29P#cwy<0W0nO22{UkT5Az>2W zT%DE}(ojtu_X3Wc0N}6@V=CYT{@fV;@tFipCgRm3#bzCuQwklrG9lF!y0w!fu|EUA z+&N#FA8u1G3=8s5R^0&|PQ4I1e_=9fz9xsf&Io7|xZtbCJV!5pETX_0eME<<7tKCl zs!=acU{mv^TKb?$;*fz9LKp!E0%in(eo1`uhrV!mO6UHxY4YBS4qt z;a^^6{Wo+3H|=rwYz1_}zN75wQ?)qgs`}gSVV+$p+f(k{5%`;gX;ZRre^uPPoj=~L zutH)Tne+bMD`+u%t*YwH+`AGM%CmB)u~C2K+%zfeFm0v6C3f@f%d6XFE5v4ui~)#y zN}+rG`yZb^-u6BLVC7L));$JCWt zxh|sX9*ec*tI)J~Xjok1e_ymRGTQ&~Tns<75AFN=Jr!W*7^nzZZRHjQU!c;QiQKAi zBsg`pjn%Znp4c?qj+mYAetOrOLjl0@6pO%=QsGQ-9*|Y&TC?E62JJdZu5}l-Ba( zuV>7BRs&^g{uL~rRdNW$)dxWt@2-o%;#o?f=F27s50s$sK=^jQ{`u07*qoM6N<$f~8gZe*gdg delta 957 zcmV;u148_Q35y7jB$0kQe*>0DL_t(|ob8sstK&Ej$K9=7<#xG$!|x!)LK`~IFQHbvn5D~2rRupIbCKSolBd9ZNhsc}9UX}&X~vErim ze`EvOg-LNUi9c-5jj$w8>TDJdi*_%9(H{9G3IRCG?Ojx*(P`jV!C`_iF*~SJVn%Nl1YkU_-=Hb0*04a}C~%(Fl+iHhA!8n0OhG`Gr507; zP_25o!D*e&=hXhPugMqbo$TyW>K~CZMbaX`<5EC0fHG9Tp_0#-**!3jmI%R0Ls+iDydlKx|^y+67JkXER17yJi+We*V%Uhf4ukrY9Fg zkjGeYyVG)3BU|R)w$(gFc3n5eMtc6UNfkag9+C(0runz6kmI~Yg57)@ZU0$GE^ao=oZ^>+$Ed$cK$Dr6`ca?Daf)p2GD^na^h6Z0)~-zKI4IIWShT0a1uT7sn5aszEZ8#v1NUDkH(r+( zlweXaX2C(WQZL!d%xSqOkZLVn6)0xNzqz7=GyGt#OCMqxh*t$jVJU-~bD8h#Kkz9@ f+pn+N|BLZ2mRLnb-(hSW00000NkvXXu0mjfFbLLm diff --git a/graphics/object_events/pics/pokemon/nosepass.png b/graphics/object_events/pics/pokemon/nosepass.png index 45e6d15b0da1d3fb3d6f8da5450302fbaf2f9979..201da05de2711b42a1bdacb61ca195058c7b4be0 100644 GIT binary patch delta 666 zcmV;L0%iUC1nmWoBv%J?NliruOV1ZP1_K>z@;j|==^1(6{> ze*ghuOGiZir3doG0006JNkl^ z$Nyqih&>(_P%QgA2blG^SxVs0?RNtJf1uBmzqTBBV zfXbs;dA2CYz$0W*9=gn?IY1r*@9py9hMIuJB!IaE8gS!b-V96!T{d|$Fl|52mfj>_ z2>DgOjg7luP-zVG9*}-P`iy&%Gk$VsN&~LVN|iv7=&&R7CjF*D-wN+ZJmViHe<-b7 zP_JY#D>W*OVE_}}BJ>lLT?Kf@fX$1}k7W#KyoiCe#Ja8#SBEyhyA80b^T4d_TYI*$ z;TE?WUCnjevGeZpE(X-KMpSisf&Jt?p#xE)EYH+vi1VI@(xFKK9Wp^ffvUg4L+xO$rBN+ z=TJqn$=iBu$sfr({HhpFGBqQAyc@fTY4+RlxPr$b711N}XZzEf!u4Og%h-31XCC@@ zb}O7C7x9)xN0plB5mwt@)l+C6MB@`Vf(lQhKM;*yNq~F$?<@N7V`!)aIHH{q8|l8J zG5z>{cirDt*YB5+2L{_P9xe&K(uzvDM`WuvbS(*OVf07*qoM6N<$f>@+2 A4FCWD delta 554 zcmV+_0@eNP1^Wb$B$0kQe*y+cL_t(|obA;yisLX824Lp^A`vE?#hyV3clIHId7aIk zVJbB{hYKd1!deVr8i`zCwjYy~qgZ-QuxDVag}m<5v)?ZZ$4QcBJ?mM|`fgE5H~(T+ z)-HHeLA6`*0bsx2VX1{~-d_d)z>-~U4^Yl~>juJR!2+s0y7R_6e_lZiY~Ei6fXJgs zb2V$wz!MZob#o@$93YQ@k9K)+Lqot|6hPbp4!H9w9|rPd&N?3k^6`4I^F{$H$R`1J z*6x8p@EGWwpniq=gnFYh&fJ;efT>9%TBzDG?8thf{!pQBn0FR;Br|A?I%3x7Df5(7V$@5ba0|p;splN8Drj*s)7~nkynEE=f82iRtElhYs`NEHf zGVa(}{r-#rZz*R~q~i@H_0I4>6$k2@^%x-KOUkOUJtAjH1?x9X-!%<4nAAH91KsvT z8~Wtt@UgK{QWsE^$kwW0VhSncuVTEx)ZXF9u18X+F!1L1f6`dV%N=c5ba{Y2nq==% z8uUZ*4sR8qZ6WsPhj(W;kr#gqjVtz4xl;~aYd27z!~H+Ko7i`sXBzqsb}N)x%Hkuf zPlD^{we96=|0A?JHu#K=pton#PuSoO6yU!8mmYuoh}GE4TC+#i%38a@mtQ`o{YyXn se_1Q~vAjU+ARNBezyCvfT=-w>FOii%TLmVtOV1ZP1_K>z@;j|==^1(6{> ze*ghuOGiZir3doG0005SNkl*a4?r6fU2`*}CVjB{E$@uNPJ3EE z$bTI;UAZ(9Z5Q>P`@QTBoUZh*jNP`2f4s}wYgpXmZogieP1|bb%~|d<;O%+t_VQwA z?6$1}&j(%uE~Upfe>1z50p^QauY)J)HO{%$@H`y(jOpo%^m^Ix8G@m8K+EZ4FJYtK z8(A9ZCth>NdY#Ak*M=-kr~tR|;UJ_$xE*$rZW6oA63+O@X$V^6fV7UBM%E3Ze~xfE z2u}{XTA*#fojM^q4YxUEED}x!$AnOQfMpdpA+2%4ZO$Ufh0~n0+IpaEfXTGkoXB!T z7S=XoT$R=@Try}+$F<09^#LjB4Uv95HKc{LK&kQs{qDyr>jxS)wJ)@0q&%Bt8T(p7 z_UST^MN+C$myY<#+C@aEjaxUeYgtv?)wL59PRoJOtjevvau(|m`n6xPoRYoWwl=b` z7Pz4gP&40LXwZAZ*sRv}|6r(P)&OP>P>&@uUTr=xe$$P86xN@eG;V3J#S8?y{C(WG b@PF$Ap0B6d8eH4h00000NkvXXu0mjfHV_le delta 490 zcmV(nRYKsN4*p=1KGC_bH_5ln!lT{ZfDQf zHx=g}WPdiKnZO#trXPh6vJP834^I{}sRZt@2^vT)3z_FZ)9PHX4w{He{SG;DA>yUz{6ImRBi*uDDy(8Cg|a-?SyFc<&8GB2J~u(_Hwk* z_>w0DJ1}d;zK4RkUhujb|1~O%r-sN=rFdG71(fl0T_PTYvd*?|DpY^$`)XV>t-hRH z3L@7U)A8_<^vmT`LGx)k-%YC{*5$(5BI9msNYW#!a$#+eU~!Lj3GcFUtvk8f7FJ7R zYm0u&x7Kybx@UU@z@3AB-XydS=G6w)dkreL!SLO*_L?ZR&Yu37r`)@ZH9Gn85Vs)s g5zo_KU;N+r1eQ)Vp1l5|od5s;07*qoM6N<$f?>n@D*ylh diff --git a/graphics/object_events/pics/pokemon/octillery.png b/graphics/object_events/pics/pokemon/octillery.png index 079784b28a9c41f87258656855ef51b1c0f4955e..82e6ef463bdfa585d7699917b51dcb3902d0c37f 100644 GIT binary patch delta 679 zcmV;Y0$Ba&1o{P#Bv%J?NliruOV1ZP1_K>z@;j|==^1(6{> ze*ghuOGiZir3doG0006WNklfg zmUPg&6di=VK|FOxhkEhS_sFX#Cpm~Cc;CHSWJIyVs?oY#e_-LYF8c+>qPq|a>~wLq>hr9c^CC^0v+Rm4 zoj+&MoOhpeooA)rbY~ZNzUm6C`#eh>g=LnhBN8S{nz9NF`Se<3I0|V?CIM3xuA(i0 zKEppX9a$orGYNrsWwIgsKlNf@ioum^*MO#)_2e?t3O zm#^9^9|=$%FRcNdKWF;o?u9O2-ennO^ch)aSox3l2FLt43vo}Ua@prtmMRL@vV5A! zh(B<0QD-dMhCY~MS)r!|`^G%YR3534i*w)+t#QG5;0fWt>!Ae+hxzD+0Dy=VOkzM| zjhONn7%aAETRya{i@e_rl+SOd2q(@%O?i9F;I0oumEMKS?CNg zFMxzJjx6-xBRlTVV-$MK1ge{FK!#hs7!Mn3?1%K`^(q9xLKQ@0#d{ihMTs8iYYemw z$3O=tki1pmy3$BGVlTh=Tnu!8mY`U;m+(E45q`kxqE;-2o*vL*2@q(&0pNS4qR#-u#aTEb zfR8@phPd!>n}UR;pI%eIwUWUaFt#{$3+KQHFwiq?8V2S|I!55xW<%P8Yhd03nvgXy z3oUb6V-i}ev+(!vi(N|8L0jX~xsx7fgg)H(G6D5l-IYSfe={N>ABrUWI01A2Tn6|e zpkn1FO(Qa~OG0mWlWzSaD~ zFsrntaprxdw;X6ako=knwMDS4k;`E0000OV1ZP1_K>z@;j|==^1(6{? ze*t1kM@0Xn2lB-L008|-L_t(|obA#vYQr!X1>iSnGrCY$w-<=wQ5sTZ>||>SK3rED z3LU)I_zE6uYbuH|B~kcgN@<~>r|Faa2f`MRl9G~=lJaL^ibF^2cf!W^`mCDQDq`TM zKwAg%p`o>zZKV}uIA$t7f$|}k4~@hAe{CoAPEppgGxfZZe$6lQf;3nzg%r=EkIRd- zxmA>zpO)nwl)**emn6*=QI}#Rz10V-D9d6Z&FagQD$-aAVQ%}O!EM*Mh_!EAKl!8C z$#i$GFfg*dZH9<>cQRwlecQ$i{@J{bG51Xq_fyos*Dy@KX^hT&{KVYd{<25=A!K)j hAw1qV&o(#yZ_cx%+bJ*y>%;&6002ovPDHLkV1n7+t3Ln$ delta 269 zcmV+o0rLLY1K|RYB$0kRf9y#_K~#90?bJPP#2^p_;CF)ImNcut?c62D*p8pd&5Bu9 zZY)f2m0ebY6-9{@iRbErHOV1ZP1_K>z@;j|==^1(6{> ze*ghuOGiZir3doG0005(Nklug$jDyz~3R{Cn?|mi)@6Znrf=4ruuJc zyG3ZW-FW?hx;*Z9wqBO#`2F5z6Nqzne*o8}e!?H*^=!Rr^W*Kk-%Bms0UVpc#ocP- z^=$c|WD)%Edc6X02XKrKC=uLlye2`L!r}Pfvk85mpULn9l4%=X?lEq)f&GxK=b2d=JQHq>3xPdz{;bxU;f}f0)OV z?}z>TZ2S9{gt6CzXFelU{r*fpRrW7j8mokbOxi%zxevtQRbm>-%wzLRD)_?Y74$1b z=hij^X0C*f0!|kF0OZ%V1sp*3cXD#7$Iq0&HA|ju!hWTR&bF6WaLqz4Y+w%DSc^9| zk8ndl=5cAgs3X}#HlT^%E1%axe*irhtP5f8L~3CN;@Y_A1N7p$4k5~3OY4-1x)nnJ z&8p|}h4&40e6|fB0s{aU0t5kQt;us53L{naKGdvi+SCS^h6FIP3nbYSKtmvcuI&(T z{v6)>LX_r=UBFob2+;7Jnuez?qxal=9Rbh46Wp#_uEoO= P00000NkvXXu0mjfm}Df@ delta 463 zcmV;=0Wki^1)&6xB$0kQe*vsXL_t(|ob8mqPQ)+_#{C9<2NouD1M`V@g24<#8My)J z9_wyHV(Ap+6(V&=7t6RU7dO>Kz=V+Mq0%pZzRz*o0Bo_v7F%rbZ$bnBB{lg6v0h#= z(mBC!@-0?FlsbW$HHI;%79%~24CLE<=1?b4@s#k}b80f4jvVCmf4#}yB%nuP|4OOJ zc#tS@I5zoo3?WttR18A78(vbAL1HF}sl|9;BDYLn#YEo8A+;EgGj+r^Ftgo~bRl%h z1Zw6{(A)Ag1IvwbkGnF0Gn*qi&DbyICocPQM_Ln?S`6ItE#37+aLvfNgM!V^d@)42 z=~OVJ2J4A?xusoSe;RwuETkoI3xkpUh4CZqwJXd}Ir8#OQSPaGdMJIB{lujt;&>`i zNnk1w`!CLq@<6Ij#{29;UewUbo!ezIppnZ45U(`}Z2y59SuO^=ztOV1ZP1_K>z@;j|==^1(6{> ze*ghuOGiZir3doG0007gNklL}g*j zi}L^ttDKU{LUP)N=uvq65Iq{lz8l-3Wg&}D)RE*rk#LfQo(dT-_@|j~zR}nSUE>

EVaV6!qDA1N%pq<5v^$eX{MVDvtbg2#K> z&hAFyY})8eMtf!Gd6>4di+{jIyb)ft^F{pvKABW3R;`TQup9`sS}H7t`q@|te;U2P zFwl3|uAazdv|s3n9!mp@p8=6t6M(n2y6WUs2;f6q0GRMmHSVgm=uYMxH-eFY=nmy%Idke{E$?;huw zHpuuN$t2M1_`)xQ5LuiDYD2F@q&VQpurufh5(p8O8|e)CjL3X-gN&2-)7L@WP#OaF zL!T$QA&Vo3I5@n$~$j0g+Q($@OK%G=QkDj9i`IRfFmdpUR$Y-9QVtY1s6u zqG@PnWNSv7e4v^)Wvncu8=~N@D zT34bdI6x|qA`l=IDemw`l1a#RfUOqr00Q)p^XAQvf=$RH9`T46RLYx7q-<~TUA=&^ zy~VVK<`#cLp9peBL8{33t{xY*%?ebo3StGRAy=B)?{T z!nnZv!qe$>k%@_lfBi`9BZo@vcjP0JWAsrUFk%y>v*%+2AGiAma#6dD&Ks3^`G4V_8ddHX`jy}JXfoBlW&r2%019>x(gR8sR+R}=R{wnaB4 zOdKy!8Rh@MZ1nh5=)gvepBYs6sBYQ^g-GZ)Qc=2{)Bs}|nH2H+9}C16JMGsTA2l^# zO66)6Q-L5bso`92jJaUG<4S8a?^nL~oK|E7!OV1ZP1_K>z@;j|==^1(6{> ze*ghuOGiZir3doG0009qNklBjE6vr=vN1@tjh88kJ?$RMctY#^62oZE@ zF$Ga1NV}PI=vc^7vej}R2vQ6=fs&=B@dLYGMRo{{1FEJBF%&%2O2DWm-8)%s?6%Ns z%^U3d-8;SiyLV3~LT>HW{u`5{=(kLwe`xS8EdQufvNKthJoe*PDsPj2Tp*bIC5M$w z%d&I6H^DfzJtA2jD%LI`fyGq?3;Pq3aI*%WpW6Ne^UXwC@5!kZnZfJqJ+b+u|&e84-!n8g+?;`hwH=%A=hFa3yMoUWU<|Gg!4+pP#lGCNy=N zOPG(NVbx;+DGT_uik*QhPDInRaw0n=*m@QI@}_e;IU?<@NPv%97}TIphTNEdaAmsna*%=v^W@cR%60 zSiW+1ZBcvZGEpzXw62SUj|-}%t(WG#sjNHDW<3%A)cL07AIA(TZedPUiYxh2T~rO3 z(hEFB(tXm=v^BrvO=qS6(1$cWdEq3yR~7=Xl?+OG2_(+oh(;n^wUl2gf2d=DU)X2q zv;13vbA2y zjRK3ehykwPoU`5sToFWFC5SMeOK@K&yx}wlS%sw_4d}-Lbj*QYP!*_wrxE@9VlX0P%uHbXQIjLz4-kh#Td-Um;@uN;@&Uf*S|Rfz%hhn=yXI%c zQgnEj5oEz-Tsw;I8{}|zkUlD|>co$n`mYi3pk6&tOtc zLSVH}@C8AXO!hTH@YZJORP68u`@^`TlL8_jhk#X233%ujI+^sOd+#hac3Wt+<_+@w zbkhI-?&;l`vB!9f|0XQXf6I*X#=o%TOIf{BWjj@u{N&_Q`HK$_f3v@2r6*)<&=?CTJ0cBwzFrnGmO}~lKgtj41siV>n~G(f84TO=n^73+F0*mH&X4Ywj%@2*C#xgId*K@9TG61&FeYYpGE#SvbNXm8GL_I0Dw_xlLdpH8 zw`?G&F)s=ZU~C%IPRbwyFGdzr10ewVf((MbSF#6mUSf&%(+UUuc;D=VNhz37f(M$v znH0VJ-6$TD9rQGFp!vK|R2elETvI(|n1xNH7a|65f32C%D8=ksmdc}(+4G3Q}6XKcaBVDYDBz0LC}qOVRg zWJ~&Z_DnNA%@^~?W}Z|lWBcy#uwtmhEqpdC&KqR^xM5zUqq>|&HuLvGo!$O?^-R8c wyedyJC|wa7YYiSMaz9+Vya#evzr2Txp8@y%#lC7m?f?J)07*qoM6N<$f+!h;4*&oF diff --git a/graphics/object_events/pics/pokemon/persian.png b/graphics/object_events/pics/pokemon/persian.png index 870d5e3cca4dd41ace2444cdf2539b55e9ea4c29..7ded628de3dce67344c2a8570ae7e857382220ac 100644 GIT binary patch delta 723 zcmV;^0xbQ#1*Qg&Bv%J?NliruOV1ZP1_K>z@;j|==^1(6{> ze*ghuOGiZir3doG0006?NkloHem0V<9_#t=@sz{g= z(G?Ud#Y&M{Qi%`%4V^KO0}- zTnNII1&;fy1c`Xvk|dg}1QMLr);`a)f6N6?Us<3Mc|e`91eyW~tNaXsoE>W0nrXAf zmsmaiglin>mjaf2k$}#|1`PMEy9p<>n>D_`08PtKcE|;a_O9BNyq+AREF91gvX#ab9-bW4{ zK12a>xZwghlMDFlXwSfg;001f;OPm>i2=vTovRd~$>08INNAn_~CezXAi7t0_qwT88U0`~fmvZ>(Y>GWp@QZ~4mRB5{m3#dSfKIwIS3pDwe57s*fu#& zNub^%e&#*MS#+k&uM*QvEI+j!9a_5x1ojhgx(=oK(CFm;Q)^F11Zno_}Ek_CxkTXu}frenUBA zp93%rzr9Rz7y{+ZWF?T`ytejbre!XG`pN>8$OGz(CD0T|e^})g2;}Tg+ty5* zHNM2^@h4p4NWT=YT2zUWF!a)1q)AK%Z z=5eV!j;&dHK^`X(p{|UQhZf(ELQh{xq-NwEv zXB9XbixgJXVkse7P_Sz$023Z0000OV1ZP1_K>z@;j|==^1(6{> ze*ghuOGiZir3doG0003jNkl>s|qHXv5F|H| dpLyY8^9zpr9>_}F*qi_W002ovPDHLkV1gv>ydD4m delta 315 zcmV-B0mS}@1daocB$0kQe*qauL_t(|obA-HZiFxl08oDc`53cwC=8dGeqW~!?S3C~ zb4w*|s&q-D+;T(hnp20^y&#qCB#eag6l`M%0Bo_v7F%p_FTpG)$7!wq$eKd>J+1S# zr*5E46NQkA0@guHb6AJeP0P*fIG*eV5v@ z^Ped4g5A3xDb_6|F;A-Cw@SacuKzvclPgosgEoLEsMG(we&d3>jUSq!I$E^>JQM%` N002ovPDHLkV1m&glmh?& diff --git a/graphics/object_events/pics/pokemon/pidgeot.png b/graphics/object_events/pics/pokemon/pidgeot.png index 7a6c0b37f4837614420fa7e0c68fc7ac46851a3d..733924b2747d7a3fc3045a855151a8479ba382a1 100644 GIT binary patch delta 1119 zcmV-l1fcu52(Jl{Bv%J?NliruOV1ZP1_K>z@;j|==^1(6{> ze*ghuOGiZir3doG000BiNkl0T+aoKa-qqW~e_x z{+~g!^Zf0C!Fhgp)OCH9ml-+BFUIdPf98dx9-D5MfK6vSftSgt&e0`fcQCRqacKm) zCp2*a*CX0CDK)Pye6Iiw@eqk+@uVhz8Y^QSpE0@awltTpy44e7x3>b3C2u-<-e`*+4 z^x2?@BFQe-KHu3h=3OONXu;S8SUAC=3nec53{H%S4$f;P4vNu1iuiHuab24gFAFZ> zEGYWy&5BflnR&~$Lw9TttpgEH%&cK`0tQ2#5L!I``jC;5+YBw+7KvH#1OewX6*d9G zPS7gkY!^>DZI7`$sK5v=wSYUpeAH?vQ->}7-Nf`fSq6%t%Lvpmakbl0pn?60+umnp9?4#B36Pu z2<%l>X|^Q}A3jKt#2hzk_6#|{7OS87t$z+;!fgPlSYigyqwTh}-9d+Je-jLwHhgzG z`T^V^==m(-HNh6}boKq)S04`0AsfK3&G4C{V9d>?(z00)ZLU%Q$#v{yr5Vo4c7OyN zdi3+~&5zI_3{We^=f)=N#@p5XaxXY@0$>!7fWa|A0U2?es1n>X?I``f1;ogkuqW8NTPE_33!pf~4CQ7zpWn}?k8*A2 z4X2HOg}rJz8xA~y*dqt5m$KKtu{d`fNEDYY!{9I#yLg7z1r;;RPC!AxucuLjk88G5 z0>|=V!om)_{?kS%#k1lYCm_K!wDbn4jOUuCSR%<8hcoy%#OG5Ee}eeXu*^HENX)QI zo)zCTw`1@JY#23ymFCI`XwFByj21)tN38_whRL2Y#@(GM62qkn5R6kX!OM=6J4uFx&{pb2ZIzo|J9F^uo%6GV$b~3~IWogDXDu!+cyf`&`^PdVfVdqGo-p;OH zATaC&kaydAw*$T{G&kQEpN@PJUY(kQvB+E?H>7MbQvWMHCphlVR|t-VE%x*WEZy9k ln({Y(!xwOHu7Lk`{0mhNCwoLl<~#rZ002ovPDHLkV1lcA`M>}G delta 1003 zcmVY{m&Bq#levwNzhK={E>| zO_1_3|F|H#%-@c-Z7;GYgNyu)_^q8qk(ZKqY^Grn4wLZ&UL`M0e~ySK;t=K6xH1Ag z6OuTAn-RG)B@O=v_VZ;hly0d%7(Fl zS(Me2iDdume5UpsfAhH#JZixh6ByR3m;7Qqss3lwM$9Mm@_N#l<@kK2}(-zT_@ z%dnnB@4KL(%&c3s6XH=eIc{mZW~F1LY7M452}u26IW2>V+X^k)5z$Tf013Awr?vpY zPB5zFrjOT)JCCtFKqGjq1>6Ztcn=0wooZWdm2vVMx zeLWjZ-;x+RFl+@WrO6jDs!x=TaYPTmPH;WxCj zkoipGU4SFte|h)UyH}r2Fd>`3u&waGQ84D_pvtn@q21r-6pCBe%StnxFFS!CHoMnQ=!c8DiT)7IvQ$hQ9gVzP28_iBYK){#9WRf8FO5j+gYnCq9 za$z%6^q_d<1VOljk*<)cc&oX<76ZZH?UH@D!VLlh@o8Ww7OF|Cuu2Y!SHtZXHgEtw zdqB`>e{P(B2;OBSsjuvYRta_k2S?5rcXuXD3|B5ec%9SrjT4MJ&BCq2g)k>oA4Di{|J}R12n@*Mp!mOa?(XnYad&K=Ya4 zESe+UlbAD+vckQ|qBN{umL~d1edUgT7pG=#Vg0#apDxY>>h0|21p>of0!jO~?g;p{ z&^&x&JP)x??_XMjcq&~Y7g7!tsqKm{3C<_<9fGs4&A$8rOZKammiz;M;0rjs)WFY; Z{{SwgUbNKBw8;Pf002ovPDHLkV1i`R;ywTX diff --git a/graphics/object_events/pics/pokemon/pidgeotto.png b/graphics/object_events/pics/pokemon/pidgeotto.png index 8b0d68eb07e655d4b853fad77379814db49c242f..848a3eebc485881953676864e05eecc2fd63f56e 100644 GIT binary patch delta 876 zcmV-y1C#v02E7N6Bv%J?NliruOV1ZP1_K>z@;j|==^1(6{> ze*ghuOGiZir3doG0008vNkl@ST<+$V9v912$6yi`f3=`$ zScBL#xK7R`ZzZk=6=2j@&N*hTJr{j+A2kgmhj zN#T}6`G>Us5lFbK70a51WAN88K$Iy4yU4wt;R$6V6otc-+jD~hl6TGroiXXu9VKW6 zQ`l1gkm}!5F;WR=rY1*x)lunpr!LbGvV2R}%{z7{YEd;m&7Vq~GlI za(6;GIE*KUl=_QihXcwri)?7B3UeV$-A{rrS}W#NXzK=tf!aY^MToB$cUbMR@B606 z5uruR^PxR>_Xh_{^K{sef10uM?YJNWguR}SSOJv6xvmz(4^A4Ke90TenK`=X;rMuM z#R|isRS@cH&|bz^ZK2B^zL59k_PgyY4NJdSHolbW_I7;Aj{_5cud@$cS{sBZX-m#~fyvP6m3IG5}MNUMnLSTY| C1f3B8 delta 753 zcmV z6-;)9Y8<+clx-LG6UH!v*0IPL!a$ie2|B|lwk6A%k}gUY1M^5gpJo5Qp8WLedH>^o z{4;^7)BJIRyc6sj@X=~@_p zycz^X251q+3&#L0BF%%r4Iye*?xo8%1LRwS2dm&3EYqqJ)B|e}x(1ICQBbbz9v#@R zr$yBXuJYNN26To6e~C*(tpOHMTsj6s70njXYlrRQ9ttvT5Ng4O4jF`lK^+upL8j#@ z56m^qH{~GlINh-|r?hg|G4Qhm5@9S5w@YZ*8c>|%dde1mbW#upv_T1ormJ>3a77vkk0xWUVSbk`EJ|G>pc_TFkW6U=CAu54wz_J z7IRZoSV(E=ei@|MUbEPxwr+45=pD3Ggv6E$hxIP|zHf>gQC4-ln%jf-`{H6_o=zvK zWvqNVFDV6S+Y^#ofJQp)YEAv%zQ^T{vS(bFql;edXYTe^tTHSI1*yLVLo>#D3tjf` zt$H=x?|HH@to(l2I8l4I!yof;U<$AqT~Qu37uq)1vu%ma{G0rj0nJX$e>mzOn0%(b jHqiV0nIWAI=4Zzrkxv796NzwU00000NkvXXu0mjf9VBPo diff --git a/graphics/object_events/pics/pokemon/pidgey.png b/graphics/object_events/pics/pokemon/pidgey.png index d298879168bba3d2ed49209b5b928d1bcc75a187..dfaeebffc94ac68aecd069c8f45a6de66bb9d22b 100644 GIT binary patch delta 422 zcmV;X0a^Zw1N#GzBv%J?NliruOV1ZP1_K>z@;j|==^1(6{> ze*ghuOGiZir3doG0003WNkl-5B_bw0jEy(8Rf4b Qo&W#<07*qoM6N<$f}?-0;s5{u delta 312 zcmV-80muIP1B(NYB$0kQe*qRrL_t(|obA*xYQr!T2Hq zEO6dg$>`&WTLZEc?exL^#pr1ieW2b*{vv7xgQvktF4lpKWFk5Xe@5zSD;Nq#{VZ7% zHG)xBJPL-(+kXFQ)AmX$EqLnRqc_#}Xq9+gt&oHStRNd=SiI5^V=d{LjBO&Y?fth#I3H?Q?17;c?9 zNrtd+OV1ZP1_K>z@;j|==^1(6{> ze*ghuOGiZir3doG0004gNkl5dr5CGs?%IKv}QXMQEyl`b?A!M{7l`!&B z-8%G{EMYoyxM!%HNWpe;QKc@e#0^NFaqb5b0Jhj-i!J_0unkwml7C--*Xu3+B-FX9 z+veFrX_kDRW&K6&(^6U>wL(3PGg{GXfBRmsXdlj`^QKmHRhM09MYBenS+t*q+T@Am zcIZRPp0TU$`G|UsTh8rUMqC@d_Nibi`T?;+ZAFKU@{UuRP;e3b8n#Cb=k{;S6XK&5 z4PB@gJ=Dx0p|R_!=Z57g9NGs+K20=7BV`W#(4@!;hGqX&b4H$X8Op0`KDeEZw0e=~yb^iDN6uP_u=v z>eQiML$YCcz#S@a-%vY|itXm2N?lqhHy}M@?#?y5O2ygTC=2mUff7Vm&M6*U*Saeto z_1TV=_83CTUT|uzd5?NYTP_`1M%)_y?o+{D^c~`a+KG-Gl^y4{vEVBDIZjU+E*;*Q z2gG|V8m3q;+0?=@p>^A-mxlEt9@-m7KCNg;mQ*ThrC= zvdz=M^G-IfAzGbm6St(3?P;9T`K4h`MApex!IX4VMQ8VWJ11U)ZIU0Va3VH$mrY>i zr!?V#^Pe@dPd?;Ou>5(_xX%Vg8Z*ZnBF-t?)%)3rTpakf7V!xrc1UI4=&YUq0000< KMNUMnLSTX(D$Aq* diff --git a/graphics/object_events/pics/pokemon/piloswine.png b/graphics/object_events/pics/pokemon/piloswine.png index 08a006f1276c62ed5674be833c1bda23f6fbc916..9f8676636e2b77a7531f8390c3e523f13017f6da 100644 GIT binary patch delta 626 zcmV-&0*(E;1jPlABv%J?NliruOV1ZP1_K>z@;j|==^1(6{> ze*ghuOGiZir3doG0005$Nklc#16b4{UT#4>REq%78yfqDrF)6*xD|Kp=XLayUFuH(aux*GSn zLF;WmL|M>_3=4ZKVHFh}2}&FuW6 z2Y=bl=Q3%^=YungeQ|;A#5mU}6VrLBQ&z%KRKZ<=-j^3B1?HE1fztjRO!+V{HU_#K z>4fQ22^=arG8XK8t^gB-eJ4UDOlLM<Yk2gW9(mDqH_n_QnZ z*_JkN8Co8iekrCHs6v5Yzks!SBgDRigz3@+u1=eMlUZg@G_Qs({DSQg#QkU4`Ypwd zkBBav{rdX(PiArxcI=%W{Dk%Hf9dPPub->;35|3PEvjzE;bO%FVe-RBz?O96wO=52 zzaJhk(7SPN{F#F?WoerJW_MP;!B5}uyDP-@eS$MSS%ouKFE{WyF(J@6_gB4P23Qpc zokKwYY1GOL+~iFGVZng`VL(G*?c66~iDSfOnt^8e*cu3s|6{xX;c;0-5ZebChX4Qo M07*qoM6N<$g8B{~umAu6 delta 488 zcmVuLCl$5gJn3vP zuyBh`&DtqdufPy_K&t4&1Z*B=dNYqCwH!8X(CP86FC)_{rdt~p)+zW5YMnHrhFY(8w1mdT*I`J28R?2$AY2} zcu{~E9nZwrhN+18MvIoQo!C;}@XZ3db71~3Ytw-X{3~Ztn|PDwX?NWOrbC{8K-Z>PcdG)$c>)_x z-k8%E8m8w!xNZhkh`6J=ubd|U1hap!V_s72dW$F|m-)|1cj)X;nJJ&xQrU0xf}%JSSp_C2BLrf@5xJ e7f2xgV|)XN)WjePVp53!0000OV1ZP1_K>z@;j|==^1(6{> ze*ghuOGiZir3doG0007*Nklj+V7zSW3%>ED1Y>^_R?V3ofI-bfk$5bN! z%9~s%%1N2}ArGfacZ8wJmVygmYN!tb#=yZ{rCV;Oha`^^zn`&*LFl7>w2$_#CW=?g zhy1Src+!0P-G*bg;=2B8z;RTLJLCN(f5~Mlv1?>hfujM(mW>2Q3zPR6i&1jZoNvbn zEhfbPV%lw6rEzk`1u%ZJM8D1R(UIs4={gUzxS%VZSiIw^fMwl2Qp&EaNw1M(nz#Ay z>%6Y>jya`tH67XgK2BeA)A)k-J0CE;r>q&+_T7~n5l^q|ejD>2GBCJA{YLTmfB7W^ zJ>{eQm^B%lG8>=t351`kiYeZfEU@hzc z8yU#vr2|IB3TiV8{CpHdj9G30mw&R(vyb)Ex-3bJ2^{%#U z_?i3d<_eZs*_CP+1!e&*mW1J?_&yQJJ9VEO$BdqqxNfd97r0s%>Ib7vDvr~m)}07*qoM6N<$f|opV9{>OV delta 642 zcmV-|0)74T2Ga$QB$0kQe*#`fL_t(|obA;?kE0+I2XH=te5uZ@v6p)5=$CbFR+A>) z_7$^fZ{veZ=YI{L#q#ZU2UxA* zeE&5-=3~DPv2EUjt3=-EAii~AI&^4K;dv^MrU?MBb6RYgV3sBN{yERLzHl-fj(N3hdF-^IeG}W( z9ga1yW#HPM7t^CXUaD;er*{*Wgk;;KJsd&+H)P-Rn3=%rv}3|e9wrD=f2z1S@lE)bzW=7G9S2ijzhe>r>sAGPzu#(rpAhf3#v$-tSKB5O zZl<7{GSBrLzTno~q1txG>k^;9Ycw05_O4!X256 z&9c)lvc9V+;j;q;v0K%(gGkmt;tM?Gc&T?D3WNzAcMWZZfA1S*9ou~-uME1UE3kH- z1n~nO7*jAmO?qY4W5Gu7+63}yJYN;DZss{UGw7qmK3$q#D=worid5AObKDB+x|jk{ zCnBF0&DtICyk~MTMcUnL9VnA$6!A#d{{icEyb$QgLX0HZIrVG?2@0400xht9HdQr4 zL=KBpAIzsUcno4Lp;XU#8%KlDoyoLS7|lNm^VEe*7WI*jf!1R|oP9>BRDg+fJou3; z0()L^M?L5=aSuepQ-DZaAadhyK8uujHW#Q1&R6Hw;6vOV1ZP1_K>z@;j|==^1(6{> ze*ghuOGiZir3doG0003mBJSx!e|GBvNM~Zhc_xy+R&%!Nd_ODU=GjFTUnS|( zLzm^G!CE+%LeRFa9CR?CeSLvrMjJxJr8q9=o1sF)vtM|IV-y8#Sf~Mb-`f_df`udv z@G-?HO4_BW=g_v)*Yg%gt5b{7J>4?hB}0eNwr1`N^MJHEwY%{oFgau_GPpdSZLlVx z4R*zOYp~_7xNoq{Q*W8jR@c6)3xlmNOS!>NbAJ11FjQ51>zjj*5Gb3RtHb2n>*!<3U<;&Uf4&wX<`L}&Ay%~2 zo>j1^cO_h2Iq2YxB)xReVF76{rq%`Lw9QuwElg>@U82osgO51lw~{mzhK5ji)gF1kmaGqh95r(jUg9e_oy)xY$COe z*IEx=l5(T5`nB&H3l59MBLH*XnxD7k-xtkpdPv*dwY5M3{Aj+_yVZ%?1^#V50q_z5 U2B@~07*qoM6N<$f*zBuVgLXD diff --git a/graphics/object_events/pics/pokemon/politoed.png b/graphics/object_events/pics/pokemon/politoed.png index 8f3236508b7118931e03ecd37e3a8ae8c11779fc..fb076915a6033b03cf48054aefca4fe380220fd4 100644 GIT binary patch delta 759 zcmVOV1ZP1_K>z@;j|==^1(6{> ze*ghuOGiZir3doG0007QNklAajrgb@ElQIENe5Ms#CRvgp) z4d{ekZh#^c6lXxKbVae3W{2U#2D$+;F(M|`ZiuB9q@Xqf4Nh7o&o1fdMx=XFf63?X zvz_F*gk0BkU6-ybHjrgk6Kv@%Ibrh)e}h-^s|jqqEhj5tDA;V@7R>ey!JJ&|(p!G& z0yD?YVmn}`U`ubwl_E6-*)%l+*iUnpSCL_m5$l=6R)Bg0924`UM)C{0g zbHdagECQ2#%tUw#4<{}M3lB|^h69doD_$BC3}FN?u4f9cgp-O{&I7DZVMOYgfB2y4 zMLqB3?A0S4TXf2aPJ_6!8-m?sCCiIRP@#j`8Uly=xy-*t_Euk19SFa!`_9z&-Ixr}BQnr&u|05Tbq2hB9RLoNEY1`o=Z5X-y zRon4S%CA2Y+y~B+R0l2#M(wB}%zy`yqX4z(!+!IyG*p4zev_kKA$VS;e_^&}^rDtmX29JgfVxc%m1 zG(ZX-Oq^=TzdI^Iq8YGMa-;dMG(hbxH#APsENSpJSh(>PY|q002ovPDHLkV1mVORUZHV delta 645 zcmV;00($+)2G#|TB$0kQe*$4iL_t(|ob8rBi`y_5#?_&Nmh)Ij>950`jIh_%?Cp<7Fa(5YkT)U`vPzQyN)A<@wD$xdXyuTtl@v5uotv1Sy<=+Jb;0e}N?NF}>xd2OQiV zWOl$&!GYeAYlXssLMj~KNPL%7j0_55J(J7|kh};GUn|5kUP#0R#~k4R8sQ03Z?y3- zdyq*q*bHIfcC;CQDbmGAz{{GqXo3qq$mYE3&sj%$#&E`W%=QY04J&_Re@MGKzH-fs`frh;&9NJ$ zGD;T4Fz<$%)7UjD$fc(Z{jqBT{fcMxc0%W0L?Xa@I$ws9h8>lptS6?%Fm}a+^^)8A z>n}p#aUpVL0=E@|?TCgr;6jQCWHC-zW2ghyDHC9?2t`@7VXd;Rq|fm=oC2O4C>z%XW^K)YYeBH8Gv?DyVx+?t(^d&w?9gA9cqrOlG> zQyl>e^rB^Y2Ll|Hg8f(OV1ZP1_K>z@;j|==^1(6{> ze*ghuOGiZir3doG0006ENklO$A3}73$Pe>+Iynd{se`5kg6Q$4B^N!eGa$FFwdQ5c(9rKBL!F1-w zQ?Ht(&wPe;bWAWA1hHGg(vQdwvVk;U(g|YlY8Z4{$0~|Q2PzEc#N2M^de!VeCvAyp z){&VO--fX)Q=Gd_dXEK+8#b_2&1c$xZOD`-`PQE*kyisEyvEf_&>%kV#*%scMc zi!`{47HQ~12wG~y79wa#QAt3NC55e0ZSCCAklX;B3Ljt?pN{-~pDB>BYhCMFe_bjh z$kjjI&ttkkuRa*yY;b*yJ3{UDFHLkwplKqH-SzH7>Z5|h>8Dh8e>SoEU|!HRaoSeX z%wxx=oQW<8>M}`-8Rl_Levl2M0kxl`P|YwHImbHB$pkt}=!3>?@T+MS;LCtbv&mIE zek+IhF-1sUMp)pmX9I(2=0<@XNF7i15A*PJ65#WSriGqYNq z{--#))0@FJje;^9`Vx}SC1-fAKEd)ep zdGiVN;fKURZFzzE%-gKw0^LU=XXv)Ld3byYfe6#}V!JhT34e6Iii002ovPDHLkV1jIm2zLMg diff --git a/graphics/object_events/pics/pokemon/psyduck.png b/graphics/object_events/pics/pokemon/psyduck.png index 240547b885ff407ce170439c4b7932631ae933e4..d60e90c190cba8c57c9f819fcb29a2838960f176 100644 GIT binary patch delta 503 zcmVOV1ZP1_K>z@;j|==^1(6{> ze*ghuOGiZir3doG0004RNkln>>QDaeQ<#0nwQpJWq4(E=xK!F8XP{XAVs6ScxJ)m51d`6TDjz2W|>xblg-!>u$nCwsh z??kjf)8Rw5$9ruumR%<^hE3}vzLrC!15?W@m$j5R6D?(HGA4!F-{OF!3w{jY*y4VW tPsqo;3F+cL2pSATkDu;Sm*c;#6;H@emUL#XXZ-*G002ovPDHLkV1kkT<9`4E delta 404 zcmV;F0c-xt1m**fB$0kQe*tkxL_t(|obA=IYQr!P08kCyg=isTzQLTRM+YSEQt(F< z@&gWN^v4yt_E%hN;!(Y*P~9n&3dz!fZ+kxJF7e5>5L;}q#TI`jdxu4}u1m=)^ro3^w=jAsdIpT?c2~bxKE1f%*ycT4HjG(+e-&)=mT#-to!|3z zxV{;)7Tv%Lrk0JW>s_0-bI`akYg_Nmv|wr+TCEftVrqwxb%l$MuaGr{QA$1Z@fQXk zV!p?Up5%kS^AcA-!)eMHue5k+A6w4BV#fY{+2`Ti`_+<-EMwkTm?q@d=K$?KPgTVSNAq3IG5}MNUMnLSTX=LCc%~ diff --git a/graphics/object_events/pics/pokemon/quilava.png b/graphics/object_events/pics/pokemon/quilava.png index c1dbb971859f0a8b6ea0cd70fed91abb5a7a166b..b1f1d1e358e0fa6ded95c39bff89b96ac49ac041 100644 GIT binary patch delta 1044 zcmV+v1nc|p2jmElBv%J?NliruOV1ZP1_K>z@;j|==^1(6{> ze*ghuOGiZir3doG000AsNkl@uYnKR_)7yP(FIY?7H-lu|@ca40O# zWajzJ`)8(x@qhd?WB(8Po88}axZ;FnfBJj&2weeS(MX>d{e0ao>&qc)Zk`+P>P%9Q8;Mz4`0gcJInkhmhC7$-4~l_l1c zoa%tZn&`vSC2sfM^ar>+G6!N3wA`qKbkabdt;&kfBSuc zdfiXC{MMD%T#Dd8Bb02FmJQ@w_@F)V|9EP=1>4bM?(;sLZk0W3ts%%lL|BA~Rb z0UC9f9D!RI)ao!jf>q@Nz=xv%9camjOv;jZK1XxFhz*GVoG1XM0vb6$YQt&(*jrje zAS2=ck{g#iyQJtC7*BJSOYu{nTF$&mlt zU}ctlZ!<|fUjn=*B=Qu%r2ssVU8F~3(xflec4>Ql{TL-auOy@8b+@)RN$TxY`?t0Q za8Cj*c+y;70ca7`*va_{cVtO4cic=*;o^Zw2i>CfR%@LM>%D4!ueDCOf36x~a$M&r zS)EkPejy^LfZoZd_w86{ zzvS_f?>eF?cSs}-#Vd5X^vUCX)F~ZJEcBoNazAg$&ig7! zM>&vpv4}Y;Uqs7+C2$mgf3A5Ei5O+TMyDMS5|Pe+0a*Q%+r!#CMV|dM@8h*90`&bH z;QOosEb0jzCQ%y2#d32(Q%X`A&o5Ff=-v#3p-V_!)rT)W?mXi~S}Ru==<^Z4M+NYC z47Q?;ukUE|j#gb{(J|NTLm_8D5O72H9*y&utOGs)wo7SwmC;@Rf47>u(y%AA@|tAh z?(o&A1f(w4>mRDmmthcuu6uX4Iscx8JHhjpcja?=m<7#C#qd&S<#py4ZLD6jtl^Gb z<@rX3A;w`C;$|_y)nT~1Q?2;&BAW$@p*729%5!X>a4UPHL}-P*>`-1zP*B2s9f z4`KOF-u!>_=FN( z_P$8^aa*SCYmpad@{pV|#`2OMw`E!oL|!l81N(GD?#dX+0D>Q}M_Lf#uLwmYL5qSg z3L+uJ7^8C;Fy9k7bXf+y*1J|aD3(lt0g8GYsH9G%4b5v|%2)*Giav)slk3+eb<^CK zh`?401w6;GDv74rGZ+7@iEkd6#xxO09w%H73r9Sv;7>-07KG23~(j@hzO`>0In6I z4q!H=ihx%{0Vp%nqwHYlF+uI@w>bHAcM-={odeuOBx=QQe{H)a0OX2vj1jwcLqcW% zJVqV*^NbX`>^hra?6@4@yh5HM0PYx|!B3G~k&eR_%N^j}?D`RmT-r&3i|cN5H&N^y zl=GWi20Y+^gl?Mc3IM4hm7LuyQAZMbGsn&N9FjF1w+F)lu!=fW5wMD>E&-F1D&3OW zq&(~itDpore`iY-3tX3$oo$i2czn}!EH}hBe^87n^t$kZFEDF5*LvVs7HshM?SyH! z;L(-`7VF9a@>s8Fhbmo%$>KdR0Qy~6;s9Vku1UXz)>~e`aMS~)+c}W>ITbTIS7AKN zfb-ein}}Ex1uOlYhmeQ*`#GTYe>$^=<=GZF=F99HFP9alw>JQ{ zNeP(O6Wj^C*o*RXeS%|*VjRsbl8Odz5Hqw9%DTGVKK=NXHfg!YpoYf)ry^hkrl6JY zhuAyBzZkcg^ktS2Y&`8omc#aj-Z>9~QLWAi&uD32zX6kMgW9oD-aksAc z1ZplC&WB3r_ZPxIdd>d${FM8Y35xU|>VZhb8OeWF`~-L_n%(rCnb80M002ovPDHLk FV1lN}!Q21< diff --git a/graphics/object_events/pics/pokemon/raichu.png b/graphics/object_events/pics/pokemon/raichu.png index b43769e1fc2a1501580e1809d82a73dca421b547..b5ffa0402827807899dd11378d504e5575e06722 100644 GIT binary patch delta 805 zcmV+=1KRwJ2KNS#Bv%J?NliruOV1ZP1_K>z@;j|==^1(6{> ze*ghuOGiZir3doG0007;Nkl>79DNOguIRm z16>swm@1-|5mVu3FpQyNBJ>Q^#kyEd$hwfTQNCm8|8wLc8GuV% z;u12L8en;x_1L64d_HLD4jqPtJ9PPcf2gT;fzQgx_;>ic0TFX)af;8DijuRJs6p^vWZCQ9F7OzVLzdZsIt&<<`bJUlOY~p`pHSK| zXfY%;8n+DEoS`vej$*^XXI%iC7YI%Ec8ffICvON*Yv^(CgeW20uTj(-%#8u%e+v*b z@5yJz{m`T+Pw*N|$XvcurKoxJpbbih#0pRzX9$EJDj_(|Z=%|8V-y<>jK1*XF;?}7 zMsQf>ZUx_g6U^=Q72W`?*f3Ni1?wR~!?FCsL3E$FEdMg*dZU?XL&GYnA(~Wp1{y`p zO@UJI?-#x!krG@*_bnEJ&lrtxe`?xLb7Kf6(P)OJrJmogeuY91e!cyPAJv55+Y&Iz zW=lYYc`(z4P_jKq`J5v$1|AE+DtpF@U#hWrE5My(XNw4)?xv+~Y$|zX40|lcNnYre z?y(dMU)dTr2CIh_OTj7OlBI5J!}=tVxC-OKbRi%q=By34;2(U`|8S>Ee_AaMlC43_ zOAZUu*f1ANjUm`xlQ3}%wse;#rXns_f9m(ILj63*+6-V!;v`>~#ttN>_9StGnxytZ z-O?f^saekjf86v3u}J`rgE%34{bAW=dy;xrEOwTI-gOclkwLyTX~&h-n$b?pd3#+ZBk(}K0XFa=3ldW0u{7v_^M4gII> jRBNt!>SsEM|2F;sK_Bo!j9yrx00000NkvXXu0mjfO&4gU delta 701 zcmV;u0z&=w28{-gB$0kQe*&0EL_t(|ob8oAi`y_5#)z^o^qAmuPAQpHS8^ zXfY%;8nz7DoTDLQj-uk=i!K1hB|@XE-6D_Q$s0n{8hRW&Axa4MQ;M2{*ced008#Uv zd}iDajmqi_uh59Zf8wP|Ma|2pHmD$KR)Fd>L(ur43WC%8)>Ip=jiTbf=r^7`hO)k< z5gZn|+lKGJ8RmA|16~8Is2EBTg7pnTH$(AU? ztO^u@f4}k_iKO5%x^HnK_>9p2XQmA`D?>Pn1`|B4^nAtoe-$=@@bUI1p2-Qpw*_E= z&6a=z=D|!GLc#VV6){I*3_NZG5BW2m|B{W(TLEqaJ6lBXcr&haV^hHsWB7p;I4w&3 z(mfV};VWBVWw4yKSO|^@m#lPS8`dXjpB%!ZG+hYx8Ro1FxZrR6(0{zsB`p_6!PcPW zC5NSHY*;i*e~ls7%}AI!20OYbQd1EZtUverA4B~-$lDBHLXxzYo5l_VXZ9pgv1%EvBSeqnQ6JA#lg=3f7_Gi2>A%pa1q^!7XfyfB}9Vdy_? jr&@F6Q$N#5{I~HB11pH00000NkvXXu0mjfOV1ZP1_K>z@;j|==^1(6{> ze*ghuOGiZir3doG000A1Nkl-r;VCp-{wkTN*)1lMd2L#aXGxdG^ z12G8wPogy$zv`ckdop;{KN~GFA>&t!f7qPOU-OS*LWp1Al&0}R$BL2JKZ;iWp7`m& zXoRCq=cqx$`{c&xj0E7OePJ?cCoyHUcbndY?~YB*JU<&vTwyX!qD@XYGI@G&Wh%jq6D&Ox_nv$;f2?<3sioRV!*biB-oDotv!oY>qG?{jtF)|K4GSzNVKP4pl6d8;VJXsqz9qKiIXUI8&>P#AL zQy_#4Wn?e{$}RAM%tP~r4u@4OqXEc`)uL?Ar z5=co(guxOb;Og8n@>e)N_H4i8e>aTAG~%6d3mQh*y+;Or_~K>boNvVN-VRxgZ^^|9vg|*A<*y=-{u`r@lgQ!T9 zZZD_uA+}Y)3-OXwI8WR4fA$Hk(aSz@IBH`IHS?ZR&n{FRrJ6Ca8}nw zpC>>cZSB>063a)soZox_E4yc3+TTQJ=&8gv-2mGT!Z(@-pDDkqd}lk1^=b|5J7v8A z>T>R#tNYSsm!;JlVw>p!YxXGW1+m@T<+N|Qs^NwHy{&%7R}QLPe7JJd)%dK^Wjw!! zcW1gl9!H{Huy`(V`u*EGfv>u?dR>&?)*7ro6l3wT9)fQiw7#ke2tf6M#dDFJfimP)v#khps=n@^u?H7pPAAeNMkHe>w8kb3>9mS{!%%BfCyH zVP}76O~8e1VSD`+*fqK(Vnd%CfLen|9CFCmR#3 zYXGR2hu>A;T2tj6?m9vT?;Tjuv!$hT?caPY|rdj7S z#zbo)_$1il@%GlVBGuiLeZhmlWi~c`=spjkux}7GiPqDERZp>r1#jhR#<0pVD@(X1 zulvRlARrQp&OF9M>uKPJ(b2@Xd({|o!2Pn0_gc?Ve+Zw=&c|6ASI=fUze55?b8g<5 zzhrBeW8zoWz%VUhEIJZnhMxCcnil8tK?8G%?lu4~=lKlpOOxNV#yP}hf7fLESq=*} z4Vzr&Mbq%M`~CDhA&Zc~0K6KHW}nIyFrW38TO7$@!REQi_3tm`uwe6C4;y65W~`A} z!x7n{NiQIQ3=1~TO|A>Py6aJcrG(*s;ObJVT680R2-H0p#IWF~c;7>V=7r1nK^7m4 dmqq@`_zmLFXDXAVuT1~|002ovPDHLkV1g5WqxAp) diff --git a/graphics/object_events/pics/pokemon/ralts.png b/graphics/object_events/pics/pokemon/ralts.png index 476c86821e745e0755afa0a7b4e3d9d85e040ee5..3d67cfe81737dc991d0983b8bea32f9ff778ea82 100644 GIT binary patch delta 434 zcmV;j0Zsm#1BV2VBv%J?NliruOV1ZP1_K>z@;j|==^1(6{> ze*ghuOGiZir3doG0003iNklkA=f1L_E!!{*I~)y9N>_hT}{`yc>JnKEU{l)uZ#FMTkP zll@#sCZ`C_=UxMBqc7I6=hcH?wYY5UfBW@~&j7(=+@>HolB^b2)~xe#vf&Nw1a$|;|872eM5$P zz$gc0j)`%m${04RQv^A0qkz}ZeY9|<~<*n#CoQYQVp%$$xP+|>K zkseX+9%v_7HQMlj=9C>_Gh6cd9jkX+YWB=mM1z5PTwR4`aOS3Fm(>3N{W@G%M8g#k c-_rlhH?kK{1VbF*2><{907*qoM6N<$f^JE?7xyb)<%! zyWBH1gy33Y>+V$0U+w|AJ$&CvY+9+eK3M8v58VKJa4DY(df*L~*$=c5?^33}jtWpT z$UXw}n6@hF30I;~v}zEiwO}>g-#E!r`6yanmqv17Mq~qDMywX(X(`4@E;2~i^00000NkvXXu0mjfe!!qR diff --git a/graphics/object_events/pics/pokemon/rapidash.png b/graphics/object_events/pics/pokemon/rapidash.png index dd87435616767580da6a9cf71bc6612c0c6a2d37..c8c098b683a91f0d60ce3d40f76be4b8de2dedf6 100644 GIT binary patch delta 906 zcmV;519kk&2HOXaBv%J?NliruOV1ZP1_K>z@;j|==^1(6{> ze*ghuOGiZir3doG00092Nklbb<(DJV-}BMak-LPBX-&swBs{_pVjijD_A}e)mYv^S<{-CglJ4 z%fVBX4gNa)kN#Pty&o!$MyMrZ(d!cOe^3ixdca%@2$NR@7^+`Yp{7TguDzfyq26Dv z6=cM!L8dXEtBE{R9l2IdX`n8FF`uJE8f5c0onj7IG)0d`YF^1&3wg{^jd4IX<80M! zWs=Xs6u+Nq4U)(FmaXnvnL?iBi*73$@e|`wiaAySiSWhFy>I8S6LJXJcxv4Ce-d=; zDpmpsxp2m_qoAE9PMlb+EUs>B#^j<`oT%sgVl*6n3ffupwh7=4p+LN`hoddp!#&r5 z#`A0kT-Qc{I*Z-48qmvxWYawwZTDxQHmtc0lqV^w)-n4`*F)a27Z~W9nzuN`S|s zhD~@kgdQhpdHoZWo6B_WfMW;JK<9}cUwfFHJlq^uz|IAm@h^E;8)AN5A#x!Az9R#j z$6FSQHWro(L+gyOXG5LqranV&)N9_?nZl0YO`vYYhh5&B6sG`=v&dPJfBuGR!=8H# zI6!3zE-CwAB$(Qnj*#Qe&u!2-pQ1e00HWt`0YXbS$2FrR%8~wrd`mmF_DA|^JX*lps z%a)RcyS@wE<^g`wFCMKAf3o6}Zt>7h8r>-M2RoDc(ynyb(ZstdroxY#sqr9QT4(Z! z=8vR_RRtea;@ z&p#@<`9AzQqjwv>ndxj2v#5qGJD6RPaQn5Z>(#w;N ge(F)&WBRAZPZ#~rcIy1<-T(jq07*qoM6N<$g6>wYr~m)} delta 764 zcmVq&i|ir&Lo8VAAdQRud~Iz zrvK4DOpNuZ=4hoxLYRClAxez^ZU$sVK$?Fkz|#H33JpCmbYp?}e+te0MMgnZp&Nt- zvrJE9sqV;(dZdB=3al(ciL?!~!tXJsJn7NniJm9f*g{lr-(Vczg^b7EDw8NneY`$0 zHc0N#E052sOd$%Rz*}Xjc;_tfF&A1O5tX=<=XLI!ltH`3z4f}uQQM8I1roA%y1mn` z^U*1Cca_Cq>v67LfBML|-sk(E>sY(aVsp&_?+^yWH?Iq>=nNk`1zI1o6v`5v*%OP) ziyp8Eg<`vOg6pFvCc}xRKo-sc9RTXOXO3P2tpJB#6!!pd@kjTE;mB7uayaix`~deG zuFzn*%Yp_6l<&FX&IPE*)cuno;LPL$qe7H}!S<7^wHlObk*-lPB!$l!^uyjW%7me9Ee&OZ!Io;I}^ zKg)WPDO@-{1X_+fpYrWE$YXV!AmX|I8-5s;J3T;S3i76EKNXnmfykzlqk8nd$?~*g zfI$E@n0UUMe^y+&@}gmV*h;4f{EkO{OORd#x-R)m{b0&OD8X%ggJ(Uw zx!}Qm31poIuKVsU`rWG=xF}sn_LMFSo4S`<$`|%3*-6U-Y}*WX7gc=phI^AQx;5%v zsPuT!)sBw!VdzCwEK^-m#O^^o5%+{Pg{pYl5ZbE(a!Gt5wx;ihjrC)Z@8eUg{uOCm z#C4$#iQZ*^LMv{@DS~zTfb{63>Gsbw-qZe8sRg&(ZnS>{SrIlo5p#T|+b2d_+S+QC u-p}?)^M9(?9G~g3^U>EdhBKyrdi(;J{{ZD4eCr$l0000OV1ZP1_K>z@;j|==^1(6{> ze*ghuOGiZir3doG0005PNklo#zQ_}z}{U(J&iL%UQ3KKmpavHUz3no<9FP#D05u{`1Lr>!ulQAz61fg zTXmu*47iplXh4Q)oL8wce9-0h`jA=W4XMG91%O58h`AYMChmP#-1R32m`m4|f0~wX z$ZL4=eRY>l#+ix4C(L_;kmbx@dz9C(E^5$HnQ>-p?vJec5(Ip}z*R)&+2&Tq*a=?% z9!XmTEMzvJ27JTc@!|%amEW-$XBUv1>GU;^v&>XQf9=Zi?vh1Po?cJ1oSGq%uE65r zs=zo`a<1t5?tQMN%?@8L3q@LI3~&07*qoM6N<$g4!PrVgLXD delta 476 zcmV<20VDpN1+D~;B$0kQe*w8kL_t(|ob8jpYQr!P#GmK<39*xf^n`OO{Dw8__nxmGEwF*0Vu)5fB3d4pD>NGNWe+1 zWBh9x)Og4@4A{qBOhH>3tb762BVBNk?qnfUZwG3`$fFjuZEB`x8QH}LBF zYFf18%tYf87QI2pe`?{cJ<1!{mx_=hn%64G!als&y+sy S+tmjE0000 diff --git a/graphics/object_events/pics/pokemon/rattata.png b/graphics/object_events/pics/pokemon/rattata.png index 9bec00d32ecea8e137735598c462efad649cbf18..a3ab65a3f592efc57f9eb6938776dc7f125d161b 100644 GIT binary patch delta 544 zcmV+*0^j|L1oQ-uBv%J?NliruOV1ZP1_K>z@;j|==^1(6{> ze*ghuOGiZir3doG0004)Nkl zO4bk$d5w@#`U)O0*bYUN-BRDFl}Xz`m;5A$e%ZB0jD83*3f4xDBG1u?k7@v?rjgw3;vyvbtI~m!<1XoDc{JO5|8Tgm!jSHmFrSXXNdcsNKB53#PmI0Wq`6l1JMrG4OKx z+~m?$log&&CdcgqUf3SDD?IS(KHLixAR*TW>D)~R0LiBi3+=E iN9ThDKTRn7$GicYfF6G(e;O750000ndu%0sI;x@2fM5+)76eH~{FJ|@l_MBh9~83`K;(A~2r^AZ5}EMQ*|*J~wVBxFs| zZVD_2nA;BUlfo;&tUy7H1R?vMJAfSDf`A_zq0JGoZL5*}fvKlVazhylxB|d0i!a<% z^3E_|^Je`SsjDFrCy1h=UoXF!AsN;m?bJ4D$hzbn)2F3ySVM2cJ13qM(< z+l@l4>RFSPF`nP9b~4UMWkrPrM5tHWqC>43xFm14#2(fiUa&l@Pl%benmpRtijnjE zb5|K%Q?__MS)BI|cwu|qZ}7mYb1zhYgj}ACb2s(KZsAT#EOV1ZP1_K>z@;j|==^1(6{> ze*ghuOGiZir3doG000A#Nkl%k&y4;ctMjN48^ zke*R{DdIYp0vU(^2}oxlkfCHIt+p1ANwlPY+L2U5Tg&Ua<4HO?VuEH%(GvvlJ5s;z z?%k1;W&Pj&I}KWyK=a_=vW8SN@(r#gfBJC#PJ9c0Rd9_zAb_KpzZc)a^<=K2#(WGW z@5jO_*<)eNFFv+%@Su%VD;Z5D#uQ4HEcs?~DacdCLhEMyLA3B$5VWxx-p@b zw`maG;^&H0#xKXrpR5E8CQ+0o!9&J^VU$Km3qOmZv-K?7^dbAT8h;oqYSiQ^N{ZlT z{2V|OiO(4-WUR(Z^SoxLBc{P`f5Yr;w!F2PjQ7k2?z$l0j=Xz5EOaLy|n@WD9~8?+g>B1@y`?|~{>6JJkb#o-k!j61Ow!-QCEGZ4 zavOh=+tB6rvJ{16G3Zas9~9>M06X?7T_PTKRN%}I99}CSkpjG=f6JX1cTGs@HNs6p z;{=6^IKm!NV*;up(G$QCiVg<8adR$+5`@<52{H;T(39k}Pvv6khHKHMTeZEuU_jl* z3ytq3<{NJI1eZK_gbKtj*pj&!hx@udv5;# X#KIaD-Cg9~00000NkvXXu0mjfG|S+4 delta 936 zcmV;Z16Ta*2=)h%B$0kQe*=L@L_t(|ob8rPi`zIHhqb31bQnw*=3vZHP1zj6QaUcp zAuJ11(HzRohZu@|$YHiKU>(H7UrA|7bP$t#2KSP~U`kItl!ojq)CW_%f60z5&&K=G z+mO&{{PrBHY1?BF>dIX#0h6((D(gBjw_o9Q3e7}p$Bp=X; z9nfOA*$DiC(g|8_O2HoX)qK>!M)-n;OFO_~>`mVZc}h>mVz#+*J9sqZ!~JZ^cc<+D zn{n!S?ir=@Wa4?=e@zF2@OVF)@;%kUn>xT|>^Z4>JRXlvMqc8%`}ye6I`Id4S(k(1 zm`*lLK#Q^CB(DFMQh($mj@!Za9p`92>oR{#pU$T5Z+2_c=9%M4|7Z9OmE(vGhSj(S ztbo<5VW(8g{a;7vI<2o(o8it}z^U_n!u9Rh%a@+IzIVY@e*i-klZMq!crr+nUEE#9 zAzPe*?>Lq0H{HM*p6ELh^4mV2az^sV1Ozp+pj0fLkb&nl0e2XL0U?ZC$tVQu1vQ&M zEhPNVy#QehLsqQjs0zS@kQq#Q7r_d9OM!Z%#afs}L7EDj`CEkk80KgJyv|La5oVEEFo7h~0lK0&H-W}D zU~Hh2r~^1-utBR5K{$^I`6ELisG_s{&^1B`U?%X;y$!ey zEEiq9ejaA^Uxl83-2g)A57Rd!24NYX1K$u~gj2m_Fm7v|n#l0|?Qp{^vCV zAyTl(f4S&E;F@Jb=s;a0E20>LyWtQR#d@>rhLE$B^#HAgT);_GMGnGU|EqppLP+4vXVRN&5RagOx=S3?38nz8fJyyo`fR*7!2<~EQ387kSCEHrQRTkSz1P%5# zfcgHA_6$YqqonGuh1s2c*rx-=Y@<>wY%G7N9{%forTz~8&*e|pp2NVn%BYV30000< KMNUMnLSTabQpu12 diff --git a/graphics/object_events/pics/pokemon/registeel.png b/graphics/object_events/pics/pokemon/registeel.png index 3bb37c8685d0b1abe165832913903dd9ea15f62e..f735eba0e4434365cc488b6a022580e79fdfdcb0 100644 GIT binary patch delta 938 zcmV;b16BN*2Kxt)Bv%J?NliruOV1ZP1_K>z@;j|==^1(6{> ze*ghuOGiZir3doG0009YNklQJ1(As7vwI6d{nOeu*-%gZf1Z-E8OIf_i<=*pA~ED$y>Lc(-3J zJdg9rwm|59?&lv(PRxmaW5k$yn{x{re_m6(yOC$xAKhELK=r+HGk<5}ebY4e(2dSf z`p9}fH|}aQHfyxLl$Z*YaeaJef7-RxN9939QZ<<`->k zHdG=;1t}k>vKCx1Q3|~b`>IUDe=+od-3-HXTWi&-sz{=Olm$m3qw|ZizV_J3GG-Ei zMxSU3%QAdoyj-p5B)V(U7TRAV{h_I7qSMYY?syVedSBE;*2yw_B8&Z^mnfLF)5axb zaZwR)?{C`9#!l$IUR`8c`Ton!FmOESz7Ueqm(#MOWD2fyeF0fAbgL!Q&3< zYci3Di-Xro+AujX+L`6gJ4XP?D8g3BC3quR9>Mk0s>0lxgIOl=9Ff?8ZAJ!|| zB&(HpMfmw;cPln8@K$Toe<(rVvmQE5IxGks1g3o*I4}%tQqcUAuuyjp_N0Qy@^OI@ z7zsx&;M;2~I*$v&b3D?cKtc+M6%9K{!_6)|b{t2}2Z6j$=9cnE2<{>{R~Tb*J_zK6 zGB=!KHwpyj69pqMN{kGT>|r$wghJWqp@U*Raqhz2!$8K*UF0XuNQW+#mJ$Wwaq6EEKGQq+1OMmw4bmGiSY@m;oB#j- M07*qoM6N<$f;0ZHqyPW_ delta 714 zcmV;*0yX{n2buQMW@M-pRb%YDtEZ_eEUq{I;>|SN5;Z* zc=|nkbuH0n=omXaRu6qMzw()1ZPT`Kk(i^56s|3bZgbNKf9yw>bQ`XiBsO`YLEECh zp7rrj5FZy&j|VO+SdZ13FiX_0;LyB4G2w)p(M1YV!da?~_s5BV1GElPlqFN%nNbOx^70ACVX?RsPXc+>vb%UnM zz)cv||1fxLH>?7S3{J-aj$G6+(z? zi|~GzAnmeYaH8((K=8KFAOTl`Pdf)@YS!P_!4`XUKOV1ZP1_K>z@;j|==^1(6{> ze*ghuOGiZir3doG0004hNkl*Uy z($fA>;*N&a7PsrWS#ZIa`1hi98-5Sr99 z>TJWFN>mkdObFpwP+ir~*#^V5?T*edB`VKV+U!;^+n`W~b}`3oN-d5rD0Ml`_LXbL zvG6;?(yL;H;U|UxE*)w`7p(bUl+iTpObT$ay-#s9FgxidI~=H;-@HX`ByKc(e|eC# zQr`1tiI#kS8qRABhR=x(%ar!LS!6-nXgqnW^?EfgSR`5sg4Lbi!FZJDRki!Tk3MSL zhvU2}=kAJ2{9`5N;>Y)SVaRZpXe{T^1#zPSs$5xyB(r>k!Y`JyEQbjv^F?I-hM{uX z)w!m83#U`eGoV}}?w0(kb5QiSC5`ppHDE5cp0Di#v@zh%_65Jj&(CaOi3I=v002ov JPDHLkV1i$m?g9V+ delta 363 zcmV-x0hIpR1ik~1B$0kQe*sBJL_t(|obA*xYK1Tu2k%NS1HlHq zU(3#G^qW3O=Cj>YI(N>0wGLr7w_N_NfqD6GeKF5|OUr^kn@<}j=rF+Vkrn^|002ov JPDHLkV1l)Htylm6 diff --git a/graphics/object_events/pics/pokemon/salamence.png b/graphics/object_events/pics/pokemon/salamence.png index 58d74685323c554b6009230bf43b750b1a3e6fbc..e7bb255877b00b7d52aaa83b96713cf6f2967931 100644 GIT binary patch delta 1028 zcmV+f1pE7?2h<3VBv%J?NliruOV1ZP1_K>z@;j|==^1(6{> ze*ghuOGiZir3doG000AcNklHt_7>7@TvK=7Gh0zWg^fGpV797NLMh%rK zpo;*-1!)0+h7P=B@noo(I;!R(AW)~I$db(ov~(@}KafXRQB>dm()TES96!_!odWa) zDDgRv&yV+#M~RUC>+>kb8OPfp{;vYZfA_~^;?Kti_}~5iEI?ckLj820%yCgE3r?N! zggGHiU7$1W_yK-zbFuxEfB#Zt zRgLfB#;IFVDfo_Re8ht3wbmfUUxon&Vvf8`l5>s_4Ae$7`wG*_c-O~ z49^``7(bp1lbtizqyYt17d)_9%}G9mBBSu?Tuu4M5l;dNtTa=TF=n}GK!Me&fpxI& zN!+p$Z@AGJOy)!XVq_f0f-+-bf7fJPi)R5k6Y6@?K|mf&Zg6fjyx{`G*R$bE5IE_e zhOt6`?j{e=nMA(71{7W%;0?cOTPL$8GYdLW-X9}`Erdl5vJ%1p{`7tY>o%?o zTN*|Ut6AAFl^0;Amsnwdf9M)N4zRozRvT9y!)Lcu!=%A%IB@`2D-j$e+{=XB=sMH` zij2Q5W)FoufL6-vh_QCUl%0OHgx77epB&CW@o~n`UYXa{yR;|Rp_toQ&&U##Fbh!J z(*of1uiMujHhI9Fb78l0%sZJ-1tJ^yO(FCTv@s^q0OX#@`bof>f8|R4{^wgwc&b>w zd-E#h9dxIbh`}AJ`T`_C-o0a}Ck@11K5CijJwIlJikxZxpsT#@`2ED~QzFX!4 yyQM{M^A_qk`c9#!A|6;SHKY&Y!L(lU+11}FNr8BvFf0TB0000e}a&Zfi18ZPl6bK z?@V)-O$}1c?F5_Yd>3fbF;HP2@AQBZC#JQy!KTocWpN!~^KL%LM>d}raf|6a3I}r$ zYT>lYrWoNzY_1Y)9t898-kiuuzBEmyUw9yo;a%{&`@-j4*5!OK3l|jF^<%V}Ne{aV*k2|dEO@s>?)JxW2T&)f4amsRm*B&~og%V&4u&n}Y)&m}k z;ow+Lp~)zmj?I)Oya;Hp)|>!Kq-8*Z^{#JJ#{Vu5>Hehx8C>%j<}-d^F5pL0E1>zRW_JWLe{pO5-LPA&8Od!`0Lj4$_;t5kaDpZ16!G<&y~dG|F$CtFwqKEc;& zjT{N<8+^6+WrGJ|1cK+RRx85Tkd{IWG`w2n0(=-^d@EH#3_Kv?W~c(z5)yU|`|?`= zMf;^IOv*1N%5OV1ZP1_K>z@;j|==^1(6{> ze*ghuOGiZir3doG0008uNklMP)!dbZYr1 zeYs|HqbXYwr$e{IVPGDzD88Pof3zznLzfoF4T64@^nEUgMvMZ1Hz2UgB~= z;V843n=amWoO5MhadLh>$ubBxH+o~6yPk71 z@a_Yr%00n-c1nY%`u1j$WhJ7{RbGfX46O9Xe03)0lm$&ON2!cbYP;+UXP@OQe`a~E z^unKytn|p0$eb|-n!5?+gi6gw_q4p9VtMT%8=Au2g-O1pjP;C__5Bp{$WAZX<+@54 zdahmkp6ic=?Iv`<@;rKH!Fac=rno7JPiNo_te0Vu>kE9J>!1EhZ*a(~9G!+uaTz9A z2&~>ggs+#?G|Ov$`u4*E-i2x2f3DG6C}6t|lgwW{oO%3ub$yJ>e-_B9}T?q6T7 zfM@K72^}zpr&!#rXkfX=lAwr1^yRGOa)u4V(5>i-!1|{ZwwU!i{E2V8Lr+iRpJ_2= z7Gy<_M(x^Dri^cRFwB6qzhF&q-nK8VTSn;haEk@qtrNq0KXM~T&Z3Wbe`}x%axM3SJ_M z-LBJa0?~Gcji5*1P3oRYeQs=Wk|NxJ9G{CU(w>3$l-YEkd9_XrDj{Sl zC=QtRp9%06dnYo4Y;WLD;86VKkcXCk4E(q88{Oedw9dHT!T?k&PDHLkV1f>+ BoGkzV delta 700 zcmV;t0z>`02aE=gB$0kQe*%|DL_t(|ob8prZrd;r#<^%Mmv(KQr2x4Vl?NWsrMXAS zOEsGtP1&3{9lFIb1Mq+hvaUz#AEi>s(4_@(HVpkp^ZSnEiB#$>-r}E$V)J*bUSrs> zUu98qHql(N0#&@oGQ_f3XI)0Y;MZ6lix*ib$HuC64=b#VcUFGXe+sKmI)g8;0_!B< zx?W*z$fN_7EE9GHtXgMd3~b(wf^*hhxzdnh6)e}wPGd@i9+XuptE4mwN;Lz;FoJafO_k*+}zSfV}9bd!C=XI zLsB)N-1#gkMb!r&xZG8F*7tbv{?ij3e4g8y&_W4q?XxT+p01HD@9x)_;mMc_7-~Qd zJp6sT2gw-6gcdA;9LmFaVt7nA3NlCvVK9){fRtHpD1yz7 zY_ki`9e)iym&18U%(Q9u;{*z3m{UOY9kX=1IcfxLy*$*lGQuV0 zD1NdneZMA-y*L;~1D+d{L^L5sxnxe-cbo{GWKsP%XI8OBn8va!@G7MD89X!EOV1ZP1_K>z@;j|==^1(6{> ze*ghuOGiZir3doG0007wNkl$k)y!O*8izQ-Sd2H>T=w13s$GyU5p z#q$jGDeJ=kC{EbaC+r&}u_0kD{l z3XH5oh84~w@lPoO5FOjpJ|AYz9rK1|xNQWkMamik1DJGM5ErT>T7aZCm%_9IYK26~ z((l>9P$qpyh)Zm#OM8P@n@?WO&WCdxNm>~Z8&Wf*GCM?8P1tObCI@BSX7v3Y{Cl}+!uVjv`RO~ zhPaLnaZs6@yLCU|Uo4rucY9_(f5ZZxI+wwUZ#m=l6+L3VCfDTiWzVVQOf~-Cs`H|o z@J(#NzIzwrv4A;$YgN&o z0IODSKB~dxOCYT%SFBGEO~&p=O!`-=_YSiDc80>7J6jF@Eu7y3SC0~SKk%3UWHb?1 z{Aq^1qkj5mfpH@q77f5dH9w%;b^lY3<7yD6qxj)zH^}J59CjNd{KI(WPVs+kKLKF@ VOfQZqR3!ia002ovPDHLkV1kfJX9)lR delta 688 zcmV;h0#E(v27m^TB$0kQe*%k1L_t(|obA;;Zrd;v0AQYgxr-$EkmPh; ziq^eD+-#IN1YQF12MD|vBqcP+5>RBHEmDzG+C_hs0^wlj(<9&Gk3b{z(q7uXYWOex z%cj-e8QEjD`vF)Tv1^VP8fN4CV>?w;66xkoy?e#ROBmWBw}Jtfe>UBmrbfN{(Gw%& zsT>s;*{FgVT51MQIU|&u+SHJbiVzNYBMQ1}46jwr7DXeR^{yaYnTlD3vff-Mw;RwH zqH@--XM1Cv^*$l3sOKT?4G}H8Dg8PYn3^_SLU)rj>gq`oXx^AeenRP6xxPGL1{10% zyUDvtSb9l`${NqVe^zhGZzpoT$eUcWRO_-Oms#(2yP6*`f2=9A<@uuL)Ou!GIJo+B z)lK+1Iu$gVMO`vGH=>L4fqawW2c8SoJN z6G>kwp8C3Rdj45A58drjETdDw+Yq$Xb$F0nymu@B9Vi#Vrt8hz&RjV#Bs4IiRu!=T z+;V%Tg10Khe`5g||2~fc^ zaU-8+2p#S7M~hq-aldGU?)w3|U5B4$95;hFAI0}iCJ%#*Va#E-LBijR7vUKH=k^1P W|4ff)(xGMm0000OV1ZP1_K>z@;j|==^1(6{> ze*ghuOGiZir3doG0007@NklBjE6ae5`G-SCSac))@^d#t{Ky-o@T48cN z>MZ&b9pWxol7O?AKpP@0`7_-+^bb@>I&4F^U(lf^S<;;pUn!(x-eCC9yL<1R>@z|y z@e=ceJdipm@xTfGm-e4Fuv7lIiD#wIzN z6?QivCNQ%ZyVcpe2$0RF^l1dS-SvJ1A}MSx0yl7t1w%WWg#aPv7Vi%Ql#%ISV^JKt zJ`vqp9ow0B;DQIo7B_1qln_5ZYz&N?o=#Xdld;j62V~;uBNZbfCn;S55ZhdOe`>>5 zdZ=S#rZ$8G*^DXxLIJqN89pI|ybg};x()W$4K^e3twsXe55Ge$Wq#0`FDE|;`3Vp0 zPD4LGztbDm)&;PD@83YRogXy*T>c8*m%Gb0ebf4)P2b#?;Ta1>-@vS~ zQBX}4)LV~|!_KNl3SRtm*Dk=@f4KJB{#&)=WdLH)H*nvWcLkdq2?;e``@rcnm2Obc zRX38X@w^e>arMq2sQe z#7nuo#C`env3A<8PbH-^-s%P#3u8NVeXKyFx+GuJzU_$DG+yg$iP!UFtqV#VMNw=v zP&+jbz~CdCulu1n;D3U}W2U!+AUD#H)W_R5#JO=7%f{HuV2njrmvnp|B7Cc#V=yk~ z15Ri>xa>KNhX0u*hY0moNCCn=Q`QGSIE)ARPYTYHq3JMREuiLs)O9u-0g^+G3qE;1 oDyS0VFk!UdNj&%YOZu~k z%u0~Zm3inVKzdi=Ue&733g%p)1`5OiKQ;xR#crLs>$kNOE}rU=s|`R+9k&GzH5(8@ zcI(VZtFAXX&Sc5#03bGyw$v|}RmRq2S(Vtr&@c^k$y^T&4J$DffEb2WVB}9ih;NEs z@3Fyylff_&S!Cv*f0jQ0z3*1}rk@T%9N{=F`UW3`3zknRP~Mh?I6?0l%w(pQpF#gjRuTCIc84 zqhQGKVDe+1aq|kkRu-;tBp6suBeGzur!7PSr@+r=mPO^AfA!g(26h-HhNf1C(Q)${ zSVuuJ0Ght7$$)*ZOYImtUP0M7)RAw|LW8YRmnP6DTrHUnQG@)lH^vORCLX_KJmQc9H@ z7&sZA&_J(sb2|;K0{IgflWr@YwzJBJ`8(+Y^E^XqEqRixB;B|ClGZt7m-7l6P`O`* zAZN@hJz>*Tz_`@J*>(Fj0j|xv>-1p$|6ms*V1ABo8Z6frf|TIr35$X^@zM3q`1kk& XJduNNCoM{=00000NkvXXu0mjfK6oyM diff --git a/graphics/object_events/pics/pokemon/seaking.png b/graphics/object_events/pics/pokemon/seaking.png index bb97b08d71735fe43fc2b68e1694e38062505701..5d34a273ad1ffcdeb9e957561a3c2f76246491bc 100644 GIT binary patch delta 1007 zcmVA902g#cSaefwW^{L9a%BKVOhiyl zM<8}(av(DOV1ZP1_K>z@;j|==^1(6{> ze*ghuOGiZir3doG000AHNklB6vtf*T(bzCaV@Y=x%h90h0`p-*Iep! z$)AuS$Ne>_X2L?+^)Ok6z`@!0Z;*sZkr}j2QsubIv-PAMJ3ArG!4*+4nvX5L@B3xh zN%C|29|m)$(|<6G(I-=qxW)X#WA*5ae*kd&WdPnF<9s&%_)x{nrKo2nON<8r;IrAo z!q$=}gTl;QQZfislR#Dmfsis18f!CNIxSL2Cz-CsTdM-d#KbEh*{RFX;h^Mo#|-ME zv&Y-%PvT26@qLjPrLlp&(F=G@F%S&yvDM=u)8OIc`EcL6gMD0%1P0vXH^u)L3ULX}I#|*_jAr28) z&{mr?1Z;7m)eO>b7Y?qh55`}>5*^!-J7Z1+1PmsNS@s+w8lW!gGK(24IV)=hHK8=l zsoI&LpoH>%kIvm`rhl&Ej$?kp~%5R`OoeJt&H(h9h!kxC$=y z4o8uP6~q9U_tB^)81hk3k0pcfEQzh)+u^uN1qn!)7&5w$T(s-M!8riB5ZMbdP*c(N zWq82moEXV>gWF{}RZ!#;gYY3TH{7fb&CWtv%sDJbFB@mwVJrB9jC~3if3dl55jk-d z)_;C_g$B2KS?PxuJ-Xbv!MSY^T=2@~UO)^F3MO}-uhyHo?-gYzax7wdxOsfl9QOJ_ zUKIig=km0WBnT5jN`kEVYuz+mUy(py5xb^sUO)S7)ASx!b>NC>JP0%>r1b_+aAHA% z$uI4C(`=8usEQd^)KsfSe{FO9??0R7mJCYb_uilzY$f~mQVss>v2swzq8iBK53k;R zX*%>c_eqOP&z+Usm-XGp&EMW2o+HHjoT@0qlV+X6ve~DeE{aJq2xj@gu>3@sG1Xe1<8Nt+ dKgV~*SCk-DNdm_Q4LJY+002ovPDHLkV1hzr)zbg~ delta 891 zcmV->1BCp)2+9YLB$0kQe*;xXL_t(|ob8rPirhF9$Gxa!BY4Izgn+<8kWKIzVqqAD z3_ixJvT6pr=-@j9W|Lzy4D>>cX_|p7s^~LF!lW0~=nV5LJ*mr1SIA~y7SW z)f{1CYsO*o zpeYXS=`Q>!Vrc?D7l}cQ7L~O*3CKIqBo}Ki47WFFHA=BKMFD;>wf!v>X>la*Ne&qZ zyw^jQ1&}dg6cMXie`AepNuY2Q#}u%tjH|Ik`$_fsfs+83z<2gppcEy?4COu{P7ygU z&e$>q>~Nzq49avDj=t@WHeSFIJ?$4hSbHKMV767xa^xJ*41L?TRnBP3S=%${38nR3 z_1?}6C6tc~kC2jDFwuL*EhH1f6-C5ki5py%mrIE}%bc>7e~+pkK~Y3KJR%R4tK`yy z$I;Yj1u;MseYEO#4Eae>j}^0sEQy`qH}m6E3KEbI7%I9@TwLkn(R%>8kU0u6P@!n| zZF<1gTv*Ac*-uqX6%=(~5HUpNXRVKVa!@vFP7BJn+B<)|75qiUJ_U@}KDUSrT&4A| zKEFqUHMt z(0E^$jU+(`3?&J&?n-Mtj2#Ii7P)Ko`tMJFY5fp!*C+0%#p}u9M@RQqA$~e{phF$fBFczK66 z^xQf5<+Zj){Yx~6=LqqAO;r@)*I`g8VsD&8#)Qye_w_?%hvCvVK?1}o?#Cm+wP^5K zxp=C2Ahw*|rLtQLcFzyuhCg!mI5g-;vtmjq^WIrK>1&6r5nW77MW5T!4VMnOGh94f zzQL|DaryWTY);-E?9J6-KO~2~VLZq$4hL4}w%qV?G&mtLMLt3F`QslSMstpBctV-T z0virKm1~QxUSZ+CJeaf0;$GLB;i$U)La^HphV3WHimBG-9Dhq&{5ife{spw8It!4E R<8A-|002ovPDHLkV1k^4t@i)` diff --git a/graphics/object_events/pics/pokemon/seedot.png b/graphics/object_events/pics/pokemon/seedot.png index 5768e992b57b7af8f12adc84a5d21fbbd33a71c8..fa16b28df8641000e91a1fb284324125d06590d1 100644 GIT binary patch delta 393 zcmV;40e1f60^b9WBv%J?NliruOV1ZP1_K>z@;j|==^1(6{? ze*t1kM@0Xn2lB-L009F@L_t(|obA-HYQ!)M24D>xHB`rSNxUS`EiX|>mm^b2wp;D@ zJ195XCS6)RRDGN6VwGIF6#Q?WjBPm(0o2sg)YSZ4*zPm3Z18rUagfbEZE35K2Nr#B zUhOdWL6H^gsPE#!R$~{e$_CdFb@qN^e@~QLked#D9~HJ5JOxKj%8hjENZoDlw~pfr zG6RQ>)DEKy-<->aPsQBWvez^7EEtc>>r^&;HEq+{vOkP5S}>lPWtqx`hs*WyE_pF} z77V9W&yRxf)#yod+E8v-ulmIbhIJf8JLg2>I3|BK9#epNuXOU5y%NT_i}+A z#4^0)p+nW#Y!$1d?()F@_Q@oc9Abc;o}Qkb??pnJQEWpDZN}NQ#ImKMMw!L*nWJwo z#Mx6Y%ruR8;iz#;_H_e~L}U2eI1v>aXw!L`vcgeAq~vTQZKS;;fB&%|?j7eFD1)Sq ze1nnGnM>X9>qT6so0G{fk_h{{;m-|j2z9fXSR0)yKdLhPY>#cTywYVc3~pHHWEd~& z>KhFFSjrzud7s%fvuP|($mcK=`y*O1yBzJIJT~@@7Kb=%@eKF Wl2>`_oAm$y002ov22Mn-LSTZKBZ?FN diff --git a/graphics/object_events/pics/pokemon/sentret.png b/graphics/object_events/pics/pokemon/sentret.png index ec695ed2ba2a2188505230b2dd3d8fe613521dca..eba10d7c89ba873ad6820a3d72dc7260e98bce78 100644 GIT binary patch delta 621 zcmV-z0+Riy1d|1jB!35VNliruxJLj002g#cSaefwW^{L9a%BKVOhiyl zM<8}(av(DOV1ZP1_K>z@;j|==^1poj5 zFi=cXMc&@t|NsB)!i?OBR=IC6vS&DwKOl2K5Lzh+IS2sWL6J!if3;Qf(f|Me0b)x> zME|7+^2GoE0k=s+K~#90?Ucc4!axv)_awoCd5881WP*Cy91J29^c4yX;z+3s4Z1plZK!@xz-Rq&78(^xFic}qp(-hi{frf0Y#dvi zIasLfAa`(`-3Vvle-!)7!8HJAIk>*hCgPeKcy@S)?V%t6oD(A$%zozD;SEr5Zs7VH zlNiAr6<|D<2tXN(gYe7K8ek<5D~$3|VBUfjN$^gbT8@?6e+FYK7=x0#XHp}7btl!&=Avzt z`g2NH6uPLq?4*~b5$!1HN0nWYUoXIl-P-?G0)Fn)`%Cr(Iamnkpa6$q00000NkvXX Hu0mjfehUgk delta 528 zcmV+r0`L8k1*rs(B!4haOjJeQ-roQJ|L)$4=EYLYq(QWcIh1N3b3qVVDF`_T0Nz0u zv>*`wgL89pb3s8t5D*Z##jB1000Fc~L_t(|ob8mcZo)7ShCQK3NaP*bH$e_CnW306 zkq!-Ff~60@Ku|VbkpbFHmkgvts$|#DfG>yYsAE+w(|5l6?|*WZkFlHG>}EInKL#7O zM>9Wjah>@xbb5TqRO;Yb%K=D33U1|FkUF@*Iqx{Q`I*kxHMijG@DBS!fdVMUMle|X z%#Fh<2S&LC+kbORYy@*GKzJ#DbIja05I;X|Io~jV3WK;5Sax^^C3q)JEJsT0gQ*pa zxDxpjD$qB-B&^^!3$ZKN8yMyzD|kfSvm9=DD$%(-IxII%@qsuOD0w{A7s0mqkRas{ z1Swz~h})%L*>TBQTfx5haDghb^$g~6Vb9~xIM4`>6Mx}DeO4^l=9>|9@rcYNb}N^< zisgKWIgI2A@yoH{5#fnt7C+qGqYhbNc!XY(m%w|1;{7$GYs99*U>Mm1Z^?rQzr?&Z znFe_G6q705SKdT_%n`Ff7nPSC50gaVj^dH5?2_zy0amPT|6d9CnN#mC*%yd@7GHAu Spy2=j00{s|MNUMnLSTabH1Jmd diff --git a/graphics/object_events/pics/pokemon/seviper.png b/graphics/object_events/pics/pokemon/seviper.png index 7cccce75d88aab24bfd5bbbed468fc2106ebb284..7a6d4464823c38180742524271b401c41d6d23c9 100644 GIT binary patch delta 963 zcmV;!13dhn2b2hqBv%J?NliruOV1ZP1_K>z@;j|==^1(6{> ze*ghuOGiZir3doG0009xNkl4Iq28R5Hxm05Iw1GAhPYPuz^w7Ki zL3;8ch4zwzQ7~RsO$o7w?k1todeMmnLJz5q5>`u1a9Zf8f~4Lo)zW^mCbKiE*2bIA z@3imC&hvaTI|)Mn>$Vmy-elG9YqD15f3+L%>9ebItYgfWIq)wPG>;9Skz*Z~85?j5 zxJVjV18C$}$9Rjenm%xS0kAn6MZ%cSbF5>`I3Mhc02mBuzyrp%wH)ub!l5iG^x6_M0N=%*~DqgmowW21B17*%KJe><8f1srVpX_|bo{9w7O`9r;!Jf>qakz=25UEUYQJ zdAkNW)Dz0um%v;kxU)O&jLfRMpWWW{E71l)xaTBQEVFm^<0DB7a^a8OPIu)7dcsS9 zh`it%_XCwhzyVlP(;$5BG*m8cjZSvC)j~Ktm)gp`nWIKX4sw?R5kBMHfA1wtXaJ?K zy+lnkHx8W)1_(5iJ6j z6Mfmqb_fj9 zCZqWTI_SbLot9`gc8qWs=c?+vkrb~Pg4C9g0}2XFSTZw0pTAOBVf}{j5k0S#S~2`q zUjUhE_a1d(K$(4A(1BZ3ig>63^O_LOXqXD^{dgv@g}-GvAoL*tY+n;1EJRUX5YI#y lybBoykTE2H9e?MR)*rPy@l$97DpCLd002ovPDHLkV1oRvwub-! delta 848 zcmV-W1F!s)2%iU#B$0kQe*-E>L_t(|ob8lBOB+EH$LClUmVAeSg2e1;b7&}@%%O`H zDR`^+UF;>GA{Z}g420N2cau=C9;&kv2oh}W~Rb%G~d^&f3PIYWCW)A#I#e3%lf6&OOjvI_Uatl_? z?#viKBd0pH4jGH^z{3T=J#->AV*=+?#}?!Kac2a;_$30KG1f&n-Eosc9Xv*m0B5yN z0#9^Kcl>BU0u(}L2BosN1#EIk4M7-&gk(n7+6qI|jRN-YhPI|yca$#0nIQmShteDp zgl@hPl1yoN$lq|if1Mfg0jk2o+GD(NQ5kS)Ne&@*R&6@J6Vnt+MM^ z81E8$Zw3Yfx8Spg!>^%G105web;|{JNegBUus{k2@~w^pf7`zMngh|MbFil2m)(fV z{SSp2s0A;MR=tU3l}~262Vqlh5QN8GR>cPU>`q0J7|$kudNwc+fzZgm`o5rj@3?Bqv5fGmu@iWqAc-(Jt1$o~Ks-<1Qt!>q@yHP54vidBP#|I5%!GX3q_Rd0TM->rPpuf=#0wx(bnnR^1(Z3& zf&tvBM!M#aCd?xtoY6QH==pTEVGDoDazNlA0qhV7i6ul0FGy!w7`$5<28b~vfSrEk anbse1*Xz`wqmk+W0000OV1ZP1_K>z@;j|==^1(6{> ze*ghuOGiZir3doG0004;NklwbVZ@c}&@^Z}aa2g@g9vsxiq3W}_M|h@K7OTyVy=;gNk} zW0@Xys(0KV7eu3hb1sORR`KsXagQvrGu@mRm~bFA2-OpHZCNnuuMpJC4Nx`6S#&<} zCazg{eImB@T+no_f;2HYHY4f4IQCsOUJ)K6)1}x5yr7N;WD9MhV}D3&kT1cU}gYe>3xykU(fddQPA^> z7*}GNXqsG+CHM;iGr+)cgzqoY%JuOT1g3$#3Ng_BK(@@NL4zxDz4sG#RAj%Tr*VX1 zk%dJ+0bAs-R5w&NSbl7Gl<+umLbjG1|NG0iLOpQ5E3T^jTY~j=$I&`#`Mb{9KkQ?2 mKIiMo3?=_ne8Wrqp}qigAnocv{ovsM0000K0ym zRtp4Io}rW%QB35b=vJ7>@?!Dxo1}HSU2(+~SN!9M`^@+_=idnie9&AVAX;SQ;4J(Q zlVE`~7x03Fh~=b!=y_{daS}v;GPQt;{Firbm&Xuz4O2$9b?EVOx+O zjf9vwkMrGeAv*-MXZJE5jz>Ze5HeHpf}TTVo$|08DrExm3bDLNd#@vbI-3GV3-gl8 zSN;GasC*Y&Ahaf}d-0MZ=nLBxQs>da^4ad3#};&!YPKR&LH(_ndQW)Gs2yfmvJNS2 z8|+ICs8cjs;<*o%>+OVft&&WOV1ZP1_K>z@;j|==^1(6{> ze*ghuOGiZir3doG0007`Nkls#e*>FLDftrJN-1=4 zD1nZ-7z*BMxl1(F7L>M73Pm+GSu*qy&QMCJb;w^Kr1ZtMIJr}7$M|}REbAmoZlF`a z&-N3#|8u98JA~G?u65nCC|&J;&Ih2Ye|&?4l`~`(fXUL0kUWfzk9+kDW%vN_5r%0- z$elDJd2ut~#ZoQ9bq&*uW&p037q<-FlEr|irH+@^I8U?J&=l4a_g`nY>3Fo?r1^?J zFsB>l#f{|njN&sU*4dRwQa#{zw{3*94K2}VbC3l%X@@h6St8w0Inp3vdG{pSe>o%P z8>O0-WIo^|1CYt~76EaSZuMvyX(0L{x1DKp$*^9RR{ z$!xVJWL&|uVUl^^mn}tk^z@g8l8yS8^=i2puE6)ALH^DGm}I2m5=*l8*(tml^!9uN z_3Z|h*kP%*&lZV&--~yko-Om|ykQsXhx(=xa@Zhd z-k^2r7_3qbyvOG(n%v9hcElekYUGYo^?314myNy|tkcw0ePPy!c>1nTcp&~rp9_Wi z!frLAjEP4O^(=14Qr~C|OXYEB$}b3(`S9n*;r*lcJVM-mXO#9^p(jmB-N>0WGGa&A r(ghR=WN4|xLoj|ICX7gm_&@6p87)d!a}23t00000NkvXXu0mjf^;CvZ delta 663 zcmV;I0%-mJ2ImEkB$0kQe*$tzL_t(|obA;ybDJ;}2XHMJvcPxXxO@?=nJJ;cIzKe>2RBb=t%)m3J9! zFwWGxreB-T0FejxT^0=;Wj{^7I^jtw=)ddo6VFQnnb$Njn-lF#>|H!L-CpvmU4GN! z)40{>WI4dN@5%`qHXtY`S_91{?hoJs?oY?_xXpY)Kg2j3tabrSLomB3v<9jl?CTH$ z$QLsbw^;=K?%CIBe*@hpU4Ok{%8RG_!3smSfc2Ej^EUIq%aLUbKmUsB2A82_h0-W} zUd$%G+(G4CgWlNyJ5VNM%-SrrZ1DnmwOv6gXSEGB8qbGvnEJPr*k8k8Za-x^mmkY?anmIJIl z8_deIw(%She-ce(gNAv7;5-F3oz!;4%!0(`rK*Q$ImeSUr%96oTAbOH=-XVv{fbawo4Z-}4Cd{M}Hh9*>1jX{LR% xN@#q-_I^NGAVYhlegvBz#FiCp5&viX1t>JZ!-c2E4OIXD002ovPDHLkV1gO5KdJx# diff --git a/graphics/object_events/pics/pokemon/slowking.png b/graphics/object_events/pics/pokemon/slowking.png index fe05626844e846e309f81e7b04f3141233051c80..3173a30fa9eaa64f1ea7b5ea8fe642084a44e11d 100644 GIT binary patch delta 762 zcmVOV1ZP1_K>z@;j|==^1(6{> ze*ghuOGiZir3doG0007TNklQAFl8`wf_Zv*QlmrDsAVWe_y9cqY_BlhB7WyWC zlKdn+TZoYV@wY_jF5i^p`%v)Voafnhe*-_y2V>+0n?G^9znCvf43Ng zn5!ET#b|(;l+4JaS8ThgwJ}-`P%nIA{3&We&E{*EO8ASTa~qvqhFkl-#!U)ma}zFn z)Kt}9ybhBe+jhZ?R~$4klgAfR6ZnDU`QDP7^@ZUQb6MPvHe1KTOmEG0;_9*G$=*;2 z*BA9RFw7@hDc-?M=xMkhBre|}o|etq+?J!6Qq=yKk5G-6V`{k(o9l7nlT>XY8- zr>jnqAZs%G=5)K_d|y-Bq<8zF+i{wxhe7Z9=E|L8b^$mC2r!dJ{iCh`548(VE?>S$ zC&-$XL2K|BYW+?)dgfs!;^74cGZFC(m(VuVGlKACZLDFEGHsYEdGt>eqZ73)9Vy8Z0@jWj`Q#LVEuMf~qC$KE}(Q^)oA+}6PQ0yOj zPHKy`39t0~ZIRfqT?X)SOfKI7$R=(=Ij@Zq*2bLk^!+ga$o2zN(^n={Qe>`Vp=8=W s$FSc&KZKOoekrs4oRb3$82@bi0E|xC27QWSY5)KL07*qoM6N<$f(`mxhyVZp delta 642 zcmV-|0)73=2Ga$QB$0kQe*#`fL_t(|obA@ZYTGav0APvcmWzI3dP$sjFe<&Q3lR~$ zj6Ot3$sS;^W8Nc&zC#1OxenwUrCyw40AS!WtHDK?6SfB+h@tYq~8`2 zWB=oCiRM$ixv2NKfFy%D$6*@R`E1O>boVDdE_qsG-aTw`QRn5lf6m8*3ly}Q_};@O z+T844jiAlg#i!+3&~A2m!}O`fZEL4BW~?{dPk}V&_IhZApuMs7K)Z;df0B~!hW5Q@ z)0}k2SZn5_izU5(jw>~yJ6VI>jxA`)fqI?o_JN|zCw9LGaqf9>vcAl>!i;jLHGtMB<>J4-9x1Izhx*IQ;@M45H4ikRR)RFfQGhE& znW^6|1eBRNo^U07b6n}-4MCX=6d*!yMY%DMQA?g!bok|dS(0b1!?b+hn_o!)IS`~H zd3i5ezRLlccqz1sA^Vhhgi@lLz_WzwAxP522{?!XXNkTUbP(rJ>6Yi9C1vEcA6OV1ZP1_K>z@;j|==^1(6{> ze*ghuOGiZir3doG0008gNkl)DLIIf-qrsa2g}#QSxAB{PS$!e>dhdte_IfgPCDe&H7Uwb0#QyMU6QX5&fo_ zi&-?2Y?ALaxPJmdNSJ00`$Fu8a+lZ@3iYFN&5`<}fOM(D$idk@= z)FZWwCmBc)V49VB8Q#GxKUgcJiWr-s(6g^G2OF_FJlwO-2PbL;eS;CBywP8jf4-?f znnw^kOJ^u6D_Dbd;F)KaXT1Ds1koFgn1^t5UKGVe24c@_v5xm#KDHAE5ayAz8nYl@1P){RF!wi5jOO-Xvvuj+`oS@5ShvBo38XQ|heS`Ib$c4F~hMdSZ6X1|YWs893H+D~Nu=kZ&oky*@d`PVg8q z(}>pKSVo!^)L^;yd31s;g`dIT6qSN mjiN8O9VhR}>pvLzSK}9a)4#)RyTLO60000HDLE7h9fRQ8S^fXc?nssp z|Ko23KFM-Nm-^)_L=dLp3Ccc^eR!l}mk&PbIqVyZ7~}i;MsMzG zi1`)-$FVhxDR!vspLe-{^kjTxx(mJ?9lSrBro zhkR}U#E$b;;+^I*rJc2%ZzB^vNl)f=kGG zBRYd+9QB4x4W=vgJZ`%LJ8q0%Z(zGJO;s6`poH&s5?J1o8+)>7L{f*H#g6caUYt6+BKW zJD>UDaawmz8qP{qEPI0?*NDjb(Hjg|mSuT~MT72D!p!LYmy46q#C4G#OV1ZP1_K>z@;j|==^1(6{> ze*ghuOGiZir3doG0004^Nkli?9E z`^?*)m*dQs2O;TixrU9_O};+XreRvre*wfCpfnehM|#&##&iHSFVZ}_0bRNbkedr! zHkFo5fd^3YB3aCzax}oQ54#E+HVfY;C7_jU*Z#tMUaXxKhPm4;g$NqSoaSIQMkoGd zpDt{hU4jPuv)cAxklhc89(U!o*;wYdp>6JOZ?h(F`rv@=a~|Ro*=F@DyL(*sf4IBn zJ@y{v06k{Y&)KZ4_9v)1$0&~g#yIbca&|R`aTq(zmqLxi`QB%pE1c_u=EnQntgN6& z3#a*OB1DLev>6GJyrW!$lsK0lQEnPah$1{7eF5x^5<`VfI57^bh63e@qyw3E0cnE% z_})k1WAl|#`0?i{rSKi#l?WuxNCOez+&rG&hU5u-J)v&(gfv{~DPEAZZB6oJ+mhUT sV?*qHjTtRY8#22N<@P)D^MAR%0ml(Gxh`R++W-In07*qoM6N<$g2%=Cb^rhX delta 446 zcmV;v0YU!$1ds%fB$0kQe*v3GL_t(|obA-XYJ)%!2H-t;-FJ}o5GeE|HVdA-WCaf; zQp|!7$jew^AmGb{f)MB>IrQW!gdl>4V%I>)%$7BfTZz@y+lk*W9eEpvVfR z`7RYALPu&BLZrB%1}SkaL89C=ln}>wK=uaMtrByEPPj6TtcC*RsiXs$_X1gp{`lT! z5n%J9Quy)bDW&io;I#-P&O;I6+&rG&=i~{!UQzdYMH(LUGzKro`o1Cgq3=m02g#cSaefwW^{L9a%BKVOhiyl zM<8}(av(DOV1ZP1_K>z@;j|==^1(6{> ze*ghuOGiZir3doG0004MNkl{%0r5@@axRH*!ZW;q zhPS8}$wps;(@flW-qpSWcRm8ai?*_spk-U!72(?dp~!_UK{di!)6g$-0Cc=zMLBkrFxVs^=%fyVn^_5tPRW?JcX?eUs+5@HX|z12IdXZ z2@Q#+BaJS%^}G>AoG8==l-pPI8lx%cKEKe+KX4 zLHnLvLnIf`A{KL_QOPhuqdi(ECDMI6hLXZiaAmWKY+gwz_}u6u3Xk*HZkP4dd!K19 z*8Wf3RokByfI-%9e;WV{Zi2L7ur}Mj-euZ4aJy^}fF76qJiZ&&$6amUpY>j5AnWP- oeu*1wF1mj`ca~)@P{f)qK=_4t5a5zNRsaA107*qoM6N<$f@rDU=>Px# delta 378 zcmV-=0fqj?1kD4GB$0kQe*suYL_t(|obA%FPQx$|2H;z>BrjFO*aa4rJVq*(j?gU| zHG-L!xx+iMn?67rWoQN>r$?$n>!jF}X3alD`f|RzSPH<9Aw!0on=sFN8MyE|s*$*d zA?NnOuFDwZZE?B7>}|UQx1;-};cj}lS7j0}z-fq*G0N-d#on0Bf0aG3Ylv>fQjTJu zRpxPNHltVpAng?fn7tsCP|bpU0&A;QP)nd z6ro-m2X-COzTw?%jpTN-5Vg(@`%WCu$1BpamM){zO#`|NVfA8t&#A%a%2c%~oJQ7} zL8n8inAKt5i6LUlaFk@9+4#KGTFJucCXD^O@;eYS{+tQx#m@h!2Ymc#0R*%SPmd|U z{2@Iw%y$;&*Aro_gCG&}6zl}z=keXJJ04gA|Ey111I5JN_e+9wf6?>nowK5Sfg#>} Y0sA(&h%0$+kN^Mx07*qoM6N<$f^)RH1^@s6 diff --git a/graphics/object_events/pics/pokemon/tentacruel.png b/graphics/object_events/pics/pokemon/tentacruel.png index 69f52aef80d1367094dd11d832abb028a7a782cd..fabd2969cb549aefc8c8494ed1911c431786c431 100644 GIT binary patch delta 698 zcmV;r0!96u1&s!fBv%J?NliruOV1ZP1_K>z@;j|==^1(6{> ze*ghuOGiZir3doG0006pNklMHgcyhvtm)P5vk(byTLD=gOW!e&mCGd3+kZKrh?Wvp2LH*4i{*1^(LO#aFcsFAc zywP~ZungW}bRjxv4%`u!n`!{?+_y&_f9Jqs?P8O)?1QD+_n$Rz#-GHcrXe7@ZQ-%W z{gpgn^hI3ihwsjKoV$U_Bp!SNXD}2OJM(X@b1!K9=jQrHYZ?#A6%A2sdCwozMu@*& zX`ZhzSw~v_o1?Z4l=gu8O6MWOgMsFGqT78~ZdRk))u#U4yX*oeO=0Qo3c=~Lf1Ci% zi*wK2AJAdor_BA)uyDcewA?oG48J^HsO_CG;#z4rgRle#)y~R|qjVobNghQC%P;j8 zxpQ~Ik!(bzGyh*9*POee+oZ>eM|><&t2v{$^Om%Egt&R0mu_;(SH&G7+Md&CVll%k zvI32nHLnZp(#(2UPPw46FP-O3f2T<@Wn0trjntZmy3i=y6rRg7`LM7wO}DhVC$+bR zUEiY~Gk@8xzc6Q3bHP-aHH9)?l)2sJtjt-RX94M%^61$-Y)s^m3}#f8J3G-y7|;pg z{(>S5lIDV4`8*8v3t9&>F&Ausq}tl@mHymL4PDe*olbN?GC^>nw}qM5SQnnl`(&Xf zNty`xsj{5tP19uFuOEZ*fzCzs-W29-;n|!}!Soax?IuWaFi{mW|5aa$#Q*>R07*qoM6N<$f|$2Yq5uE@ delta 588 zcmV-S0<-;%2Au_vB$0kQe*!2;L_t(|obA=IZks?D2k={2dM{l4o_@H72lla1_ywc6sl4#E5ff4|f;1;nr~JT(zF z@`BldU+RaC!F*nYiOM9Ke1KpwHX{K_ET?~P3jd*QEmCmAJj(3-rwj^ ztT5T^^y;UN`X*620zX!|N+Fv}^eE!Peh2IA{p|XF+y3rD4gr*=unzZy5DZ#QKon(F z6dq0(F!<-}$Fu2Ee+coQ<+hPm#P#`H?P$b^8>Qt8!WsfpyR0{k(i*0c{?1caeyOkM z2ajj$$wpMVjGZUB<|^dFCK@XQiXwNrE3~}}(&rwc`#i7R<<$ROJR+hO1%oCoGp(X5 z&|JB8Tj zd76mshC{iXCWi&x*;H5#b5I^NCiHW$G!5RE(1pQC$q6ouzOdwn!m(T~AQSoMXYIiZ{xIdDoDlpRquJ@+F30000OV1ZP1_K>z@;j|==^1(6{> ze*ghuOGiZir3doG0004PNkl(WD&& z2WJr^m8=a-+D#~ibS}1aD@t2#bMDX&;q2fSXok{Bux3myzH<|V{I}nG_YU6j0MevM zlP1mIg)p^$8|MI=;Rev{_=IfWN)v~3e}~}?6;^Nqsdr;LCEWJh0mH4kL*KJ;L)91= z3^%C{J5&FKp|1IkGwh=VVm?{D$VN%eCRWd6xP|8m++pF-nnpH~4Z3BT6B~Ec6vDh! zIM?bpHg2f2ayN}8?jy6&YCPlCbr8Pfh@i8w!2`cKj)Mdin!_Ep3-;J0H=a3#R~Uvfzr9cCwV%5eZviB z>&u;DN#X0SK=vl$i-0Z`3IjP@Z}ynN`#~VP6!Ye4r7(ce=jEs~yw;7HNDkk}<_~;+ r9y9l2{^9zn?{lInAJatP|K=O76Pdv!hV*cM00000NkvXXu0mjfEi&U> delta 392 zcmV;30eAk%1lt3UB$0kQe*tDmL_t(|obAuCYQj(y2H*o`%67>hL5j2~H0fl#1=BiI z+6+4MVcHClj!D6ottwPI1szPYIcLZ-^Z_If;V8vs%)R#9ZiPbr?fdUJ7Y;y`Dpjgf z`Mb!G*uSkO07--!AP(6L-jE0_2T2k{xC<2xZje`(%uPog>)t%Ve;s=hLl1GodbwCe zxaHNvw~U(z^@kAzlXui0yHiIiU3Bbr$I;vfH`P6gyC~iqt8@`>h#lAMgt*r(rS7x9 z^^qThxWO9LABR3}>JCRkiaYM>LHR@8HRYoJ@?^G9zgoWKtGHEi+Zk1iL2j^u=oQrv8|H`oM8QTV9 mkeKnG8rDazHowjn|2NOV1ZP1_K>z@;j|==^1(6{> ze*ghuOGiZir3doG0003yNklyrAWE$%jNEmB?n-srIuRiVoF&4!CW7}R%~A&?L(cO z)t|f&_OCGglcA;oBIt_-Q%jxLGx{LbfB57lh@dYKlgxL5NQ|3=^RN)f5#Es=L9RFW zz!|rB#u%C$@2T(nJdpJ^ZyB3LJ)0_SVIIjX8tv}~^BOFmmTIhB)L@iVen9BC1;4VF z7y1GM%F+9%k0s&6!$6@_v5y-1VM2FNA8!iv;s*pC22Q%{yST-N*5pT{maAU-VELiP zf$Np!oY*F1?6mf8^~AFaM2%<}gR^R07*qoM6N<$f(&rXb^rhX delta 345 zcmV-f0jBKE+D|}~&#JI^ge~$~19N`1$5#(Wm zC(gJ{3&vnlJW@aTc_8a;+A?m8dTFY-Me|5*(PV!=G;hHIYN@6=M-7d#$`1&=wBT3v z@d%s5nDw>5-&u=@+;!V&h0Y rh@GQ0)F3+u%CQdLpUuw~{@eNiOw2jP>O4gc00000NkvXXu0mjfde5aW diff --git a/graphics/object_events/pics/pokemon/trapinch.png b/graphics/object_events/pics/pokemon/trapinch.png index 08895be4cb0f203ad956157d66b97ca9be5fd043..55391b9d6f9431c4761e1110aa362338e3f0dacc 100644 GIT binary patch delta 446 zcmV;v0YUzw1Cs=hBv%J?NliruOV1ZP1_K>z@;j|==^1(6{> ze*ghuOGiZir3doG0003uNklu0{Hm&`1tsopDmH z2($*5X9|#92vOjM;8N7m;kg3A(wO0ff7tlO;fvuwiCb|Y>QbUUHRQNKoeE0a+{9rb z?1EFnewe6|s8wbPQryH0RP$zm8M-55ygQ&)8Ks%kz&2r`;#@Jz@Rlj{kRDJ6=`v?2 zpe9k=9n0ve<zKQg~=?HIQFvg;q_6Qw_pWn%N?g#Z8m07*qoM6N<$f=Is4I{*Lx delta 336 zcmV-W0k8g(1fv6xB$0kQe*rE@L_t(|obA-HYQr!P2H^A1L0jY^s7EPy=wxD%2eFNy zew=Q}CKUwLlvhjx9Xc3S&d^#;PcC#S=-)mh-5nM(KuStVN=nM_L+K{!zZNi3?sUYE zIR`PX6d;|Hvd0bCy{vV_YX!2cH^&XR_hZC&(}5DV6;jrvMtyB4e{h4n7Sy;)>`}0oKa`Zw&M+; zCM+K=CHrc*G>}56zL*_YIJ0%TH@LwzRoQoYjTsD6GOV1ZP1_K>z@;j|==^1(6{> ze*ghuOGiZir3doG000B2Nklg=;&)ZhN@b=!x?V>5xn8NufF0VoB%n?(v&G9tSSplnq0){4 zMXLBL(K|dLK~S1Y0WN;cqI0184yD51gR>~%jIu1i&CE`%R*#j zY4R(1#ZA6WkC5XmX%;Fj43`20^KIQBG{hdsJcExwk}}D7lBK2vpcf5`B$v((3)7+W z=q@2g$6S|`Xiicrv8V*`4!w+Le+fj6Eop%sn+NGVx;M99JOR67=2@y`jC zsPsS)OQ6v^2qt zHS=7z(39n>2jr7)IgYVm%s^&Un1p~i=cdKZ>brxT;kQ)UdlR5%|Z4}5s>eA9p%tORFQ z5B;Er8tvKDG(>jqfgnf*`eEyyLWcRY2EK~nEvz&sT|M;!lmLTOe;gvaN{~`xaHMc* z3~D_;xP`Sr{210u7e+B__~QCq1`BLK7}kQ}$-7w_Fj#IbVMM15yW>T?X#~M=8pq7s zu{#U{Kk$3eEv#Y;m*x+eYjG)Cgvf5Zbe^$htlOLU(utoLjt5bAe{g{t+M4Ytg3)Kg z$hH5iZkS=W%4IWeQ{357FY4^({XsukH1C08W=~NY3h3E}mE%qZwxGLHJaFG}!PN+k v=fKX+rgjwd_YOsSD*qT(0{!=F`?uq7lsy(V{|se^00000NkvXXu0mjf{X+e{ delta 950 zcmV;n14;aa34{ocB$0kQe*=$6L_t(|ob8oQYuiW|#&xg`KIlt~yY#ZYR0_!+0wHo? z4;wJCg`Gn#d&y}pOTsI`=+reC!xntlA`7VoFG?5okdqp{Ppms0ky zV`KP@W}fH$r^IpoU;oMFS-)RT(bDsF?XUcr2D{0brRP;GSD(4Ce^cLwn~%slko-=lSt@XT=IHePjWaGc5{nbNuoXN$TM#?@S44^mk zs>=}@v1_VHt-07yN|*B4>4zy@M{YheJ>weq7gbU6oyD@2k_5^S1xG)122$3k;tS9x zyh@^=G)+OS-xkttf6`>qlpHFHWyQ-%7f9X)jIk#{s#5ey`L5%t(Kni=u8O8H@in~V zK3-?S*l7X%M$5I~rXs;|*HwrNsYbFa@KX^<2?d8DH6=j3XkJ4pojtBhh0^0^j2)kH zof2q=!n^$+Vy>HFJH!Ym^>0Q*^-D-3?$#fg;w-OI<=wHpw0P zF5xuBhA9GBw95p9%sDqDcCz#aVuoqzt{OH|mA?n}G$|5|Ls0yFV)YajSck-J zzHwfOeyoSv)yBzR8O~=>_fOagZ|dk))7dmy z_wRvXVNcNz6PVbBt>azO%EOV1ZP1_K>z@;j|==^1(6{> ze*ghuOGiZir3doG0008_NklBl~6vwq_$zo{eT&m*vh-EKb3_WS-;;W?x zrHejBp`W1SQv{l$hnIYq_U4;1*NJTig`z&6&yvo>m!V6C2=3tbB>n&L(|a}{&*OO< z27QA6S)g2Q} z*p9`vo@biyBqMW7nP3Z3&oYktJjs)KmLtm;Ti7|KjKx}n2FHvM!;)kH^ZW*rs^U4m zXIq}i;CK_>3*w1jmM!Wr<{x^(_xU;JLDHv;f=z#-Zd9Z&u$wP4)QgkV3|rJQe?iix zjDmc}7C*A_si+)yG>ketZi&}E!=&ZBjF}glGL_8*d(Evoq1kgc8b%!ZhQ%tMVM2MP zJoU_Z$S7DO`LcDE?Vg=sr+A+-4)xOj;qjR-|KP(=_eb6^1I{o~mgl{wV{Stx<^?Oml&CCbArFFulH0*= zyEI3J5pV3nHy+%9YHSl^`HyA*SaeZ6)P=fZCHNvlK@ioourG%g?OwIWax}!oZPdeM zW?U6n)2QE`iT#iP-&~OvhPp7@cK{!+Mne?r-hZzO>C4a{%h3=w06bIxf3C^^10h#d zEBx9iClEh4Z4Ye6{(l{R Y0i8FI4siZvhyVZp07*qoM6N<$f;IoDIRF3v delta 760 zcmV8YA{(StKo(&d{Yp2-wi?M1CLt98ZLNw$FBH^aK89f#cymD|Meg z6u8e+@!dWCP(V?>qlY5XBj^4kDe;D~L3}vP@)Pj_l za^U-JC^ELUwr=a8$SiQq_o2j;^GZT)aLpL$cwO&RnZKVn?{_7B03rYkH;>@b;?vN9N!-s)T`=4fdlHfY}2=lg7B5^AH=#UDi&T1 z*@)9U;jtH(cz{#If0N*rsqjzy8-zH+?#$zA$iVU)ullyYghJCNni(Kx6m)gl`)KLU z91TYa^Pz$oZZo0Hv4VU{&@gA>tsN&D4<6so+^;=w#o&7U8*Vd^s^TWgO9{tHz?Gr3 zR>IRI^a`Lc5Dl3O(4t-!8A8sa`@&E8mPk?YoEO2iZ+n6}lLVR0K>FYl zllPt*i%G|ZB`@SFKbe$-C}=?8tR9yboxXZxu^QsV_5Eaoi&+$$@5jU>{1F=Tfq1nn zx_hpTLcSQH;3$5m)}%Ca$YM3b0oqJTo0w(FX>-LvOAt!Ir2ux*gA_`r)sT%={rV|w z9H4t-oeW)df9k-d@+mPOt#z@#GSEl~jas_sZk!QTLu#E?x`QOp&TQ9O!R(wj0@4{Y z7!b*TqJaS!3lQGiGp>fzIAu+j3A8htSd6Ay2Ca>GNR7cQ!cbWGjH%*H7Pr_pQJ?|j zDGD&_u(R&dMZ^>XmsUWO4mjsj4OQrc!aTkhGGjXHZnB%=1&&r`6=0K@pw&^3S=&J~ z+N@xzXKPgY#4$v4i5Ol~7OV1ZP1_K>z@;j|==^1(6{> ze*ghuOGiZir3doG00047Nkl8ZB6bJA(-O%Nh?)?xC?dYI&=wcw~s$g^t z{T6AK?p@NMOZs_A3xVJ_NUkVSvs^Eoe1Ur*$3=pP}Xh6IjP$b=Q?)Aim|{Ve|I_iMIJJS1koKa&N0t1JKw@VbX>b(yx%Z7 z-vUis#y9R+9$JGx?{w|v)jBeI(9?tfi9qdv`! zCvtxGHlyq3OER#VJ(Av-d}QbrJ7U=_sP%yt`mk4A4_D7G)Jtmf+3CQ8-~ZA6_=A6& ZA7HBLl}Ow;QUCw|07*qoM6N<$0fG~-+8+P_ delta 345 zcmV-f0jB=91gry)B$0kQe*rg1L_t(|obA-1Zo@DT2H-;hBYukEy~`vU3?wE!FkrvU zq>gN41$(a=6kM!Iv9yAC?ock0FX}=zDL?!2JLkxj0qTq(m1<5TsBN&hc?HxWy5Q1 z)hd)H*bBaXP~9*Fhe)w%6^?Xd17jpL8 zE{oP$GN48u1%uBSCv1xCEj{EMB{v@Zae72Odc2`8E6_?F0tG!CU?{MG3w=4XT|Z@c zgVnOV1ZP1_K>z@;j|==^1(6{> ze*ghuOGiZir3doG0007MNklBjE6vq#4>7wsqIGt!(Jo!90pf1uI(qKBc z2u$%8>FU^!W=!eewb&3szJno_sfU~T8M=nPvnAboXS+#hh7Nfc#P3P({ZIe9(^-g@ zc!_5U*$Ol2nFR)qCH_^Q2wou}0=BwFf6K%Clt^ZQz?*MAvEFrz*2}~ElsGBIjOBDl z1d1iO?DIBMFv5UkF*wfa;hh`sO(PKSwx8h*8QW?OsK;&&YL>Ts98h%rT^weYy6Er$ zGIpNEE$%U832=WoE+G?#86&=ITWT0*G*c?YJZ3CP(15?DB4nZB4x5phtL?S^e{>f^ z-o9-F0v1sT7`CYoSwUwr9f>`b$xcAt^t-l9&l-;dcAj8(M*>Fd!(t@%IH`7*^As}f zF=b3-IuuZzUroTkIrehK5|&@;?faO=C@=^FFwt-_$A{fg{JdM-HEX!8J>9-?-+LUe z&{?5@ENl(Q!1LQ`LNx5QzvrwiIR*)2N!)EK3QcyK)IImmC92WDO zSP-y?@KZuwNJQCm*!IKu@YBsnUN@{cZ$9}l(~G$x0s&*gS;ht4UwhVl4PCUQqXPB~ z-~GCpJfyyU%Ve{c8QWKG6=Y-$Xk0ZI%OmUx?u$YBCx%#`5#At^`pCKgfBQ+=F%@VR zAB$1zIB&ohHp#i^QbB2E=JYE`#4|Ia1=5=I2Wj{k`QD>zXi~zF;exW)Qzxh7iTHvc z7T6X2zDi_%Un#~N6;l?QRM-v4L_LP?2#Ax0|#wF5e@W%W@Z2Y002ovPDHLkV1kxZRagK3 delta 630 zcmV-+0*U>_2FC@EB$0kQe*#iTL_t(|ob8s)YTG~%#~1d}i%xwJ!-}P8@u6rjIH0GH z7*LH~q*n()nqx{2x|M<;guH_wMpTD=m(J>IXV!L-(j0ooV6cB9?fiHD`(+{C;w@e& zgOZ=+<1Vhk7z)s&$dzxPox()=YN;)TuNmr^hlTsWUg$Q+s`ek{M_7BKU3d+V6xe}jO{D8 z3No?=G_D$q_6)lQZdpFX5bJ_)k4)M})^*rV(#TX`jRuyh^W1|mY?5=cp@P!X=JGp9 z#I>nu18GhAY?~DPfc)su6*MW~$Z$cq-KvXA@QA`UH||9 diff --git a/graphics/object_events/pics/pokemon/ursaring.png b/graphics/object_events/pics/pokemon/ursaring.png index d9ede16af9448a3c37a9fb34b6c50128e7bc1d27..e0b7dc01f684ba37eef945241681291d005ce67b 100644 GIT binary patch delta 754 zcmVOV1ZP1_K>z@;j|==^1(6{> ze*ghuOGiZir3doG0007LNklx>Od2y_NONs?Et8DGRTlJ*nVb%s?}{|{rY6v( zm;qwzg)tLaeLC#k{fw>{pyU7|#Y2V#+fR7Ss?49B%3L(JnJBO!6Fhvw6~WpIe*)x`N6YcJgEUWm?fqXkTi z!Y!cFAJdVKzM_>m`!d0VZbX#}*n3tSmpv^3`@X#eSKo0krr2aG`e4d2lixTZ|C#3A`0_5v73Y^C z5XMXzGhj$_ZFnn_jKWP8^pBZbPMjZ#H20<^(509GV(W!56I%T`9p3$n?iirt03yXh zh6OuLc+aZLpPtHGG>@4muptvXe8m;P)(a!P2-tl7z6Mo1W|muHihs$EFYjpdGmcrS ze7A42QjA4qj`hexX^d5h$?DrDtcl-~nAxpAhm!;Tpinlgt?kHpJVNXN8Jn2d2Y0TiBY%*boygD^4V9kGG|{Vn9!Z5asfxr zisQ1UC1Bsz*Wl_q4rY84rkK!7ykUb+kiBu`6O2VxNu~;Ve15`jk>TJkMZr}-?>9kR z@v3;HPy_yCit!jUI+$S0`1Jv;MB^{QfUiTo9_rdx#MG>=PiH?~Yct6(fh0@^7mE$S z@Efb?Lt+JzhQjMXQXO_MV*+9P&K&LIa>IPko#3yb!}UCD_;2G6+M>P8*2H-w00000 LNkvXXu0mjf>boue diff --git a/graphics/object_events/pics/pokemon/vaporeon.png b/graphics/object_events/pics/pokemon/vaporeon.png index b1ac9aad427619305d75636f9dfc962a2eb6758b..17ed5e02c839c475308de690186179aab1a79894 100644 GIT binary patch delta 875 zcmV-x1C;!@2D}H5Bv%J?NliruOV1ZP1_K>z@;j|==^1(6{> ze*ghuOGiZir3doG0008uNkl94_c>V&2A>LD|?44*Oc3Lr2s6a

qhbr)FJ(1f-2Pd1NnqJyPNN8 z3&K$(^PdK&LfDZXfp&0wC*RvtA^awAk%6Kpf3n-T>XVwvl28rIo7ZmOdlMt0j7u&I zE)kCfh7s*Zd-6k;c;!VJ1c5)=Uc#lX2}B{~F_Yl@S_+VOWv5GofyV-NdN>Fte~iJg zVeUtQkTP^}H8D8M&#~ZF7!OKe$cHmHMdKc0jrca+av|r=SrrhkjtX6vLcE$!1Ws>+ zKI=$B*K<9_xv{_T{8hw+b0$a7pWo=>TE8467j^cQC=AkeDLmoZZ|f7D_Ds5J-%0cFiRF$|;4gaV_vVZ}0t&@et!*Q*Sm zO@#e6;M_+EW9`r}411ReIm1RJd}djuVcDDDb|%6UrHL4Dgi@O_bet3O=`N;1&Lg^* zUfZ78=_-S!&UZ017BNn+A~H|-zEI6PoNf0aQ(gdHIu z=>&boS0CHX)~24Am5_3y!4~UY_~`TL- z45u^a)AXDfRF;J*!_@WSwYuw8Le3#QKVCg^oE~3UDubllDue(;u+JFcxb}otsj%Xd z&l&1Pw|7wo%b3)opwERQe~_?Hp<=zZP8K)YJ4#MnBy2WAy|}1F%UQGAwpd{lhVeSa zevk=_P*<#x+EA~_o1I>hzKbq1Bn7mhOR)ez6amZw2!{|!MYzDeR57OEMB)O>B%WoO z$Xa;QCw0u!8YhvqP}4OfaPiNH-0`4ahX1nt1g@}m+QT|dy#N3J2>?k&PDHLkV1i&D BlIQ>c delta 744 zcmVo9K2c?8S?V9Eg3UxKPwtq`%+On-8o&}_kqiEs0UimPOho1@*st`95p1Coe=e*))X(!v?U9g~ z1Nh?rwh-s$5;zyv&+?1S7Gix#WR0Y3f9k{B_ZiJ*Y$c5muqkeZ7x0y+2c|7cF-r7n zjWNs%E6hbU7{6nl=LKy31h>8}$p_)UXCR@?tr5UrJkONS;}Bq8P|sfhqid00Mw)P7 zENDM4ylif$=C_zGe_EkGzRqGz&I({h`A+C4963Ml1H?y6y4n!pqh_Tsdk_ZWg!+OD z4%~>#lecjM!j9Dy4!Vh!x9&Ylc2md_ixJzl!g36-VVT$iH)TGPG6EqmD!Wu^3MtC6 zkYkpZjL1e+I@v$~vRQZwZ(t{13n8{3)R=SzTnZ&reZvY^e~fUYgdw2fkR-s)RVqZa z1mVcI&vpEvEOSv-r|2*%AtNl&1C)eS@IGm}&fhQTARL(u#q_D-Iqx&=5F?rq!nGuz z-1C81O4i@!$7-|bgaaoDRBOEbn4I|+V6Yh_N|^IXcIqa1FC3V2C|2sf z`MREJd2TUce@dvA`a>nd2)^B=oKAy5IB+K5k!7<_zce>su-O#ajG5r^@l<6_Cmh*_ zDLFb%(_*YFn^Dqk6my03{5U=!Wz z2LL7!qGJHXJ|@N?ENNhz7>&O&Sfahb``Xdj@gMq(4)cLlp*P36Yxl?lH&OV1ZP1_K>z@;j|==^1poj5 zFi=cXMds$_|NsBir~s_R#pczl#jJ~@gKA<@Iqv3S_SI4l5Rpj`e}{dC_W%F@0b)x> zMCQS4S_J?A1B^*TK~#90?Ulca7Be zfpa~Un?wd6yLEvCa4C!`up&oS?o$Jq*z((tz6r&$GZcj)f3Tip=XX$xp`^L2>TACP z$IR`(8Ca~~vKh!gIyT@Pvr1KigjN)RIq#ph=&2RRig{$L7j3c5I6k$-W&qhZk2Bj0 zWJ1oCjo(2AhLJ#9ugh2FtruWIoS8y}T!`9b7~%MI9)kg;6?y|%T`OXRbr6_<&*+ys zt`NcrkpS;-e~=`wuE<-*r!E+1Iz2SfS9lf5axcO$a>?lk#B=1T_x&Plg_5Xg!PeBg zc8t%#KqCij1y%zmA^D(rYS3G9L}PhtaSq~)Y?+xB^|q(> zOw8k@kw5}9h%T}bB0LEvQGa*?@;mCqwqjm+%XkHWe|#}?#_hQ6@J!6>aEbtG)@>+h z+4y8mPw+okPA@Dgl%Z~%Nu3Scndowy&#aEoBaoPDfjX@ z2sqv{a)GOWzu9zit$+xZ==*z$LKGxMe;}?SaDN5ej|{x#w~l!*0Fnx72nJq}1fdU? z=m!$ef8g(>V+>EBtpE)NS%!F&!Trs99$PT4>@nBcwkR>+I2tJ5f8SI(dEXH8bO#J@D$5!DgF^zuCehRC zc&&9ZVL9pY)BZOdkC6Dvq-Vfn_i%hy$tZxt3}Zd{a5!+82v|-^WRLG=Os-A#IAakp zSH@2fPo>@GAT^?MxZS=g}YQU@0th$&5j z!NIVtc1hj(Gk2Fba9}ts?98tu)%U4XJ-u3eAK%A+G1xGFPXBJ##d4Ou7IlhN{=@b& zso~pysX``pF>g(dHUT$oL*X`9EL~)z%)}P_qQd7Ze8#i?kHgI4DYtCSRrxJ}LQ1!R z)8u%RA6;nQ430ZC%D@(IbMmA^FhZ8jNR8g#dsExITt@5q455G_+wUDr-FBQ#8=3&&CPN2KG{k&qkz@ z_t>6jHV8PjNr3LO(}<{#u*3@4I$lc5pgSPn{lSe~PR+Xmu}Dp$fCL(lePSzRd=mDu z`S2RlE2_n^W1M+e@zQiCc7Jj*Ff1p3JP?Z}-Xee=O&3!-woR8kYI^-UJm0L3p|8&~ z2Laibc6XyNWMC5X?gqP9^5@su-SIN*ne?InJGAQ$@La9cQxx#LtY8vnfza91xlTaF zCi?O2tPqkQF@_8A6@j}e=zr!AG=K0cq5)8p&_Fcsf+PsX*hD{(fPv7Lo-saug)RfM z0#p?ncg3{h_)|85GL@hV!GNV%S`h{Qx_UHVAY&29kLmX2*Y)jf3Qdkv4Z)aN7)%CG z)dHdcak7;`m~zI;Ut0Z3^|&@M#yqDb({!f4DKp?Wb;+mdww}`a#&doED#6|Ey+|b( zXAa1WaV5$OcuoeY_q*C;?;B!&k)MDAo~vra@ZgXDvCZ_1-d-D%1srEpeq6sZ=?aOj zY<>q^_4nJiwMqg=%rWIt_nVDSnSkRgMe*=<#H?+KhY`z!OqUOvH)WOG0ddwv*#5nF zbB3gdG@lI6xZhl>Okj2Yo5}>}jaO{1sdOpeI3gKf+jpzn0CAC5x!9I8Rra1IuJdUc v`3w6?cCTF5GnoO$)y4XGS;iOB|L5@!Z|z91oE!{000000NkvXXu0mjfs+ZSh diff --git a/graphics/object_events/pics/pokemon/vibrava.png b/graphics/object_events/pics/pokemon/vibrava.png index 39307abb4261901f96c50c8bd7a4f6cbd6340a9d..b91ff3075689d78d18c4093626df99299e372e8b 100644 GIT binary patch delta 888 zcmV-;1Bd*$2FVAIBv%J?NliruOV1ZP1_K>z@;j|==^1(6{> ze*ghuOGiZir3doG0008*NklBjE6vuDM-~)j|R}WP>)u;uBE(vHT=cUD2RjvxuZ|9g6} z5PGiX`e*9$vYw%w>@WO{e!rGg$!!6cf9Z6YAKBf=$~kA}sE*YoQiNLqQihzs2@vLq z4OCnTd_sVfd|N=AGN*kPU>+wn5ZDB&T98iV>UGu)q)}F0uz+JXjoMzoV>ej^dNxok zy&$Aj-qRZA4KynOtC2u}o80dS^<@IX`@PHrLVbHhh*#S3IxC-uD*=wQL)2y`f6zIZ z2`soc<%*Kdr;>1;RRDLJjIGwBl!ip=?)uS?dv3E7Ff0emD5W3m#hBeG77UdNw%O!q zDL^nog5P-lb&q>q$}$tExCjKHq=VBFE95ByJ}&7d6CE(~!xi%zpRpnf5*DX3@aw?{ zo_hY`lzV<2sDy$X2_wWY{6LO)fBI54xHCWvc%~pA@sbk5t|NhL!u4QQ_;qt0u%F}$ zTDV|Fh`77!{a7q-phK0oLkA;5&SA!R133=`G_Wu1{faJ5E(*UM&n<8gNxhttRq7g?(^U0&wBi!a404A$Q?>e?+@ecnDPD z&ScUd9r`PgGExDCBiQzBVRSOwCC96`PldH`Ogcu$(=?49NJpvz;07V|)0hgz*i?1c zAhh7+)I0?O%?NoP;%pOZ;Un#TDTE+m8E~eQ%CMY_KOgi4z21-qXaj5G>n`cHjK9iC zC?3fNQ3&BLDzRd9ke|Nze|j+ZIb4R^%{DS}*xNbz-m)X9GI%01zI2M2fH%_|+5mj` z?raJVJ&v=Dj2Lc>y3-amx2(cS7|I~XRzj4sZ5X-?L!@qBwwXh8HSb>Or9WA{wVd`F zFDSjgaxNDZSk&@-#A?`S%e$b4VXuhQGFpto8g``mZ09Ew#`XLk7T0gDts^@Y=`TzG O0000H_7yPsD*>s*Ul|Z8f3gs0c@+4D008k? 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

`IHvvOV1ZP1_K>z@;j|==^1(6{? ze*t1kM@0Xn2lB-L005y$L_t(|ob8lN3c@fDh2ITw0uky`L@)>N;Dd)STbYUn2&8r? zA*NYXq1lwTDCFCH^X3P#2+(LW8jbB>QsVkYBoQ4^L~eoS=8+5Xq&fdUECmfLN7U)f zDg!I?+@LwH46Mu%oqF$P4gao%<%PYTMD*8>^BnK{;9r9ai(d9uyx;F?4l~`?GtFUa st{kp32gXa+*}!v{(b`0G{%^Wvz9rR<436z>>;M1&07*qoM6N<$f><|sX8-^I delta 187 zcmV;s07U=&0+0fbB$0kRf161}K~#90?UXSJ!!Qg*bpsuwgbtod4la5LcPvVvyTPPm zF|Oh%EyPRsLqKnP`jU)2n8x7fw3puV1z~z2lNz%Omf4+u!l&F*@{|__hv=FeeUH p2_wwyPQl1HC$>rjI{r63Ghf|0k+KnU!KDBI002ovPDHLkV1gISQt$u( diff --git a/graphics/object_events/pics/pokemon/vulpix.png b/graphics/object_events/pics/pokemon/vulpix.png index 238736417217a85b31c69f549c85451a78390425..d3b632f428bfc94910b240fb53a9019023566397 100644 GIT binary patch delta 184 zcmX@lvW<0uN;rFor>`sfQx17nQ_<>z6Z#Ac4B{oO5hcO-X(i=}MX3z#J}v=%?h0k8 zMGD4xCWWm_9s-qcloa^617(bXYzD6eO?e>2lJ4m1$iT3%pZiZD>qJF6TL#7?Z+Dmf zOW8jiWnf^u<>}%WQZeW472j324FuQ=bhlg=tP<5_`@+N;>t%k{u2R$aC)OsuhP28K2g8f_WR ndkwBS3j3^P6OV1ZP1_K>z@;j|==^1(6{> ze*ghuOGiZir3doG0006#NklljA6bJA#lZOtzIs*u(gu{@r=kt&?@eQbZ z5uczHf;pj^T}N<^x{}0_N4`MCz=Xs^TgiwCi2<6G57B|UcX!SujV0P{C~t{=_TB$I zpX?yCsZDL_|0#^UJK4d@S5}P~>)pjpe~U5NO&TrMFYUOgk;r2)?KIhmNs2f|3{!dO0|V|m?rgzm9EoH-4W zbxtXbbVnjCxO8FK74}2pklvU13+oPE(widCR45jg5uWQh(m<>`jHL_-nS)-nx@ zx4|NiPdY zuG%ktghk)lL^W`OzzPJD5py9p=Y0Q+D|D+a<<3zt3hV+}|=T)jWLqO3wH2aHbk|YwQ1li>p5= zO#GlW|Iq41S+0!o*Wc&!dG%8Bx`&hf_s=Is%5IVmw7LFri>se7@uS*5WYY1oJznYn zcT!eWHJPC%7t@2Uhee}NK6n8W*Aor)58mXw_+l1p$%)E({WZH6!?UCFW{YQpi7gL@ sMNwHhIOo>-8yi*U%U7f;w5flozhnbJJdagT(*OVf07*qoM6N<$g6%F*B>(^b delta 589 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 diff --git a/graphics/object_events/pics/pokemon/wurmple.png b/graphics/object_events/pics/pokemon/wurmple.png index 48835436f8e86ccc7f05542034beba80f44d2a06..d8091c43d08d2d9689e14e0c539bcf9a82587f3d 100644 GIT binary patch delta 615 zcmV-t0+{{F1iA%~Bv%J?NliruOV1ZP1_K>z@;j|==^1(6{> ze*ghuOGiZir3doG0005rNklWGY|~rgnLydQfBc-KKi=RL0M|u>dl~TT>HZ!8`UbNU29#J7 z&9e*`P~oJYB^)Tx_nCpu4OGPpI8dDr{nZmdk7w8>MhI;il2oCu>W~{S;4rD*jY$&> zD13zoNlz{dG)c;fB{p?tz=1;tC&Ol-@CJYo)sHGWzWatPGhjgX(d@t93>2ybe;_NB z{vIeFu0i?RPj3dQm#^nD(f|XB7rp|YWPztGtPa)&67d|O;c_!jy6KeOTLz4V*b>A2 z<1e4AK3M-(IX@kP-jg?}We$`&I5Hpyiq2p=O66*P^#N@8d98oG8IC|}vUGh9Bri#K zqmd)JbJ%n#JvM|5Z794t0;3-ce^mDsthMCYm z1^J>!cel5+!UdNVaIIGC=`$^Y%L~d-mg4`2Ul$4I%f)#K1poj507*qo1w^hwV1hJF B2X_Df delta 505 zcmVL_t(|ob8jrY8x>ShNVNVA~Mm!5?F9(P6fY1!4!H_ zU>0&&*uxIwl6OgI10j%iaG{4%@UvJ;wXiJc8LCiXjm9`8w7nG1?MIsLpBasWIL0xK zag2W!>Td(M9yWgn$?*?0N}c4@gxJ@yj-5JD$E_#|#+IeKx1J`+-7r0A!@nKLO=- z4XWRMdOuLTeZO3ge*zd#yzw>oBn!OmU~~3tAQA5%8m{&OrJK*`-ZEe`#EuxAez^T& z_1W{g%H?$l`b4f%$s8zkaHK&F6urT2meSSo@e|l;yCy$Bju)Uc8M=M~lAome*~}5$ zJ8b)OJr;y5EhxOZ0He1Cs{absTCz4K0zCm5cRr_DUYXL;Zw{iqB!(hX05(}F7q`T2oVezB@+Mu02g#cSaefwW^{L9a%BKVOhiyl zM<8}(av(DOV1ZP1_K>z@;j|==^1(6{> ze*ghuOGiZir3doG0005xNklCy-nO z#A2{i_-#@q-NGhtdY4FcyqXE?kmJ$>b{2N|R-^xuY>Ba3-Rf4i+De4a`M=}+z`_Uq z&YHjv!aBlq0gPHh>tJZ6u$DMV>CHXmq)O2NvPqkYN8@s1Wk->4s7Ggrd{~5 z1_6x$uyxt?!ex!Tv8{eUg2YH5+j!DiA08l$WR8_K~P zt;PXKpetSkb4>+Icx&-RyiYur^@?Du8E`{p5@6FSsW*W*bqy7y2HZcrCKhMZ66}B{ zOuZd|B#hEAz6s`9jRz`V0kOD$e@!f6zcZfR$}t=#a+jF+jcn-%W6tG>z-6BMopCnV zqdR&-*N8gme9atv3F%Ydp~~D2JLBmIB^K~OP&!rto`&>}1zjCkPssIP5y^$~0dLzWHV1H>pvEBeDCFqWsklPLb3jhEBNkvXX Hu0mjf_Lmc7 delta 492 zcmV+K=XHp{m+ZNtny?Me^431n4bZ>0Z)1E z`Etvz1pr^t^@u$A){$)sH2oEv+!I!K3kwFuU9cef7U(fu+JkR~Yi!U4H1-cOYeNI7z|67>aODD_lGgMh z?v49?6-ALHMPqkKC`D}b6Qz@lq!y&kPMYKMWsespc{ADPRL3}Nk&tErc_*6gx!f552 ib>0Xy6pXj_8|xiSHN+h?T=IAT0000#$( diff --git a/graphics/pokemon/sentret/normal.pal b/graphics/pokemon/sentret/normal.pal index 5591d8f1b..cc98ff3f8 100644 --- 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 From cbb417a5304c3f8a229a378878f15a6bbfca05bc Mon Sep 17 00:00:00 2001 From: Ariel Antonitis Date: Wed, 22 Sep 2021 22:00:33 -0400 Subject: [PATCH 124/241] Fixed morning/evening tint. --- src/overworld.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/overworld.c b/src/overworld.c index 0948f67d6..c06513e62 100644 --- a/src/overworld.c +++ b/src/overworld.c @@ -1465,7 +1465,7 @@ void CB1_Overworld(void) const struct BlendSettings gTimeOfDayBlend[] = { [TIME_OF_DAY_NIGHT] = {.coeff = 10, .blendColor = TINT_NIGHT, .isTint = TRUE}, - [TIME_OF_DAY_TWILIGHT] = {.coeff = 4, .blendColor = 0x56dc, .isTint = TRUE}, + [TIME_OF_DAY_TWILIGHT] = {.coeff = 4, .blendColor = 0xA8B0E0, .isTint = TRUE}, [TIME_OF_DAY_DAY] = {.coeff = 0, .blendColor = 0}, }; From b2f901058eea76c3a69b3a873ae7097a11c9dbe3 Mon Sep 17 00:00:00 2001 From: Ariel Antonitis Date: Thu, 23 Sep 2021 23:30:46 -0400 Subject: [PATCH 125/241] Changed 64x64 follower sprites to 32x32 ones, by LarryTurbo. Sprite resource: https://www.deviantart.com/larryturbo/art/Resized-OWs-for-Gen-1-4-mons-larger-than-32x32-878575906 --- .../object_events/pics/pokemon/groudon.png | Bin 1698 -> 10851 bytes graphics/object_events/pics/pokemon/ho_oh.png | Bin 2163 -> 12226 bytes .../object_events/pics/pokemon/kyogre.png | Bin 1763 -> 10248 bytes graphics/object_events/pics/pokemon/lugia.png | Bin 1824 -> 11101 bytes .../object_events/pics/pokemon/rayquaza.png | Bin 1946 -> 11681 bytes .../object_events/pics/pokemon/steelix.png | Bin 1531 -> 10756 bytes .../object_events/pics/pokemon/wailord.png | Bin 1259 -> 10094 bytes spritesheet_rules.mk | 14 +-- .../object_event_graphics_info.h | 14 +-- .../object_events/object_event_pic_tables.h | 84 +++++++++--------- 10 files changed, 56 insertions(+), 56 deletions(-) diff --git a/graphics/object_events/pics/pokemon/groudon.png b/graphics/object_events/pics/pokemon/groudon.png index 5e18f5954f9b21dc5d53a31537a6fc9c4fb2a581..baec3777a7273dde8badcb0184fe45da26d320dc 100644 GIT binary patch literal 10851 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 YLDmh4I1ayKW-@@fvbIviJ)4mK0Vc)OtpET3 delta 1658 zcmV-=28H?KRH6+biBL{Q4GJ0x0000DNk~Le0004i0000$1Oos70O5AMjFUViK7R%+ zNkl?sZx=4ZnGKCVkOPc_ z;Pz;@yK_k0TE|P7v+P5fq~hb>??{Jr{9E5O8EiBB>0>#7^QWV<+mmzvn|UGj$Jy*{ z3Os#_|Jj1KIyX~9kuM1IHh&gJf+SCc$j|*d>v$zQ)&G3Z`Cs~KMrN><&uo$5)IOGD zev^-v-LBTrI3g-+&5e#k9;!h123%y)1Vpd~HgYzd#kn(R_>>&MFvt9Ue4CHusRS+- z{?jY2kjDwZ*Ke3a9Qz!P-jFk-mfK?}3~C6BK#;ei^!H5seLPj5V}GJcSNsGy9|ya9 zORwPSWdyJE8%-Lhv4Rlv=n3i=@nO}%96Yg1Fp^Fcygkxp!QoV zO4l4H-UiLfISx9Zcyh}hZY)=m$%KE+&D2^DV?V{WT$8*I-kaO`V36fGIZ6yWK*=?y zw=?*AA<*K`=TUOYAAbhGzP@@jRLMLW^{|fp8oTAYKyjzer>@OcLu&`Qw$!GBSzU2^ z*(Dlf`wI?l(dV-zHHY9X_a43)*eIRLQICTlX6P-~BuB|7V#lrqC~Lc2;*!hmZpC$P zymRhx{!~{B72uNP$9Io=0W!$&n4(JylMH}t^~gIz$2HA$tg@NH1i!Xo-1DoHMNdR( z9LLL)|54JmXI2#%9%t9@eTQ(LlLn!i!a#zR?&-{WoaGz1Su6^FgW;Z0L>pq!SS=3* zWrPcVh}hYg#((O?8KU9(?7bHNzt4#PF62>9;27gqr)v`WL9Mcj)@YoWFb6fR{N-b! zPcn#wEhF3?OP{xKr-AJSrQvGkXSj}I8+j&#vacsnWqf9t&b=g!J|(L#x3IK>y}iBR zFL_MXfQpuV_kaeVVwtfOY_p7()5>` z)#ghX0DbOICD^5yTu1J3`uP@cuLH%&3oeS_O(Epj(A`dR76UK*J=ZbSr7t`0JX}jl9!0QfYw>-KCt1hX!Y{i^4xFsQr==IDju) z4S*yKg27IYkH>$&-;1#1E+>aTS)i}XpfLN!w&23_U z4&auD1HfVC>iSppTi<$F?3}k0ws7H6MWWf8Ry z0#w|P+wsyP28RL6{=A+EDvKSrMg@3Bl`{h~spukBP+g#?uXYAtizdT0nPGj0htGd) zF@FNt>9rDMrMERsbehlSb6Xmb+49`K6?ens`oLE6Il&c3S)Mvb8E?T$|2X;_8|u4^ z+|s*V7ss6D*}*}131rKC%D|qj7C3frK=2H7`Am&{a_GPLCFo)kh8}`vcWl2eT@Pl# zGsJJ74d(&A{?T5Y^eKbSrZ-mv7NW|9rcWBZTPD^Q1nse_DK_{`$A@-0t3Rc-Gy02+ zK5QVa)bv)Q{&>8#@pQg)5tv)|A4A{!o&JCP{{NN!1#kE=Kjq(=egFUf07*qoM6N<$ Eg1+WCU;qFB diff --git a/graphics/object_events/pics/pokemon/ho_oh.png b/graphics/object_events/pics/pokemon/ho_oh.png index 7e74249d2c6055b321f9b6a1b7f86bbec9792e43..5a18f8dd2e2119c01b3be45767bcf5f2e95e6cfa 100644 GIT binary patch literal 12226 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�yZpd> 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 O0000l? diff --git a/graphics/object_events/pics/pokemon/rayquaza.png b/graphics/object_events/pics/pokemon/rayquaza.png index 948804138d5ceb3c797d97e52990c6c6129f2e89..e0b0b8c200d30028c59acc3f4d902bd8c171a2da 100644 GIT binary patch literal 11681 zcmeHtXH-+$)^_MsiWKRDj#3gjM0ziRAXPvhA))t#-n;Z7pcLs<>C$_ZUZe=3ARt{j zQWSwVdd@xf-0{7C?ik>2<7nspyNBh(|PC(y;s*~-=d0YrJbAbwP?!x*fY3%bD9JCi5Iv~Dm5coKC#3W zxKl0!3aGv~vGzCDE&n`sF!BAA=lZH-PT~40W>h2mV0|;^eIVn_<>|Kpf`AUb0J|GE z)=T%Ox|^Rdj{{$RzIMwuH{>@?3h3z65)OP>x|U;JXwGFM(@1q$cU09_eYJUc<mN=L}m%^uJ8YhMn^wVWNw z8-)H!)sydEN;**-Re?_G+cGNHW*10-OXklvN2fE_$3LnlBC7gs+}7O!u2OD(`UI3+ zoq7b^+$_}}X5V~TeDyN<%v|jBlDacT+(q~JxV_@U^Dyws=F!#5pY;GAQoc@EkCXGl zbU{b&vf@kwpP|kJF2*#YH=Et(S)_4O_6Ew?-&1I|9?gFKcAV?mNON_+uJO?B+LCX( zb^j;7XR_-`rnn%NR+^Uz$&cfkqw~+%TT*h;98^M8RR-le_S{Ahkdi6}C55TWxPmjP zi}TN&*E;4zj1K1MarCCHH(9X8Z$u_NI^XG@h*uw7S-+oZ>eP~rYVxoYD4PtP*R?Gx z5qD#{tD{mN6GK6(@Jx(PwPJnb9+IzUnqj0x^niBzzG&mm6TvJcHsfu?B;DH>GySKx ze#Y8a*wjzi*;h2aD<5m{*{*L~y4+&z6d5iph?9O>Eih0Eo6T^ix9TpgNVg7V__&LF zkcq79SGr?u*5>QlWqkjj_N!CtL5<@?JISHMY2EaMIQ6*X*9{YXN!Lrpx&5}0XILCn zOKq1fC)-~!>J82O_fEyK+rPhOexk8bQW1E0*?D06W3m3HyE_I#*%Wj8WzP6jnRDLz8{N;x z2je*P`!@whxr$4%mzTbuuk-9Z{a-!qnPZ8|i>4#`G7z<+{>iW&XYTY!-16&Dzpk5% zKLf}$Wdt+%`5u-<9i7LM#zx5(DRDc*od`u{%1(xTSMw8rtEC^JA*j~R*&EWS8T70z zC8xedP;Sz_s*~|2=I74sxMvSL{EHhlznvXRgu>R^4qolC>I*FmJlDzA@d2@gn^5;I z%rQhhI&eJ+^$>bsO3|3~ItTAy|EOU{QD~vkW8AxlB*I<#vq%*af4lc3AR^sp%!Wv` zopkkuUyP$ej>O#KSbrmE%dR_8=ZV!Kk0PTS{}OFilJC3_=_ zJf>DR-W-L!eRbEYCQOY*8= z!`K48T6e9+AvGp$0Lu& zl)7Anqv!2c@e&_2$LuYBlxkks6=7@OiooqL96is-kV$*qzbxR>QB&reyHt0A|GI!3 zmn7I)R66$}9gDE{`5vX{RGt-Q=|)YTg2v~^AMe8|m!9ws9q@Y!`NeBiG30i<&K@_! zSO`ElR+Ti?-6Q6|c9}8#0I5fK<1u&Bv$rywOK##+M|7r}cP!B_7LGJWNaU4wFH0TW z%f=}_^5>6-y|kJ^e!1T`STj|`AkuTmtNgr!GL9(XOIqU32De>IsU?GROrwIL`U=nL z#AAqpW`uI^C9HXSqn(A@-~_VB@A<=0v94pdYJfIWf2kGPbY^CP*FU&61sWo{J5Xg{2Vh3}d6nxN(9pf|lyME7#NOG;tX8tGTFtGFlK4=Me`(h~2q z%XdQOb3elO4oMe_#3pZ)L^oQV?{CByN;@~yeNN}T&6rx_F)VQRYaH8ATm;Sm0W~wJ zdBp-iGB+K!yW32_;+p@Sdjkk-ZM@p?+F#!QmuptQ$72P5y_bur+LI=vM-B9(Q1w*H zX3)N|H=oYma4eDcC(Chl(EJ(h@|JyX+^z;hTuKOx1V9Rlr{Pu%XFJdGkP8oHFBS{x zDLJ2TyMLUwcz&A!BIPM7mrxRKUC;*Z`BP1C@x55u+vK!g+C&jbd8iRm_bm*Kfeg&&?5i5JG7Hv@>R zUViwxA3HCij8D-^pQpoFu4+g6NeFK+%{U)rih*l2tQ1H4a#W#33D+p`wtePH_8G&1 zHP2_-;v!M61#Tl~Iad{NGtQV9u&dH}R9z?ETFdI1@R9&oAFYcD3y5ctQ1ckqTZ$>) z?jXS?bbf(v6cLjtCLA1rsW2%bkoW2EG~6@EB292v0geytQE$FD=6GBN9#`&mJl_WL7E61c8A|}qJ3t3l| zeOU#oqwVRogt@BKWXXU%DsmpLXB5k_EqoR_&2|}UBAhyJ*LCde5$}7vou%vYwsOeS zlJlbHTkk2WEVBGEmwkR-{wIP`jypVtctdUt=;PH+P{qiTAuA)DSUt9wr9dt40Pn3C zF;>MH>ocU@PdF~;m*U&vF+_Jvm!BB2ARp-N%3j19J}bqJef5+ZXs1L*i6c z@{4N6JhwXWYEoDi(~~uO85+MUT5#{%55`gAUNs$`$j<33Y^MbgX@x!r+t$?T0CZ?C z>Wq37DJm-2Df(`ovBj_WwdoqcNh)w)7}sXQcQvIYS;{GVr0Vl}o_dRzE_+8Fh4&tH z6G>>|-1G@F1uZtEYhJVlpFXuelo?rnT;o8aY1%Ef^g{iaYw+%6C_ctK8==L5wrYg7 zd;)1T-t40zC5cXDdtXuoES;74EHZ&aPP1;>aTD5G`>^5AZf1OkSznUl@pfZX*~6*8 z=Zd-;r{rXm*tH+Ks|}$(glWpazLHuxQ%K!7fvrG0izM*FOV`pt>j98H#T!yJ3+n#% zh-;ygLeN@8)LT%jsJ`t}vRCtD*_=(`Ecl@eJt80K2iMx;FgV)U3op=JyDN0#_2bN%dd3;4H}SwQ3RO*4xFUJD{CjSe&v-7jZ0m+3`_S_8>jo@PPMwW-5G?n+{o-6g`p$^_-g7v#~*!Yru%Ka=~ zBy}(y0OKtzGM{cYv{otEkZ23MlfX=h_`>#tT+E>#_ltp#aA!K+{(=NCXN_6^N;rfflGe1_Gh^T5^ zk578K!OaCSFOhA7u>20Cl$Tl_yZG5Ct2zqP(ZQ9ZwqPxbJ`a)_Hn_$|UVKK$k5oI! zJ!uTRKiei)q^FaM7wHT_qw+ZL?x-}+!rK-}Qi(QIUWgWHLrEhp2{x&&t~}tnd43D+ zO?{g3ia1t8i%Z-y2FH&>+uk}KJgEc@S6LQ87w&7%Kc)}V+@i@zz^0D5pTULXv{$-( zJo2S?H>nD%Rxx8k`1xJtZ!sU%XjTbAs|ml!<@a6&nPYyc?eDJdZ8@Z!&H&$R12U?! zxne~zQoH*rX@|r%mC0$0i0jXS4#O1*ScMzzPa(9T*RA6{?FZ>MN@l>hk?I=`JApU? zif5cBBkWmzz@nPU`H4v+EV!UGtbc1X+U?U~U<34%|JScG^wLXV#5&<*U1e z_0IJEJr(J;DB+>2gCTM9`S!~NGVvEr2A<|6NTURJ7djcEe!m^y$b zwgq75tLP5*M6SOIqqvs#YXKJw*k+K3|utp{oy7@cEJgI-toyB2P(;!d^*Qu;jP zWW1eL8onWCq85|_h{b8A?eDtOVP)Xz=UfJflaX1*K&>ubeun{#*0~$Ofom#F#J$#8 zL}$_3WcCTxD>*B4g04nMqims<5G`%JIH53$Wtf{onx$#Vle}+B1w-x|Z`NkX)c%Lns<1;Sy(Qr`^|_j)C<9ttLf-r>a_jU6-I`cg<$KPFeP z-ns>jz^*%wS)4CSC-Fp{OW>5!!h*Dy#S-7tv&2F(jYcBBhfKYb$1-~v$%kvw50)6xjHMt@uch*v%X_@f*(OO8q}~MYz9?nVs>ZR- za23^$6k1Jlk!A3yd&*1sx*y-(r(jF z(R87yD{Jov7lYen^V@4jYX=YChKom8@DdEDx4Afb>uNo4u4C=#k9un$!xH}fou>T5 z5fHeerRy~})!WATcTVK2A#)rxHi0ip$bIeT2fk7cW@Nw4TQyDK)O}VKxym?0HY{k{ zfh9pB1=D_7{MktV(Fl9tD%+&RBTfQuV4(!ZD2a2Qb-V^-VNi%X!``U_%ZWjuo2$Dr zvWuEt8cL=yV_)4aLB~##*fNRNQ=PrHiqpe!3hOC4ot&%qW|mFy(LI{-k}@gCWA91p z*I53nv}W`1G3+2RllwmiBQbCa1DLzLy57$N4X|+ph4q*NkEKRmUA*7`Nwbl$->nvY zJJum3x4~f{ru+Q?1O!)RtWqs!Ygj?0TlB>;h&NH7Qjrc)#}+A1{aqTFB=yP-!ski+ zh|gRMBt8VC9ZCu_-RctLvrss}SG>5l+s{#NH`mD;tnoORI`Cs~^y7=V<}2T@5M0|5 z;)h)^M6wOs>TxfO219X|Kgn@cG7STv$(pp^@)!$)!UyJD0eWinNeYhar!hoRVS ziWBewA>w9 zwX}zY$WM9p-(G~Q>zmNJHrBdIpx`jGG#I(AiZ}}>oMF9^KMR0_9mz`7hJGh=Zu{0p zPNKPN2A5W~AbyoCWmUe;8ES4e5Q)7%eAy@ygMGJ+Y+{IDt4%iMR{O$;B6QN2L83C5 zM~1mi{yQ+tJ-_j57|X*a__zyV!#;zk;lw`2$vvV_myU`fmXE?t(c$_%Cg zQVqU_Vlm~di(e#I1lMUCX$LQs~#;c^8RlR${*`*8N0q{K-*r za6RFe*^J0?JQ@3QA{C|dQk?KSvYj{FAM$F76Eexz)gpbk%N}-rD;PjOp$n1RD0ve$P#Icubnl^HTqnqYrzz#vYtFiTzOAiWXA zj;AhbCNS8rLjgMbuu*W!QWA`OeA#zS-Yga$;}BgyFpMC=UzL5}n4#VR*Fc<>-5S(8 z{b}~GlbF6vv+BfT1~bBOVOL(r*484eQQA(Cf*44gxN&fZ=_#Kg>%L&ESHp-w7P5p53pX^F6~Fs)YqPUBK0&%+*$YOO2&aD zkzSbV9`X94N3+t%_oCZr6Le28vaaIFc59e86v40jPqJ$|)}&7n#a?Dz3DZUnDhess znuWAFtPuj-G<+yxeiMi;W1Lgc%iA44cD^rkDZDRR6k%_*pJUM#)&tPX?j^1tbO)!H zG0Oq&mR*E4I21c;eEHa;hdto5veb2_<$a3k_eKv!IaZO-TQTadxGLY1QCRtHTgqtU z4LHwmfm_aEzTsP|3Rd7c^4qb!+4&%!JVw?!esC0-4H!JNvB}ZddX4Ak($2~}6QQD2 z01KN3<4KsgWr|O`Dy~`VqPFJ>4L+N3-ntWgEBERZQfAK4&|!TCjH1G;7zA2O28#|8&r_f-HKV0kJ!p0tLfd$ zg<8LE_klA?U^QFksTNq8wTe!?V9N5(oZRP7_nHqAE#E}qFV(SB7{$+RTxUj^-3f7j zB`=^*!R6D$Wy*Q@j2PxzUy{i?xTe(ud*TxhQ-{sq1+OpmZ5A;qeya3y=Xb5UezA2x z9{e?(yNN@AjJ@OR{t-mt3f?8u2!CD<31@3|WgunP80A%1d~ zmaR393fKOwq`;g}B72S|5ggx}DBosb+I>#fuE!Pgs+8>(ptX>toTE4xsxam0%iWU0 zl8RZd@&@E%qgAK6eA%W3wAA4id;DdY@NJK{&G{s3APJgIdLFhClZfH;=pleN2=P9k znGdhQheqHuiZX-nAtwdz$n2&O%d5lBZYN}*=>4Ej001M*RzX2qO+n#b8y@Iwjx7Hq zDb-$ChJJJ1e$sm+)Rfzad636ssjJ-jydmLJ1~#+ZYf~Vbsl>u2al%R*JQ?cOB>dwo zkS4;AWxS`Ena}cLQZ70RCt2TyehFx6J#X^G!;d4>9jjE6o#kbtN{IUK>DBy6v@~&V z0=N8ap;JX40j!B5cT#5a16IkA%TGC$vO}4~hf#gV2V%Udw^p}`i;zoPB(=$fWH}TM zX;5;jDwQMrov!>4-ow${B(*ULyr_N{-U#EUdW5>90)v5G+;MpM2;nB*xLwg(ckPhgVX;NMWsdZ<-}~|nV^G_0M69cu1#DKh>z?3w?s0Z@ zkZuqtQ^V@km7e{55xp@*V~gH^GSYkiv2=Fihr*p<2!1a|7xV@d03a#jFJ4nBFyjXW(^XMkdOd@1wn#>d}s|mq_-0a>c!`TWcvm2 z2Zka7Y3XL`g0gjX0{+5;!kpbvQmm|KIq+ZcIl5?S{sr%Z{F4PVA0RKN3rK(;403b? z{oMkIQu089{29>yYJt>4@8f|UA&}1QZk7lo4}=qn?e7q9%fIYh+}#|0rvtYHAsi5n zXjLTItH6J_R8iB^{>$PQ1=hBXF2AkNWdDaI%GT=NWc^2Mza+oY`FkK}^S^NaL;GL3 z|5iq8X=*|goh{veg{P({#rn%X1nz8U3y1tZg^9q#gb`w3J_JHcgija@7vY0}C7^sz zAqgu4`nC%yA|UcNC^aV}3hHEu_yvUq=eI@USiuocaRC7d zuyukvdm{fW(zA6$=%S#%_!JNo5)={>0fR*ag+(Mp|7LH1a6_Vd@fWH9m|sx%xB0Ka zK+x%+sfGUPR5ZZvadb8i1vdl~C?Cc=L`YR~lFU#Kz4wU?(EULChw1)Sup8vD! zbrG(AT>UW#9BhA!fWY643xQhx;RFfwK)`=HLficzvb2FZStHOh{Lhy9*SPKfQZ7+T zm>?Vu7e$vCJpqL+1qJwEf}%ovA}}aSPz(wc6|(xHTz{b>ovl!wP&b5}H9AvtHs}`m zoehxtPcrZRXEdHRh+j;B(a2y4K0zTpumD5|3;~O>g8obv^lMK4D_cp>|HFsmZ-u`t z0%*HG#?XrkdaVNewOIYh*DnhH4_|-Q;s4MB8u}k6{}sRg(De^p{}luOmGVE`^$%VD z6$Ag3@;}}6|BWuff8XvPoY233Jkd8Zb|Mz0=o=xh_5(eotgIV}M-p8m)p4RR3QJgFymCJ(LnskhH*=~&~OCIRZ z63K*_*TC@`Fwk&N@3C6**x3cr&%==u>3s8|4R6$wy{b9(mg5p)%JJ#BX0SiA~PvY(Hyt@O?_s zWG$Yd1Cf36*xhD&lenGQBP(K}?jXR=Ghp^ZvU1hs44yk=$?0GUB|Kfh!b)pkw@PeB zTN0@m{F231zb3yt#i5n!aYNa(6A5JTo9?jH)5eo?U7~MN(W~41R6^W$9m0HkGexz% z6iONiPt+uM_8!>ip$!bSf_bUUbQ1#bjVSAl#eq_IrfU>yrXotTG_~9rJL`YmoQFpR}~#KS<5CD)awyC&pyyzf$-Ts>X)BLRrB0%65!Aso52d5$W?8PrYVL(!RCNvH)d6MZfYs4E*5|aQ>r_ zdeCiKB>s88Z4X(op3skP$~ffL-aGhHD|a=s=hh#fo~~^zhyfF1MxR$z83V^U<}|Y^ zz5#4L^+>5Yr7kmIZ1Q8g!)G18mG8=S+;Tgav!9-lbijNd=Aj`EDSUog63OQwyP-_! zWU=641|zF1ze);G1r9c+$W^5W`#|feK9$f9nK&HR=oZE-X2Wv!8uqBB|J;@Q{?3JiTa8$nm~j74qr_(#Lc z72`&P9;{nNG?$+S(DIeun8@=+<|Q9!Ur_h{ta zXh#jx8^x^+Cf&y(wp(a3B0$MTj2dZ@ZqHy95wO`ZfHT%=XO+XmNZ%bps$h1YUT5sO zmZ#;SscpBVUl)Hr*{sD`kY7fr%a!i=6BRmIF;o+9dF%Pak?lmT??46$c6G>)qKQ@S z9CP<}-YvIu)}}XpG>?fT$1`p>#1lK)j(0nuAs#0=!e-SS2=>w@FtZy4>)9%iKXb}3 zEPVYUx_E>fqZ{fP` z5te|U$8=tn0kw^d=G+>04Izg^A>K~(i9KoIdlvmHv)8zpoSEwIpV*482S&)sCOGpY z{6qQ3?yknMTfchiVJIz4IK?z5e%@Pz81CokGka49*L)dH@v0y*u9{BcMQ6$IP;wYC z_bT-kn^lIvY^*3J$57&a&`MbjctH-hWnaZyFQrDbnuKAzsNL4E4@;hWk0igJo6sa> zE-P$t%N;Ll+Md*JVKPe4uy}fu`Z-7HyW$5992R=?;DTu)B1>0M7-?bD8`+OsefY?G zEgO30T@!oT$VBeZ0KT=&#o4g_5lXJ_eS>FsLM2KjvIL8F+elHqq^{2*0eX{WfXDf} z{B$%y8R=QWo}Ox{^4%M z;}PrDMt$cWdohK%UzRKYsF;_DwPyjKAY%G!byBA?FW#p&l{ZQHhExfjZ5Y*yTEG?w zUjn$&_uY^OZ)iH{v4fSVd|#dgPgKr)#>x-y#&aIFF1QE2AV2Is$zcwhe4Dd;gPHT? WO7eb&NHTi$1*j=$DOSo`g!~VPxpJZa delta 1908 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 JVg<|K{{e-Uquc-h delta 1490 zcmV;@1ugo7RQn4diBL{Q4GJ0x0000DNk~Le0004i0000$1Oos70O5AMjFWC8K7R#< zNkli>wLwxMce`+-sQi zt!}EAl`Km>iJG0!O7*C&*Ii#t6diKNA%`4t$RURua>yZv9CFAZha7UqA%`6DL!u0R z%t;0W-3t0eC2?mHyGqn6R~wVN(|^zNz+bnoB-(FZK@wL`zfXW@m%xtk_W(3qOhy+O zu+V50x{Ch6!Q9CXCe9VT+hG{V#@_|d)Vj9WBQVTv7EPSpCb6LZkZk(uH_5&q9>muJ zz(P3aACBU>1=&!6cz4_;=j@7GIf-XG??omS*PWL`QlomALLxliQeK62a&pPNSaTaNu zyNb9{q0%lW119b6S5QQQvoy5Q_B{mXkzNUOY_0O?D*?)`_m30&tBgr%ILJj|3WB*Y z#s!A=TaX6Z_;#(}-$TF>0Dmh1;1~xqZMpzr(mBl@=tf|0%rVBu-hc?Hd}iz`5J;e}0)f+ijUzhG#s(L2*1v}UEPt?&U5_a)*d&ZH z>Q@8!y)ZVEN#X(ta&{Fz&lywU`Nk&B+|6@K|Mca_U=or1dkBaE$!;ZJdZExS#d?li zTJR?3xEKNfDa$kn3yUgjT1goSM3nVia}E zHqBsXh9FvGpPpfUuzw|+q;CNy!Mq~#HTd_HE7Kc+kAdMwLxPDhl=)1a7j+E4dE_nx zNbhD?dQ6{#zD}fmK8t@$; zPjl(#5(NAwnZT0=f$5ng5Shd{@8h$~K$+5yaVBa#w0Ucrs|0{pCr@)~sGFjwUDpUC zQuSq&p-mQ)NK~qH5Z1snVNhy2=-CA@PPDZg zqR8?oZ*#6q-^2`dyD}T0m#7I0@{2@JuX%oP>)R0yu&jXDM2asJ-p@M(uzuzzD-%#d zIjuJ?ol7$_3SEXqE)n#>{}H(u8P-pd3HF6McO za>gTKn}FR(Wy}Kla!ssvH|` zLi*~_h?IN;%EmQfOx|FFd$le12xy01?&NkoV}F6%vuZsz3r$wEy|igd7wF~p*UF4_ zJy*FL;$v;S&-Y%CB1AATi3Tup&eHKD!!ooofw^^;X4rdoyse*C<&J}>f^jSpjMmHd zo?2TgzPa(K+gV$W&BgV(bYFW##a5n|A)_sK3-!9kyDNBk57Fqk`{H-WMtgpA0^li) st0%Yh$43@^K(P1&_NSk>`2SS?0a&sj?`0{fD*ylh07*qoM6N<$g7_M{rvLx| diff --git a/graphics/object_events/pics/pokemon/wailord.png b/graphics/object_events/pics/pokemon/wailord.png index a7032a856a462d258c35136f14fbb086810819d9..a1fc3a087a2641b82ead18cbd07042531268a140 100644 GIT binary patch literal 10094 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 delta 1218 zcmV;z1U>uiPU{JOiBL{Q4GJ0x0000DNk~Le0004i0000$1Oos70O5AMi~s-t2XskI zMF-^x0uL)7YX%Va0000NbVXQnQ*UN;cVTj607pzjP)ME|7+^2GoE z1P@6>K~#90?U}o7+b|S{H4Einc<3$5fR7F^>Y2z-2ee0+R-e0+R-e0+R- ze0+R-UOMdY&tW`&AdKB(7jW@oQ{+LAXNPlA0Az@viyxg37=y*ZoD|a}8QBe8{P>Vd zfEjiNaW4FX;i3E)!YIW`9OncQ8L)KG#h)dc`Qe-kj+5j9>j281Bl%{YAIw#S*lWba zpCRn(VtkEFqbL`GlO5gxj2|CD>BX2*`z(TUA^7lscL3vmN9S%sW#)GW@en`>f_bKO z@#Ay5p>X~O==|g${_-6l6oeqyYQ(|0;8fK3$ld{zA0Gl`tkWRMxgdy@7A%6>ir<)i zp6AA&J(ZV&;tpdSK)4W8+$c!WiZAsR!Y@fOuBPa)DeK}Qe5VDI9sgsTCGt8qECxzY za+6>{@`~qw8W(=NzOMESFVlAX34+)66(?711%vVlDXu>u;m1e#lq)Vwf-Wuu85b0T zj0-Y@;C5c|jj2W)B_zj4$rl=vOY~%S{s5D4o{MuAZMeKXh5cp=sKKC^Rs7OaWFb68 zYuv@dvgPRx9{#{6-=vVX;ZiVz{ZbEwL6ESD8(*t`usbY*J)vKGkEbRmn2e^oIovbW zhF5}esW%IfiW{e)qN;Jz15%T);#vbmviB1i(dM4l#brWBlwe}IgW;mi4YQbQ7Aoq4 zywO8>Z>kD|=6=h?rC?qc)YptKt@EYc0VSwP#Pr_0t*--(8Y1v-^bX)$3c?l=RpSZV z=+A(EEbBbg8`x&?zWul`Oai3N8$Z_t=dHLBlnZ@XYr3FlqvD29Kt8VD@l!bbaQfXe zNb-s|mzjp(jDG63;_93w7nHAjBS;N`MV*^QX}&)BE(AZ`YJw^i*Dn4Bpr{K*{Z?E? zu4CmqpBdh|!a84=1YfOA#8->k{#T?*=RXHMsdg!j85g{3#~%gDSUZ4mzLKotWg4H_z8)fcHR!(PBM)Xveq7T}y?#4h z3YLnQtphmcxr>V|w!Dy{ob)<_*N~-2!H-oGHJ?(+;mesgbgoXS?y&I|y0|nfGQ=N$ z;j3Y9(CHL6!>G84qNv{-go?9t6^TRVQjizeV9@Q_z8<=`2m`>s?AbV3N4+>cT@Rx^ z_tWpM;xQXW5i@a_P0Sxuw=;|_U*BAuUq-w#V&7KnoE!4=A{j#`U0j{h>vlSW;i+v9 zI=I;NGL|gt9l*F4;_)yt)z6c-Jm)t#@8R%={lk`n2fujJ?97TCoG=wz`z|gbID%dL g=>PEe`26?$1;xtqUc5*DdH?_b07*qoM6N<$f)gM;{{R30 diff --git a/spritesheet_rules.mk b/spritesheet_rules.mk index 3b279745b..fe015fc85 100644 --- a/spritesheet_rules.mk +++ b/spritesheet_rules.mk @@ -1379,7 +1379,7 @@ $(OBJEVENTGFXDIR)/pokemon/gligar.4bpp: %.4bpp: %.png $(GFX) $< $@ -mwidth 4 -mheight 4 $(OBJEVENTGFXDIR)/pokemon/steelix.4bpp: %.4bpp: %.png - $(GFX) $< $@ -mwidth 8 -mheight 8 + $(GFX) $< $@ -mwidth 4 -mheight 4 $(OBJEVENTGFXDIR)/pokemon/snubbull.4bpp: %.4bpp: %.png $(GFX) $< $@ -mwidth 4 -mheight 4 @@ -1502,10 +1502,10 @@ $(OBJEVENTGFXDIR)/pokemon/tyranitar.4bpp: %.4bpp: %.png $(GFX) $< $@ -mwidth 4 -mheight 4 $(OBJEVENTGFXDIR)/pokemon/lugia.4bpp: %.4bpp: %.png - $(GFX) $< $@ -mwidth 8 -mheight 8 + $(GFX) $< $@ -mwidth 4 -mheight 4 $(OBJEVENTGFXDIR)/pokemon/ho_oh.4bpp: %.4bpp: %.png - $(GFX) $< $@ -mwidth 8 -mheight 8 + $(GFX) $< $@ -mwidth 4 -mheight 4 $(OBJEVENTGFXDIR)/pokemon/celebi.4bpp: %.4bpp: %.png $(GFX) $< $@ -mwidth 4 -mheight 4 @@ -1718,7 +1718,7 @@ $(OBJEVENTGFXDIR)/pokemon/wailmer.4bpp: %.4bpp: %.png $(GFX) $< $@ -mwidth 4 -mheight 4 $(OBJEVENTGFXDIR)/pokemon/wailord.4bpp: %.4bpp: %.png - $(GFX) $< $@ -mwidth 8 -mheight 8 + $(GFX) $< $@ -mwidth 4 -mheight 4 $(OBJEVENTGFXDIR)/pokemon/numel.4bpp: %.4bpp: %.png $(GFX) $< $@ -mwidth 4 -mheight 4 @@ -1901,13 +1901,13 @@ $(OBJEVENTGFXDIR)/pokemon/latios.4bpp: %.4bpp: %.png $(GFX) $< $@ -mwidth 4 -mheight 4 $(OBJEVENTGFXDIR)/pokemon/kyogre.4bpp: %.4bpp: %.png - $(GFX) $< $@ -mwidth 8 -mheight 8 + $(GFX) $< $@ -mwidth 4 -mheight 4 $(OBJEVENTGFXDIR)/pokemon/groudon.4bpp: %.4bpp: %.png - $(GFX) $< $@ -mwidth 8 -mheight 8 + $(GFX) $< $@ -mwidth 4 -mheight 4 $(OBJEVENTGFXDIR)/pokemon/rayquaza.4bpp: %.4bpp: %.png - $(GFX) $< $@ -mwidth 8 -mheight 8 + $(GFX) $< $@ -mwidth 4 -mheight 4 $(OBJEVENTGFXDIR)/pokemon/jirachi.4bpp: %.4bpp: %.png $(GFX) $< $@ -mwidth 4 -mheight 4 diff --git a/src/data/object_events/object_event_graphics_info.h b/src/data/object_events/object_event_graphics_info.h index 97d685c9f..ed53c4f7f 100755 --- a/src/data/object_events/object_event_graphics_info.h +++ b/src/data/object_events/object_event_graphics_info.h @@ -482,7 +482,7 @@ const struct ObjectEventGraphicsInfo gPokemonObjectGraphics[] = { [SPECIES_FORRETRESS] = {0xFFFF, OBJ_EVENT_PAL_TAG_DYNAMIC, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &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_FOOT, &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, 2048, 64, 64, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_64x64, sOamTables_64x64, sAnimTable_Following, sPicTable_Steelix, gDummySpriteAffineAnimTable}, + [SPECIES_STEELIX] = {0xFFFF, OBJ_EVENT_PAL_TAG_DYNAMIC, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &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_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_Following, sPicTable_Qwilfish, gDummySpriteAffineAnimTable}, @@ -523,8 +523,8 @@ const struct ObjectEventGraphicsInfo gPokemonObjectGraphics[] = { [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_FOOT, &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_DYNAMIC, 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_DYNAMIC, 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_LUGIA] = {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_Lugia, gDummySpriteAffineAnimTable}, + [SPECIES_HO_OH] = {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_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}, @@ -595,7 +595,7 @@ const struct ObjectEventGraphicsInfo gPokemonObjectGraphics[] = { [SPECIES_CARVANHA] = {0xFFFF, OBJ_EVENT_PAL_TAG_DYNAMIC, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &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_FOOT, &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_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_Following, sPicTable_Wailmer, gDummySpriteAffineAnimTable}, - [SPECIES_WAILORD] = {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_Wailord, gDummySpriteAffineAnimTable}, + [SPECIES_WAILORD] = {0xFFFF, OBJ_EVENT_PAL_TAG_DYNAMIC, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &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}, @@ -656,9 +656,9 @@ const struct ObjectEventGraphicsInfo gPokemonObjectGraphics[] = { [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_DYNAMIC, 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_DYNAMIC, OBJ_EVENT_PAL_TAG_NONE, 2048, 64, 64, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_64x64, sOamTables_64x64, sAnimTable_Following, sPicTable_Groudon, gDummySpriteAffineAnimTable}, - [SPECIES_RAYQUAZA] = {0xFFFF, OBJ_EVENT_PAL_TAG_DYNAMIC, 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_KYOGRE] = {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_Kyogre, gDummySpriteAffineAnimTable}, + [SPECIES_GROUDON] = {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_Groudon, gDummySpriteAffineAnimTable}, + [SPECIES_RAYQUAZA] = {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_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}, }; diff --git a/src/data/object_events/object_event_pic_tables.h b/src/data/object_events/object_event_pic_tables.h index 5f58c9135..76da0b0c6 100755 --- a/src/data/object_events/object_event_pic_tables.h +++ b/src/data/object_events/object_event_pic_tables.h @@ -3863,12 +3863,12 @@ static const struct SpriteFrameImage sPicTable_Gligar[] = { overworld_frame(gObjectEventPic_Gligar, 4, 4, 5), }; static const struct SpriteFrameImage sPicTable_Steelix[] = { - overworld_frame(gObjectEventPic_Steelix, 8, 8, 0), - overworld_frame(gObjectEventPic_Steelix, 8, 8, 1), - overworld_frame(gObjectEventPic_Steelix, 8, 8, 2), - overworld_frame(gObjectEventPic_Steelix, 8, 8, 3), - overworld_frame(gObjectEventPic_Steelix, 8, 8, 4), - overworld_frame(gObjectEventPic_Steelix, 8, 8, 5), + 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), @@ -4191,20 +4191,20 @@ static const struct SpriteFrameImage sPicTable_Tyranitar[] = { 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), + overworld_frame(gObjectEventPic_Lugia, 4, 4, 0), + overworld_frame(gObjectEventPic_Lugia, 4, 4, 1), + overworld_frame(gObjectEventPic_Lugia, 4, 4, 2), + overworld_frame(gObjectEventPic_Lugia, 4, 4, 3), + overworld_frame(gObjectEventPic_Lugia, 4, 4, 4), + overworld_frame(gObjectEventPic_Lugia, 4, 4, 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), + overworld_frame(gObjectEventPic_Ho_oh, 4, 4, 0), + overworld_frame(gObjectEventPic_Ho_oh, 4, 4, 1), + overworld_frame(gObjectEventPic_Ho_oh, 4, 4, 2), + overworld_frame(gObjectEventPic_Ho_oh, 4, 4, 3), + overworld_frame(gObjectEventPic_Ho_oh, 4, 4, 4), + overworld_frame(gObjectEventPic_Ho_oh, 4, 4, 5), }; static const struct SpriteFrameImage sPicTable_Celebi[] = { overworld_frame(gObjectEventPic_Celebi, 4, 4, 0), @@ -4767,12 +4767,12 @@ static const struct SpriteFrameImage sPicTable_Wailmer[] = { overworld_frame(gObjectEventPic_Wailmer, 4, 4, 5), }; static const struct SpriteFrameImage sPicTable_Wailord[] = { - overworld_frame(gObjectEventPic_Wailord, 8, 8, 0), - overworld_frame(gObjectEventPic_Wailord, 8, 8, 1), - overworld_frame(gObjectEventPic_Wailord, 8, 8, 2), - overworld_frame(gObjectEventPic_Wailord, 8, 8, 3), - overworld_frame(gObjectEventPic_Wailord, 8, 8, 4), - overworld_frame(gObjectEventPic_Wailord, 8, 8, 5), + 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), @@ -5255,28 +5255,28 @@ static const struct SpriteFrameImage sPicTable_Latios[] = { overworld_frame(gObjectEventPic_Latios, 4, 4, 5), }; static const struct SpriteFrameImage sPicTable_Kyogre[] = { - overworld_frame(gObjectEventPic_KyogreOld, 4, 4, 0), - overworld_frame(gObjectEventPic_KyogreOld, 4, 4, 1), - overworld_frame(gObjectEventPic_KyogreOld, 4, 4, 2), - overworld_frame(gObjectEventPic_KyogreOld, 4, 4, 3), - overworld_frame(gObjectEventPic_KyogreOld, 4, 4, 4), - overworld_frame(gObjectEventPic_KyogreOld, 4, 4, 5), + overworld_frame(gObjectEventPic_Kyogre, 4, 4, 0), + overworld_frame(gObjectEventPic_Kyogre, 4, 4, 1), + overworld_frame(gObjectEventPic_Kyogre, 4, 4, 2), + overworld_frame(gObjectEventPic_Kyogre, 4, 4, 3), + overworld_frame(gObjectEventPic_Kyogre, 4, 4, 4), + overworld_frame(gObjectEventPic_Kyogre, 4, 4, 5), }; static const struct SpriteFrameImage sPicTable_Groudon[] = { - overworld_frame(gObjectEventPic_GroudonOld, 4, 4, 0), - overworld_frame(gObjectEventPic_GroudonOld, 4, 4, 1), - overworld_frame(gObjectEventPic_GroudonOld, 4, 4, 2), - overworld_frame(gObjectEventPic_GroudonOld, 4, 4, 3), - overworld_frame(gObjectEventPic_GroudonOld, 4, 4, 4), - overworld_frame(gObjectEventPic_GroudonOld, 4, 4, 5), + overworld_frame(gObjectEventPic_Groudon, 4, 4, 0), + overworld_frame(gObjectEventPic_Groudon, 4, 4, 1), + overworld_frame(gObjectEventPic_Groudon, 4, 4, 2), + overworld_frame(gObjectEventPic_Groudon, 4, 4, 3), + overworld_frame(gObjectEventPic_Groudon, 4, 4, 4), + overworld_frame(gObjectEventPic_Groudon, 4, 4, 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), + overworld_frame(gObjectEventPic_Rayquaza, 4, 4, 0), + overworld_frame(gObjectEventPic_Rayquaza, 4, 4, 1), + overworld_frame(gObjectEventPic_Rayquaza, 4, 4, 2), + overworld_frame(gObjectEventPic_Rayquaza, 4, 4, 3), + overworld_frame(gObjectEventPic_Rayquaza, 4, 4, 4), + overworld_frame(gObjectEventPic_Rayquaza, 4, 4, 5), }; static const struct SpriteFrameImage sPicTable_Jirachi[] = { overworld_frame(gObjectEventPic_Jirachi, 4, 4, 0), From 38a21c436fe9f52a7927a08d672ded594bddbba9 Mon Sep 17 00:00:00 2001 From: Ariel Antonitis Date: Thu, 30 Sep 2021 00:00:54 -0400 Subject: [PATCH 126/241] Updated Silcoon & Cascoon object events. Contributed by @SonikkuA-DatH. --- graphics/object_events/pics/pokemon/cascoon.png | Bin 392 -> 695 bytes graphics/object_events/pics/pokemon/silcoon.png | Bin 386 -> 696 bytes 2 files changed, 0 insertions(+), 0 deletions(-) diff --git a/graphics/object_events/pics/pokemon/cascoon.png b/graphics/object_events/pics/pokemon/cascoon.png index 33b1c634d9d8df49eba26cd6bd7d0568418e5a96..104aa23c366569775708d94d4f4d4dc5c23e1f2b 100644 GIT binary patch delta 612 zcmV-q0-ODa1Gfc`Bv%J?NliruOV1ZP1_K>z@;j|==^1(6{> ze*ghuOGiZir3doG0005oNkl5J0&>q-}Q#QV4vR6jE;jCJA@D1u3YD zis2x~P~#jzmD?aU@TEMI63)m79V3B(6q@ew&1aYUp;Fhl#x<_-*Kzv~8DHLe!1BEZ zsO=jD#6Kl0rnd9vP3ki*b>lcxAiao!e}ChNb<>w>VwC+gW?M6sx1F8~_tmcuXX($} zi+bVd79z1`ugJS>YkJiCeaLn>|5~Ab5N7rx<>Sm=lg3KKP<%ht3Z!sQFM;Z*0`wp~ zgzC+fCc1r;9zw3Z3#DHM-XZ54A~zroR540V3+#2tH}*yTaM3SE-m?|mkVB~Ve`x6P z1G-syTBr?I#UhM?X$9#rXJ{IZ^|`n$jbGiG}?IKc2(*NEy6vHGX!>bMxS4v@jPffU7HvO$P_O*< y`}2_#+9%Jcv{O^tpALhj|9R?_Q%!`t{F#UQHwcS-52jv`o5Q4}Q)Qkt!GvabrmLe?a(6J?8DkWS>0l zG}&=jDPtbrV5-@dddWRMm+q007p@%z8fyLW=u;gB1Cth(CvKJy_jVz@L|{=_*mh=l z27{UhL%!HdLau9u0pFi0@8^ijz=^9P8rVQIoX=^Eo&Wk!nGXS(fTQh9h$1op`}vTJ zLyz6=&5*9gF4uBeEB>5UzE(c=*twH+OV1ZP1_K>z@;j|==^1(6{> ze*ghuOGiZir3doG0005pNkl8nu5P(lcZLM+v*+8enfZEr{U?Zy~m?Dr# z5~0V2RDPH~D;yg1gcsQCWY z3np*90JhIqpq?riH*r_@hm_io8Z8!Qe;!DW72|(+;v(u{q!z@;=ND)zUolyaiq3KB z{TIZJ`<_$Q&pg0qMO*|A)z{@weKwe9fBk-d zIlYiTZV3=Lb zQC|OO85=AaZ(T>t*`Tq3+f9kw?^%Qe`Q0s=pAVscSTfEveMB41+_5w|@VAFtT6M(1 zL-OZ0ny>d6=bG`yT5F}nIp{}CP;(mV_ME&EVKkH_D|M3^|PQt$+vemf&0000x)8F8JAOSn?0^ z!#--5*$fsiOSX_de+%I^{di6r{~R`r zU-r)t8!1HhYnP>Z`O&8{=(54Fu4y1lNP4+jy3sb*$fGsn%FB_B7IfB*V83%kq z(CW|R_!`GPxhyB~x>|nD%2pGx)*(Gi824Gq~wTCx?>h z{xSLeQ1m{z3uRxDB@ZPN9etuZu4k`!)^yEZ<^xq3qiF4q&3ym>002ovPDHLkV1f^k BlHmXV From 80a0f61bbbdfadbaa5f40d66678a803c3405ff11 Mon Sep 17 00:00:00 2001 From: Ariel A <24759293+aarant@users.noreply.github.com> Date: Sat, 2 Oct 2021 21:22:05 -0400 Subject: [PATCH 127/241] Fixed rotating gate palette. --- src/rotating_gate.c | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/src/rotating_gate.c b/src/rotating_gate.c index a185d9a14..a389bfc7d 100644 --- a/src/rotating_gate.c +++ b/src/rotating_gate.c @@ -457,11 +457,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 = 0xFFFF, + .paletteTag = OBJ_EVENT_PAL_TAG_NPC_1, .oam = &sOamData_RotatingGateLarge, .anims = sSpriteAnimTable_RotatingGateLarge, .images = NULL, @@ -472,7 +473,7 @@ static const struct SpriteTemplate sSpriteTemplate_RotatingGateLarge = static const struct SpriteTemplate sSpriteTemplate_RotatingGateRegular = { .tileTag = ROTATING_GATE_TILE_TAG, - .paletteTag = 0xFFFF, + .paletteTag = OBJ_EVENT_PAL_TAG_NPC_1, .oam = &sOamData_RotatingGateRegular, .anims = sSpriteAnimTable_RotatingGateRegular, .images = NULL, @@ -744,7 +745,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; @@ -752,6 +753,7 @@ static u8 RotatingGate_CreateGate(u8 gateId, s16 deltaX, s16 deltaY) y = gate->y + 7; sprite = &gSprites[spriteId]; + UpdateSpritePaletteByTemplate(&template, sprite); sprite->data[0] = gateId; sprite->coordOffsetEnabled = 1; From 3279a7b26b0b572c08d120ef3e1f13717474573f Mon Sep 17 00:00:00 2001 From: Ariel A <24759293+aarant@users.noreply.github.com> Date: Mon, 4 Oct 2021 20:34:47 -0400 Subject: [PATCH 128/241] Fixed script bug when talking to follower pokemon right after turning. --- src/event_object_movement.c | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) diff --git a/src/event_object_movement.c b/src/event_object_movement.c index bed66ec6f..510e1381a 100644 --- a/src/event_object_movement.c +++ b/src/event_object_movement.c @@ -4853,13 +4853,13 @@ bool8 MovementType_FollowPlayer_Shadow(struct ObjectEvent *objectEvent, struct S objectEvent->triggerGroundEffectsOnMove = FALSE; // Stop endless reflection spawning return FALSE; } - sprite->data[1] = 1; // Enter idle state + sprite->data[1] = 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 (gObjectEvents[gPlayerAvatar.objectEventId].movementActionId == 0xFF || gPlayerAvatar.tileTransitionState == T_TILE_CENTER) { // do nothing if player is stationary + 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 @@ -4880,8 +4880,7 @@ bool8 MovementType_FollowPlayer_Active(struct ObjectEvent *objectEvent, struct S bool8 MovementType_FollowPlayer_Moving(struct ObjectEvent *objectEvent, struct Sprite *sprite) { - // TODO: This check for 0xFF fixes a crash on Route 111, why? - if (objectEvent->movementActionId == 0xFF || ObjectEventExecSingleMovementAction(objectEvent, sprite)) + if (ObjectEventExecSingleMovementAction(objectEvent, sprite)) { objectEvent->singleMovementActive = 0; if (sprite->data[1]) { // restore nonzero state @@ -4912,8 +4911,6 @@ bool8 FollowablePlayerMovement_Step(struct ObjectEvent *objectEvent, struct Spri s16 y; s16 targetX; s16 targetY; - u32 *debugPtr = (u32*) 0x0203d000; - *(debugPtr) = (u32) &sprite->data[0]; targetX = gObjectEvents[gPlayerAvatar.objectEventId].previousCoords.x; targetY = gObjectEvents[gPlayerAvatar.objectEventId].previousCoords.y; From bd3c9ed3b90d7be39d724d60406f8d47e93e0fca Mon Sep 17 00:00:00 2001 From: Ariel A <24759293+aarant@users.noreply.github.com> Date: Fri, 26 Nov 2021 03:58:06 -0500 Subject: [PATCH 129/241] Fixed warp arrow palette bug. Optimized weather palette loading. --- include/event_object_movement.h | 1 + src/event_object_movement.c | 19 ++++++++++--------- src/field_effect_helpers.c | 4 +++- src/field_weather.c | 5 ++++- 4 files changed, 18 insertions(+), 11 deletions(-) diff --git a/include/event_object_movement.h b/include/event_object_movement.h index 7d66072a7..701a47f40 100644 --- a/include/event_object_movement.h +++ b/include/event_object_movement.h @@ -106,6 +106,7 @@ u8 SpawnSpecialObjectEventParameterized(u8 graphicsId, u8 movementBehavior, u8 l u8 SpawnSpecialObjectEvent(struct ObjectEventTemplate *); void SetSpritePosToMapCoords(s16, s16, s16 *, s16 *); void CameraObjectReset1(void); +u8 LoadObjectEventPalette(u16); u8 UpdateSpritePaletteByTemplate(const struct SpriteTemplate *, struct Sprite *); void ObjectEventSetGraphicsId(struct ObjectEvent *, u8 graphicsId); void ObjectEventTurn(struct ObjectEvent *, u8); diff --git a/src/event_object_movement.c b/src/event_object_movement.c index b8494bfa0..c2056d1b3 100644 --- a/src/event_object_movement.c +++ b/src/event_object_movement.c @@ -130,7 +130,6 @@ static void UpdateObjectEventVisibility(struct ObjectEvent *, struct Sprite *); static void MakeObjectTemplateFromObjectEventTemplate(struct ObjectEventTemplate *, struct SpriteTemplate *, const struct SubspriteTable **); static void GetObjectEventMovingCameraOffset(s16 *, s16 *); static 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); @@ -2431,12 +2430,12 @@ void FreeAndReserveObjectSpritePalettes(void) gReservedSpritePaletteCount = 12; } -static void LoadObjectEventPalette(u16 paletteTag) +u8 LoadObjectEventPalette(u16 paletteTag) { u16 i = FindObjectEventPaletteIndexByTag(paletteTag); - - if (i != OBJ_EVENT_PAL_TAG_NONE) // always true - LoadSpritePaletteIfTagExists(&sObjectEventSpritePalettes[i]); + if (i == 0xFF) + return i; + return LoadSpritePaletteIfTagExists(&sObjectEventSpritePalettes[i]); } // Unused @@ -2448,13 +2447,15 @@ static void LoadObjectEventPaletteSet(u16 *paletteTags) LoadObjectEventPalette(paletteTags[i]); } +// Really just loads the palette and applies weather fade static u8 LoadSpritePaletteIfTagExists(const struct SpritePalette *spritePalette) { - u8 paletteNum; - if (IndexOfSpritePaletteTag(spritePalette->tag) != 0xFF) - return 0xFF; + u8 paletteNum = IndexOfSpritePaletteTag(spritePalette->tag); + if (paletteNum != 0xFF) // don't load twice; return + return paletteNum; paletteNum = LoadSpritePalette(spritePalette); - UpdateSpritePaletteWithWeather(paletteNum, FALSE); + if (paletteNum != 0xFF) + UpdateSpritePaletteWithWeather(paletteNum, FALSE); return paletteNum; } diff --git a/src/field_effect_helpers.c b/src/field_effect_helpers.c index 14330bd66..e263ebe23 100755 --- a/src/field_effect_helpers.c +++ b/src/field_effect_helpers.c @@ -255,6 +255,8 @@ u8 CreateWarpArrowSprite(void) if (spriteId != MAX_SPRITES) { sprite = &gSprites[spriteId]; + // OBJ_EVENT_PAL_TAG_MAY : OBJ_EVENT_PAL_TAG_BRENDAN + sprite->oam.paletteNum = LoadObjectEventPalette(gSaveBlock2Ptr->playerGender ? 0x1110 : 0x1100); sprite->oam.priority = 1; sprite->coordOffsetEnabled = TRUE; sprite->invisible = TRUE; @@ -1421,7 +1423,7 @@ static u32 ShowDisguiseFieldEffect(u8 fldEff, u8 fldEffObj, u8 paletteNum) if (spriteId != MAX_SPRITES) { sprite = &gSprites[spriteId]; - UpdateSpritePaletteByTemplate(gFieldEffectObjectTemplatePointers[fldEffObj], sprite); + sprite->oam.paletteNum = LoadObjectEventPalette(gFieldEffectObjectTemplatePointers[fldEffObj]->paletteTag); sprite->coordOffsetEnabled ++; sprite->sFldEff = fldEff; sprite->sLocalId = gFieldEffectArguments[0]; diff --git a/src/field_weather.c b/src/field_weather.c index 205b4f7f2..137a167a4 100644 --- a/src/field_weather.c +++ b/src/field_weather.c @@ -165,7 +165,7 @@ void StartWeather(void) CpuCopy32(gFogPalette, &gPlttBufferUnfaded[0x100 + index * 16], 32); BuildGammaShiftTables(); gWeatherPtr->altGammaSpritePalIndex = index; - gWeatherPtr->weatherPicSpritePalIndex = AllocSpritePalette(PALTAG_WEATHER_2); + gWeatherPtr->weatherPicSpritePalIndex = 0xFF; // defer allocation until needed gWeatherPtr->rainSpriteCount = 0; gWeatherPtr->curRainSpriteIndex = 0; gWeatherPtr->cloudSpritesCreated = 0; @@ -899,6 +899,9 @@ 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, 0x100 + gWeatherPtr->weatherPicSpritePalIndex * 16, 32); UpdateSpritePaletteWithWeather(gWeatherPtr->weatherPicSpritePalIndex, TRUE); } From e7cbec7eda4532dfe284ad1b246036a286f3ecb2 Mon Sep 17 00:00:00 2001 From: Ariel A <24759293+aarant@users.noreply.github.com> Date: Tue, 7 Dec 2021 01:04:17 -0500 Subject: [PATCH 130/241] Implemented light colors/palettes for primary tilesets. --- src/fieldmap.c | 26 +++++++++++++++++--------- 1 file changed, 17 insertions(+), 9 deletions(-) diff --git a/src/fieldmap.c b/src/fieldmap.c index dfa617317..35e8bc529 100644 --- a/src/fieldmap.c +++ b/src/fieldmap.c @@ -894,6 +894,8 @@ static void FieldmapUnkDummy(void) void LoadTilesetPalette(struct Tileset const *tileset, u16 destOffset, u16 size) { u16 black = RGB_BLACK; + u32 low = 0; + u32 high = 0; if (tileset) { @@ -902,25 +904,31 @@ void LoadTilesetPalette(struct Tileset const *tileset, u16 destOffset, u16 size) LoadPalette(&black, destOffset, 2); LoadPalette(((u16*)tileset->palettes) + 1, destOffset + 1, size - 2); FieldmapPaletteDummy(destOffset + 1, (size - 2) >> 1); + low = 0; + high = NUM_PALS_IN_PRIMARY; } else if (tileset->isSecondary == TRUE) { - u8 i; LoadPalette(((u16*)tileset->palettes) + (NUM_PALS_IN_PRIMARY * 16), destOffset, size); - for (i = NUM_PALS_IN_PRIMARY; i < NUM_PALS_TOTAL; i++) { - if (tileset->lightPalettes & (1 << (i - NUM_PALS_IN_PRIMARY))) { // Mark as light palette - u16 index = i * 16; - gPlttBufferFaded[index] = gPlttBufferUnfaded[index] |= 0x8000; - if (tileset->customLightColor & (1 << (i - NUM_PALS_IN_PRIMARY))) // Mark as custom light color - gPlttBufferFaded[index+15] = gPlttBufferUnfaded[index+15] |= 0x8000; - } - } + low = NUM_PALS_IN_PRIMARY; + high = NUM_PALS_TOTAL; } else { LoadCompressedPalette((u32*)tileset->palettes, destOffset, size); FieldmapPaletteDummy(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; + } + } + } } } From 7d4b1a674fc5a2beb7f19d6db2e876c8edbfc7ec Mon Sep 17 00:00:00 2001 From: Ariel A <24759293+aarant@users.noreply.github.com> Date: Fri, 10 Dec 2021 22:56:50 -0500 Subject: [PATCH 131/241] Fixed object events not rendering in Porymap. Credit: Jaizu --- .../object_event_graphics_info.h | 417 ------------------ .../object_event_graphics_info_followers.h | 416 +++++++++++++++++ src/event_object_movement.c | 1 + 3 files changed, 417 insertions(+), 417 deletions(-) create mode 100644 src/data/object_events/object_event_graphics_info_followers.h diff --git a/src/data/object_events/object_event_graphics_info.h b/src/data/object_events/object_event_graphics_info.h index ed53c4f7f..76392d6a4 100755 --- a/src/data/object_events/object_event_graphics_info.h +++ b/src/data/object_events/object_event_graphics_info.h @@ -245,420 +245,3 @@ const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Lugia = {0xFFFF, O const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_HoOh = {0xFFFF, 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 = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_3, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_16x32, sOamTables_16x32, sAnimTable_Following, sPicTable_AnimatedBall, gDummySpriteAffineAnimTable}; const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Follower = {0xFFFF, OBJ_EVENT_PAL_TAG_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}; - -// 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_FOOT, &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_FOOT, &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_FOOT, &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_FOOT, &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_FOOT, &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_FOOT, &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_FOOT, &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_FOOT, &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_FOOT, &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_FOOT, &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_FOOT, &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_FOOT, &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_FOOT, &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_FOOT, &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_FOOT, &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_FOOT, &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_FOOT, &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_FOOT, &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_FOOT, &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_FOOT, &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_FOOT, &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_FOOT, &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_FOOT, &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_FOOT, &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_FOOT, &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_FOOT, &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_FOOT, &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_NONE, &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_FOOT, &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_FOOT, &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_FOOT, &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_FOOT, &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_FOOT, &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_FOOT, &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_FOOT, &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_FOOT, &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_FOOT, &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_FOOT, &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_FOOT, &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_FOOT, &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_FOOT, &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_FOOT, &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_FOOT, &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_FOOT, &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_FOOT, &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_FOOT, &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_FOOT, &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_FOOT, &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_FOOT, &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_FOOT, &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_FOOT, &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_FOOT, &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_FOOT, &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_FOOT, &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_DYNAMIC, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_Following, sPicTable_Lugia, gDummySpriteAffineAnimTable}, - [SPECIES_HO_OH] = {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_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_FOOT, &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_FOOT, &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_FOOT, &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_FOOT, &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_FOOT, &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_FOOT, &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_FOOT, &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_FOOT, &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_FOOT, &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_FOOT, &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_FOOT, &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_BIKE_TIRE, &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_FOOT, &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_FOOT, &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_BIKE_TIRE, &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_FOOT, &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_FOOT, &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_FOOT, &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_FOOT, &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_FOOT, &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_FOOT, &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_FOOT, &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_FOOT, &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_FOOT, &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_FOOT, &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_DYNAMIC, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_Following, sPicTable_Kyogre, gDummySpriteAffineAnimTable}, - [SPECIES_GROUDON] = {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_Groudon, gDummySpriteAffineAnimTable}, - [SPECIES_RAYQUAZA] = {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_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}, -}; 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 100644 index 000000000..0b6ad8563 --- /dev/null +++ b/src/data/object_events/object_event_graphics_info_followers.h @@ -0,0 +1,416 @@ +// 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_FOOT, &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_FOOT, &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_FOOT, &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_FOOT, &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_FOOT, &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_FOOT, &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_FOOT, &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_FOOT, &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_FOOT, &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_FOOT, &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_FOOT, &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_FOOT, &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_FOOT, &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_FOOT, &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_FOOT, &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_FOOT, &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_FOOT, &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_FOOT, &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_FOOT, &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_FOOT, &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_FOOT, &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_FOOT, &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_FOOT, &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_FOOT, &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_FOOT, &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_FOOT, &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_FOOT, &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_NONE, &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_FOOT, &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_FOOT, &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_FOOT, &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_FOOT, &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_FOOT, &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_FOOT, &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_FOOT, &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_FOOT, &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_FOOT, &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_FOOT, &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_FOOT, &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_FOOT, &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_FOOT, &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_FOOT, &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_FOOT, &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_FOOT, &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_FOOT, &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_FOOT, &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_FOOT, &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_FOOT, &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_FOOT, &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_FOOT, &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_FOOT, &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_FOOT, &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_FOOT, &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_FOOT, &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_DYNAMIC, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_Following, sPicTable_Lugia, gDummySpriteAffineAnimTable}, + [SPECIES_HO_OH] = {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_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_FOOT, &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_FOOT, &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_FOOT, &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_FOOT, &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_FOOT, &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_FOOT, &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_FOOT, &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_FOOT, &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_FOOT, &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_FOOT, &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_FOOT, &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_BIKE_TIRE, &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_FOOT, &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_FOOT, &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_BIKE_TIRE, &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_FOOT, &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_FOOT, &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_FOOT, &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_FOOT, &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_FOOT, &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_FOOT, &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_FOOT, &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_FOOT, &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_FOOT, &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_FOOT, &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_DYNAMIC, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_Following, sPicTable_Kyogre, gDummySpriteAffineAnimTable}, + [SPECIES_GROUDON] = {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_Groudon, gDummySpriteAffineAnimTable}, + [SPECIES_RAYQUAZA] = {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_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}, +}; diff --git a/src/event_object_movement.c b/src/event_object_movement.c index 510e1381a..d1ea373d2 100644 --- a/src/event_object_movement.c +++ b/src/event_object_movement.c @@ -489,6 +489,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}, From c7593af21506bd2132ed2f4fafc8ef0ee9800060 Mon Sep 17 00:00:00 2001 From: Ariel A <24759293+aarant@users.noreply.github.com> Date: Thu, 16 Dec 2021 21:26:50 -0500 Subject: [PATCH 132/241] Fixed bug where follower did not update after depositing in daycare. --- data/scripts/day_care.inc | 1 + 1 file changed, 1 insertion(+) diff --git a/data/scripts/day_care.inc b/data/scripts/day_care.inc index f5c023147..dddee4773 100644 --- a/data/scripts/day_care.inc +++ b/data/scripts/day_care.inc @@ -118,6 +118,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 compare VAR_RESULT, DAYCARE_ONE_MON From 29150322ce833859b6ca27196f52f633c60efa27 Mon Sep 17 00:00:00 2001 From: Ariel A <24759293+aarant@users.noreply.github.com> Date: Sun, 19 Dec 2021 22:27:39 -0500 Subject: [PATCH 133/241] Fixed follower script release bug. --- include/event_object_movement.h | 1 + src/event_object_movement.c | 3 +-- src/scrcmd.c | 34 ++++++++------------------------- 3 files changed, 10 insertions(+), 28 deletions(-) diff --git a/include/event_object_movement.h b/include/event_object_movement.h index 3330c9452..0ba2846f7 100644 --- a/include/event_object_movement.h +++ b/include/event_object_movement.h @@ -92,6 +92,7 @@ void OverrideSecretBaseDecorationSpriteScript(u8 localId, u8 mapNum, u8 mapGroup void GetMapCoordsFromSpritePos(s16, s16, s16 *, s16 *); u8 GetFaceDirectionAnimNum(u8); void SetSpritePosToOffsetMapCoords(s16 *, s16 *, s16, s16); +void ClearObjectEventMovement(struct ObjectEvent *objectEvent, struct Sprite *sprite); void ObjectEventClearHeldMovement(struct ObjectEvent *); void ObjectEventClearHeldMovementIfActive(struct ObjectEvent *); struct Pokemon * GetFirstLiveMon(void); diff --git a/src/event_object_movement.c b/src/event_object_movement.c index d9fd0d2aa..f71a131ae 100644 --- a/src/event_object_movement.c +++ b/src/event_object_movement.c @@ -157,7 +157,6 @@ static void CameraObject_0(struct Sprite *); static void CameraObject_1(struct Sprite *); static void CameraObject_2(struct Sprite *); static struct ObjectEventTemplate *FindObjectEventTemplateByLocalId(u8 localId, struct ObjectEventTemplate *templates, u8 count); -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 *sprite); @@ -5105,7 +5104,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; diff --git a/src/scrcmd.c b/src/scrcmd.c index da06fce12..572fb7a60 100644 --- a/src/scrcmd.c +++ b/src/scrcmd.c @@ -1011,14 +1011,8 @@ bool8 ScrCmd_applymovement(struct ScriptContext *ctx) if (objEvent == NULL || gSprites[objEvent->spriteId].data[1] == 0) { return FALSE; } - // ClearEventObjectMovement( - objEvent->singleMovementActive = 0; - objEvent->heldMovementActive = FALSE; - objEvent->heldMovementFinished = FALSE; - objEvent->movementActionId = 0xFF; - gSprites[objEvent->spriteId].data[1] = 0; - // ) - gSprites[objEvent->spriteId].animCmdIndex = 0; // Needed because of weird animCmdIndex stuff + ClearObjectEventMovement(objEvent, &gSprites[objEvent->spriteId]); + gSprites[objEvent->spriteId].animCmdIndex = 0; // Needed to set start frame of animation ScriptMovement_StartObjectMovementScript(OBJ_EVENT_ID_FOLLOWER, gSaveBlock1Ptr->location.mapNum, gSaveBlock1Ptr->location.mapGroup, EnterPokeballMovement); } return FALSE; @@ -1268,15 +1262,9 @@ bool8 ScrCmd_releaseall(struct ScriptContext *ctx) { u8 playerObjectId; struct ObjectEvent *followerObject = GetFollowerObject(); - if (followerObject) { // Release follower from movement - // ObjectEventClearHeldMovement( TODO: Change the way data[1] determines state - followerObject->singleMovementActive = FALSE; - followerObject->movementActionId = 0xFF; - followerObject->heldMovementActive = FALSE; - followerObject->heldMovementFinished = FALSE; - gSprites[followerObject->spriteId].data[2] = 0; - // ) - } + // 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); @@ -1290,15 +1278,9 @@ bool8 ScrCmd_release(struct ScriptContext *ctx) { u8 playerObjectId; struct ObjectEvent *followerObject = GetFollowerObject(); - if (followerObject) { // Release follower from movement - // ObjectEventClearHeldMovement( - followerObject->singleMovementActive = FALSE; - followerObject->movementActionId = 0xFF; - followerObject->heldMovementActive = FALSE; - followerObject->heldMovementFinished = FALSE; - gSprites[followerObject->spriteId].data[2] = 0; - // ) - } + // 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) From c29516bc2fa000f20bc73651d819c2f0715f9bdf Mon Sep 17 00:00:00 2001 From: Ariel A <24759293+aarant@users.noreply.github.com> Date: Tue, 21 Dec 2021 21:03:01 -0500 Subject: [PATCH 134/241] Fixed bug with follower update after the party was healed. Credit: Jaizu --- data/event_scripts.s | 1 + data/maps/SlateportCity_OceanicMuseum_2F/scripts.inc | 2 +- data/maps/TrainerHill_Entrance/scripts.inc | 2 ++ data/scripts/pkmn_center_nurse.inc | 3 ++- data/scripts/secret_base.inc | 1 + 5 files changed, 7 insertions(+), 2 deletions(-) diff --git a/data/event_scripts.s b/data/event_scripts.s index 352d004aa..4318ca2eb 100644 --- a/data/event_scripts.s +++ b/data/event_scripts.s @@ -720,6 +720,7 @@ Common_EventScript_OutOfCenterPartyHeal:: playfanfare MUS_HEAL waitfanfare special HealPlayerParty + callnative UpdateFollowingPokemon fadescreen FADE_FROM_BLACK return diff --git a/data/maps/SlateportCity_OceanicMuseum_2F/scripts.inc b/data/maps/SlateportCity_OceanicMuseum_2F/scripts.inc index 59131fd7e..cf3767d0e 100644 --- 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/TrainerHill_Entrance/scripts.inc b/data/maps/TrainerHill_Entrance/scripts.inc index 8989883e4..164969618 100644 --- 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/scripts/pkmn_center_nurse.inc b/data/scripts/pkmn_center_nurse.inc index 64ccdfa77..925666a27 100644 --- 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 d21bb9aab..6d209b3e4 100644 --- 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 From 26c38e80935af834eab2e043f3bc4cbfcb9781c9 Mon Sep 17 00:00:00 2001 From: Ariel A <24759293+aarant@users.noreply.github.com> Date: Wed, 22 Dec 2021 22:30:48 -0500 Subject: [PATCH 135/241] Removed lighting/day-night/shadow code from follower branch. --- common_syms/overworld.txt | 1 - include/event_object_movement.h | 1 - include/global.fieldmap.h | 2 +- include/global.h | 3 +- include/overworld.h | 2 - include/palette.h | 1 - .../field_effect_object_template_pointers.h | 1 - src/data/field_effects/field_effect_objects.h | 6 - .../object_events/object_event_graphics.h | 2 - src/event_object_movement.c | 151 ++++-------------- src/field_effect.c | 4 +- src/field_effect_helpers.c | 3 - src/field_weather.c | 1 - src/field_weather_effect.c | 8 +- src/overworld.c | 59 ------- src/palette.c | 47 ------ 16 files changed, 37 insertions(+), 255 deletions(-) diff --git a/common_syms/overworld.txt b/common_syms/overworld.txt index 483336209..e136f5444 100644 --- a/common_syms/overworld.txt +++ b/common_syms/overworld.txt @@ -6,4 +6,3 @@ gFieldCallback gFieldCallback2 gLocalLinkPlayerId gFieldLinkPlayerCount -gTimeOfDay diff --git a/include/event_object_movement.h b/include/event_object_movement.h index 0ba2846f7..b6d7addfc 100644 --- a/include/event_object_movement.h +++ b/include/event_object_movement.h @@ -100,7 +100,6 @@ void UpdateFollowingPokemon(void); void RemoveFollowingPokemon(void); struct ObjectEvent * GetFollowerObject(void); u8 GetDirectionToFace(s16, s16, s16, s16); -void UpdateLightSprite(struct Sprite *); void TrySpawnObjectEvents(s16, s16); u8 CreateObjectGraphicsSprite(u16, void (*)(struct Sprite *), s16 x, s16 y, u8 subpriority); u8 TrySpawnObjectEvent(u8, u8, u8); diff --git a/include/global.fieldmap.h b/include/global.fieldmap.h index 75d55e937..6babb4b91 100644 --- a/include/global.fieldmap.h +++ b/include/global.fieldmap.h @@ -181,7 +181,7 @@ struct ObjectEvent u32 inShallowFlowingWater:1; u32 inSandPile:1; u32 inHotSprings:1; - u32 noShadow:1; + u32 hasShadow:1; u32 spriteAnimPausedBackup:1; /*0x03*/ u32 spriteAffineAnimPausedBackup:1; u32 disableJumpLandingGroundEffect:1; diff --git a/include/global.h b/include/global.h index c4094ffc2..13bdf0282 100644 --- a/include/global.h +++ b/include/global.h @@ -497,7 +497,6 @@ struct SaveBlock2 extern struct SaveBlock2 *gSaveBlock2Ptr; -extern u8 UpdateSpritePaletteWithTime(u8); extern bool8 IsAccurateGBA(void); struct SecretBaseParty @@ -872,7 +871,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 9cd71f8e0..0c573eec2 100644 --- a/include/overworld.h +++ b/include/overworld.h @@ -57,7 +57,6 @@ extern void (*gFieldCallback)(void); extern bool8 (*gFieldCallback2)(void); extern u8 gLocalLinkPlayerId; extern u8 gFieldLinkPlayerCount; -extern u8 gTimeOfDay; // Exported ROM declarations extern const struct UCoords32 gDirectionToVectors[]; @@ -136,7 +135,6 @@ void CleanupOverworldWindowsAndTilemaps(void); bool32 IsOverworldLinkActive(void); void CB1_Overworld(void); void CB2_OverworldBasic(void); -void BlendPalettesWithTime(u32); void CB2_Overworld(void); void SetMainCallback1(void (*cb)(void)); void SetUnusedCallback(void *a0); diff --git a/include/palette.h b/include/palette.h index bd27651d0..81a1e1cae 100644 --- a/include/palette.h +++ b/include/palette.h @@ -59,7 +59,6 @@ void TransferPlttBuffer(void); u8 UpdatePaletteFade(void); void ResetPaletteFade(void); bool8 BeginNormalPaletteFade(u32, s8, u8, u8, u16); -bool8 BeginTimeOfDayPaletteFade(u32, s8, u8, u8, u16); void PaletteStruct_ResetById(u16); void ResetPaletteFadeControl(void); void InvertPlttBuffer(u32); 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 eb8e52029..41d6271bf 100755 --- a/src/data/field_effects/field_effect_object_template_pointers.h +++ b/src/data/field_effects/field_effect_object_template_pointers.h @@ -35,7 +35,6 @@ const struct SpriteTemplate gFieldEffectObjectTemplate_AshLaunch; const struct SpriteTemplate gFieldEffectObjectTemplate_Bubbles; const struct SpriteTemplate gFieldEffectObjectTemplate_SmallSparkle; const struct SpriteTemplate gFieldEffectObjectTemplate_Rayquaza; -const struct SpriteTemplate gFieldEffectObjectTemplate_BallLight; const struct SpriteTemplate *const gFieldEffectObjectTemplatePointers[] = { [FLDEFFOBJ_SHADOW_S] = &gFieldEffectObjectTemplate_ShadowSmall, diff --git a/src/data/field_effects/field_effect_objects.h b/src/data/field_effects/field_effect_objects.h index f6b83d5ad..b50faedc4 100755 --- a/src/data/field_effects/field_effect_objects.h +++ b/src/data/field_effects/field_effect_objects.h @@ -28,12 +28,6 @@ static const struct SpriteFrameImage sPicTable_ShadowExtraLarge[] = { obj_frame_tiles(gFieldEffectObjectPic_ShadowExtraLarge), }; -const struct SpriteFrameImage gFieldEffectObjectPicTable_BallLight[] = { - obj_frame_tiles(gFieldEffectObjectPic_BallLight), -}; - -const struct SpriteTemplate gFieldEffectObjectTemplate_BallLight = {TAG_NONE, OBJ_EVENT_PAL_TAG_LIGHT, &gObjectEventBaseOam_32x32, sAnimTable_Inanimate, gFieldEffectObjectPicTable_BallLight, gDummySpriteAffineAnimTable, UpdateLightSprite}; - const struct SpriteTemplate gFieldEffectObjectTemplate_ShadowSmall = { .tileTag = TAG_NONE, .paletteTag = OBJ_EVENT_PAL_TAG_MAY, diff --git a/src/data/object_events/object_event_graphics.h b/src/data/object_events/object_event_graphics.h index 51ad7d393..43ccdcff7 100755 --- a/src/data/object_events/object_event_graphics.h +++ b/src/data/object_events/object_event_graphics.h @@ -281,7 +281,6 @@ 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"); 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"); @@ -779,5 +778,4 @@ const u32 gObjectEventPic_RayquazaCutscene[] = INCBIN_U32("graphics/object_event 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 u16 gObjectEventPaletteLight[] = INCBIN_U16("graphics/object_events/palettes/light.gbapal"); const u16 gObjectEventPaletteEmotes[] = INCBIN_U16("graphics/misc/emotes.gbapal"); diff --git a/src/event_object_movement.c b/src/event_object_movement.c index f71a131ae..ee12d3d57 100644 --- a/src/event_object_movement.c +++ b/src/event_object_movement.c @@ -449,7 +449,6 @@ const u8 gInitialMovementTypeFacingDirections[] = { #define OBJ_EVENT_PAL_TAG_RS_BRENDAN 0x1122 #define OBJ_EVENT_PAL_TAG_RS_MAY 0x1123 #define OBJ_EVENT_PAL_TAG_DYNAMIC 0x1124 -#define OBJ_EVENT_PAL_TAG_LIGHT 0x8001 #define OBJ_EVENT_PAL_TAG_EMOTES 0x8002 #define OBJ_EVENT_PAL_TAG_NONE 0x11FF @@ -499,7 +498,6 @@ static const struct SpritePalette sObjectEventSpritePalettes[] = { {gObjectEventPal_RubySapphireBrendan, OBJ_EVENT_PAL_TAG_RS_BRENDAN}, {gObjectEventPal_RubySapphireMay, OBJ_EVENT_PAL_TAG_RS_MAY}, {gObjectEventPal_Npc1, OBJ_EVENT_PAL_TAG_DYNAMIC}, - {gObjectEventPaletteLight, OBJ_EVENT_PAL_TAG_LIGHT}, {gObjectEventPaletteEmotes, OBJ_EVENT_PAL_TAG_EMOTES}, {NULL, 0x0000}, }; @@ -1684,7 +1682,6 @@ static void FollowerSetGraphics(struct ObjectEvent *objectEvent, u16 species, u8 if (IndexOfSpritePaletteTag(spritePalette->tag) == 0xFF) { // Load compressed palette LoadCompressedSpritePalette(spritePalette); sprite->oam.paletteNum = IndexOfSpritePaletteTag(spritePalette->tag); // Tag is always present - UpdateSpritePaletteWithTime(sprite->oam.paletteNum); } else sprite->oam.paletteNum = IndexOfSpritePaletteTag(spritePalette->tag); // Tag is always present } @@ -1937,87 +1934,6 @@ bool8 ScrFunc_followerfly(struct ScriptContext *ctx) { 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; - bool8 finished = TRUE; - // Ripped from RemoveObjectEventIfOutsideView - if (x >= left && x <= right - && y >= top && y <= bottom) - finished = FALSE; - finished = finished ? finished : gTimeOfDay != TIME_OF_DAY_NIGHT; - if (finished) { - sheetTileStart = sprite->sheetTileStart; - paletteNum = sprite->oam.paletteNum; - DestroySprite(sprite); - FieldEffectFreeTilesIfUnused(sheetTileStart); - FieldEffectFreePaletteIfUnused(paletteNum); - return; - } - - if (gPlayerAvatar.tileTransitionState) { // As long as the second coefficient stays 12, shadows will not change - Weather_SetBlendCoeffs(7, 12); - sprite->invisible = FALSE; - } else { - Weather_SetBlendCoeffs(12, 12); - sprite->invisible = gSaveBlock2Ptr->playTimeVBlanks & 1; - } -} - -// Spawn a light at a map coordinate based on metatile behavior -static void SpawnLightSprite(s16 x, s16 y, s16 camX, s16 camY, u32 behavior) { - struct Sprite *sprite; - 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; - } - sprite = &gSprites[CreateSprite(&gFieldEffectObjectTemplate_BallLight, 0, 0, 0)]; - UpdateSpritePaletteByTemplate(&gFieldEffectObjectTemplate_BallLight, sprite); - GetMapCoordsFromSpritePos(x + camX, y + camY, &sprite->x, &sprite->y); - sprite->data[6] = x; - sprite->data[7] = y; - sprite->affineAnims = gDummySpriteAffineAnimTable; - sprite->affineAnimBeginning = TRUE; - 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->coordOffsetEnabled = TRUE; - sprite->x += 8; - sprite->y += 22 + sprite->centerToCornerVecY; -} - -void TrySpawnLightSprites(s16 camX, s16 camY) { - s16 left = gSaveBlock1Ptr->pos.x - 2; - s16 right = gSaveBlock1Ptr->pos.x + 17; - s16 top = gSaveBlock1Ptr->pos.y; - s16 bottom = gSaveBlock1Ptr->pos.y + 16; - u8 i = 0; - s16 x, y; - u32 behavior; - if (gTimeOfDay != TIME_OF_DAY_NIGHT) - return; - for (i = 0; gLightMetatiles[i].x > 0; i++) { - x = gLightMetatiles[i].x; - y = gLightMetatiles[i].y; - if (x >= left && x <= right && y >= top && y <= bottom) { - behavior = MapGridGetMetatileBehaviorAt(x, y); - if (behavior == 0x04) // TODO: Use an actual constant for light metatiles - SpawnLightSprite(x, y, camX, camY, behavior); - } - } -} - void TrySpawnObjectEvents(s16 cameraX, s16 cameraY) { u8 i; @@ -2048,7 +1964,6 @@ void TrySpawnObjectEvents(s16 cameraX, s16 cameraY) TrySpawnObjectEventTemplate(template, gSaveBlock1Ptr->location.mapNum, gSaveBlock1Ptr->location.mapGroup, cameraX, cameraY); } } - TrySpawnLightSprites(cameraX, cameraY); } void RemoveObjectEventsOutsideView(void) @@ -2102,7 +2017,6 @@ void SpawnObjectEventsOnReturnToField(s16 x, s16 y) SpawnObjectEventOnReturnToField(i, x, y); } CreateReflectionEffectSprites(); - TrySpawnLightSprites(x, y); } static void SpawnObjectEventOnReturnToField(u8 objectEventId, s16 x, s16 y) @@ -2166,7 +2080,7 @@ static void ResetObjectEventFldEffData(struct ObjectEvent *objectEvent) { objectEvent->singleMovementActive = FALSE; objectEvent->triggerGroundEffectsOnMove = TRUE; - objectEvent->noShadow = FALSE; + objectEvent->hasShadow = FALSE; objectEvent->hasReflection = FALSE; objectEvent->inShortGrass = FALSE; objectEvent->inShallowFlowingWater = FALSE; @@ -2191,7 +2105,6 @@ static u8 UpdateSpritePalette(const struct SpritePalette * spritePalette, struct sprite->inUse = TRUE; if (IndexOfSpritePaletteTag(spritePalette->tag) == 0xFF) { sprite->oam.paletteNum = LoadSpritePalette(spritePalette); - UpdateSpritePaletteWithTime(sprite->oam.paletteNum); } else { sprite->oam.paletteNum = LoadSpritePalette(spritePalette); } @@ -2437,7 +2350,6 @@ static u8 LoadSpritePaletteIfTagExists(const struct SpritePalette *spritePalette if (IndexOfSpritePaletteTag(spritePalette->tag) != 0xFF) return 0xFF; paletteNum = LoadSpritePalette(spritePalette); - UpdateSpritePaletteWithTime(paletteNum); return paletteNum; } @@ -6154,7 +6066,7 @@ bool8 MovementAction_Jump2Down_Step1(struct ObjectEvent *objectEvent, struct Spr { if (DoJumpAnim(objectEvent, sprite)) { - objectEvent->noShadow = FALSE; + objectEvent->hasShadow = FALSE; sprite->sActionFuncId = 2; return TRUE; } @@ -6171,7 +6083,7 @@ bool8 MovementAction_Jump2Up_Step1(struct ObjectEvent *objectEvent, struct Sprit { if (DoJumpAnim(objectEvent, sprite)) { - objectEvent->noShadow = FALSE; + objectEvent->hasShadow = FALSE; sprite->sActionFuncId = 2; return TRUE; } @@ -6188,7 +6100,7 @@ bool8 MovementAction_Jump2Left_Step1(struct ObjectEvent *objectEvent, struct Spr { if (DoJumpAnim(objectEvent, sprite)) { - objectEvent->noShadow = FALSE; + objectEvent->hasShadow = FALSE; sprite->sActionFuncId = 2; return TRUE; } @@ -6205,7 +6117,7 @@ bool8 MovementAction_Jump2Right_Step1(struct ObjectEvent *objectEvent, struct Sp { if (DoJumpAnim(objectEvent, sprite)) { - objectEvent->noShadow = FALSE; + objectEvent->hasShadow = FALSE; sprite->sActionFuncId = 2; return TRUE; } @@ -6976,7 +6888,7 @@ bool8 MovementAction_JumpDown_Step1(struct ObjectEvent *objectEvent, struct Spri { if (DoJumpAnim(objectEvent, sprite)) { - objectEvent->noShadow = 0; + objectEvent->hasShadow = 0; sprite->sActionFuncId = 2; return TRUE; } @@ -6993,7 +6905,7 @@ bool8 MovementAction_JumpUp_Step1(struct ObjectEvent *objectEvent, struct Sprite { if (DoJumpAnim(objectEvent, sprite)) { - objectEvent->noShadow = 0; + objectEvent->hasShadow = 0; sprite->sActionFuncId = 2; return TRUE; } @@ -7010,7 +6922,7 @@ bool8 MovementAction_JumpLeft_Step1(struct ObjectEvent *objectEvent, struct Spri { if (DoJumpAnim(objectEvent, sprite)) { - objectEvent->noShadow = 0; + objectEvent->hasShadow = 0; sprite->sActionFuncId = 2; return TRUE; } @@ -7027,7 +6939,7 @@ bool8 MovementAction_JumpRight_Step1(struct ObjectEvent *objectEvent, struct Spr { if (DoJumpAnim(objectEvent, sprite)) { - objectEvent->noShadow = 0; + objectEvent->hasShadow = 0; sprite->sActionFuncId = 2; return TRUE; } @@ -7044,7 +6956,7 @@ bool8 MovementAction_JumpInPlaceDown_Step1(struct ObjectEvent *objectEvent, stru { if (DoJumpAnim(objectEvent, sprite)) { - objectEvent->noShadow = 0; + objectEvent->hasShadow = 0; sprite->sActionFuncId = 2; return TRUE; } @@ -7061,7 +6973,7 @@ bool8 MovementAction_JumpInPlaceUp_Step1(struct ObjectEvent *objectEvent, struct { if (DoJumpAnim(objectEvent, sprite)) { - objectEvent->noShadow = 0; + objectEvent->hasShadow = 0; sprite->sActionFuncId = 2; return TRUE; } @@ -7078,7 +6990,7 @@ bool8 MovementAction_JumpInPlaceLeft_Step1(struct ObjectEvent *objectEvent, stru { if (DoJumpAnim(objectEvent, sprite)) { - objectEvent->noShadow = 0; + objectEvent->hasShadow = 0; sprite->sActionFuncId = 2; return TRUE; } @@ -7095,7 +7007,7 @@ bool8 MovementAction_JumpInPlaceRight_Step1(struct ObjectEvent *objectEvent, str { if (DoJumpAnim(objectEvent, sprite)) { - objectEvent->noShadow = 0; + objectEvent->hasShadow = 0; sprite->sActionFuncId = 2; return TRUE; } @@ -7112,7 +7024,7 @@ bool8 MovementAction_JumpInPlaceDownUp_Step1(struct ObjectEvent *objectEvent, st { if (DoJumpInPlaceAnim(objectEvent, sprite)) { - objectEvent->noShadow = 0; + objectEvent->hasShadow = 0; sprite->sActionFuncId = 2; return TRUE; } @@ -7129,7 +7041,7 @@ bool8 MovementAction_JumpInPlaceUpDown_Step1(struct ObjectEvent *objectEvent, st { if (DoJumpInPlaceAnim(objectEvent, sprite)) { - objectEvent->noShadow = 0; + objectEvent->hasShadow = 0; sprite->sActionFuncId = 2; return TRUE; } @@ -7146,7 +7058,7 @@ bool8 MovementAction_JumpInPlaceLeftRight_Step1(struct ObjectEvent *objectEvent, { if (DoJumpInPlaceAnim(objectEvent, sprite)) { - objectEvent->noShadow = 0; + objectEvent->hasShadow = 0; sprite->sActionFuncId = 2; return TRUE; } @@ -7163,7 +7075,7 @@ bool8 MovementAction_JumpInPlaceRightLeft_Step1(struct ObjectEvent *objectEvent, { if (DoJumpInPlaceAnim(objectEvent, sprite)) { - objectEvent->noShadow = 0; + objectEvent->hasShadow = 0; sprite->sActionFuncId = 2; return TRUE; } @@ -7608,7 +7520,7 @@ bool8 MovementAction_AcroWheelieHopFaceDown_Step1(struct ObjectEvent *objectEven { if (DoJumpAnim(objectEvent, sprite)) { - objectEvent->noShadow = FALSE; + objectEvent->hasShadow = FALSE; sprite->sActionFuncId = 2; return TRUE; } @@ -7625,7 +7537,7 @@ bool8 MovementAction_AcroWheelieHopFaceUp_Step1(struct ObjectEvent *objectEvent, { if (DoJumpAnim(objectEvent, sprite)) { - objectEvent->noShadow = FALSE; + objectEvent->hasShadow = FALSE; sprite->sActionFuncId = 2; return TRUE; } @@ -7642,7 +7554,7 @@ bool8 MovementAction_AcroWheelieHopFaceLeft_Step1(struct ObjectEvent *objectEven { if (DoJumpAnim(objectEvent, sprite)) { - objectEvent->noShadow = FALSE; + objectEvent->hasShadow = FALSE; sprite->sActionFuncId = 2; return TRUE; } @@ -7659,7 +7571,7 @@ bool8 MovementAction_AcroWheelieHopFaceRight_Step1(struct ObjectEvent *objectEve { if (DoJumpAnim(objectEvent, sprite)) { - objectEvent->noShadow = FALSE; + objectEvent->hasShadow = FALSE; sprite->sActionFuncId = 2; return TRUE; } @@ -7676,7 +7588,7 @@ bool8 MovementAction_AcroWheelieHopDown_Step1(struct ObjectEvent *objectEvent, s { if (DoJumpAnim(objectEvent, sprite)) { - objectEvent->noShadow = FALSE; + objectEvent->hasShadow = FALSE; sprite->sActionFuncId = 2; return TRUE; } @@ -7693,7 +7605,7 @@ bool8 MovementAction_AcroWheelieHopUp_Step1(struct ObjectEvent *objectEvent, str { if (DoJumpAnim(objectEvent, sprite)) { - objectEvent->noShadow = FALSE; + objectEvent->hasShadow = FALSE; sprite->sActionFuncId = 2; return TRUE; } @@ -7710,7 +7622,7 @@ bool8 MovementAction_AcroWheelieHopLeft_Step1(struct ObjectEvent *objectEvent, s { if (DoJumpAnim(objectEvent, sprite)) { - objectEvent->noShadow = FALSE; + objectEvent->hasShadow = FALSE; sprite->sActionFuncId = 2; return TRUE; } @@ -7727,7 +7639,7 @@ bool8 MovementAction_AcroWheelieHopRight_Step1(struct ObjectEvent *objectEvent, { if (DoJumpAnim(objectEvent, sprite)) { - objectEvent->noShadow = FALSE; + objectEvent->hasShadow = FALSE; sprite->sActionFuncId = 2; return TRUE; } @@ -7744,7 +7656,7 @@ bool8 MovementAction_AcroWheelieJumpDown_Step1(struct ObjectEvent *objectEvent, { if (DoJumpAnim(objectEvent, sprite)) { - objectEvent->noShadow = FALSE; + objectEvent->hasShadow = FALSE; sprite->sActionFuncId = 2; return TRUE; } @@ -7761,7 +7673,7 @@ bool8 MovementAction_AcroWheelieJumpUp_Step1(struct ObjectEvent *objectEvent, st { if (DoJumpAnim(objectEvent, sprite)) { - objectEvent->noShadow = FALSE; + objectEvent->hasShadow = FALSE; sprite->sActionFuncId = 2; return TRUE; } @@ -7778,7 +7690,7 @@ bool8 MovementAction_AcroWheelieJumpLeft_Step1(struct ObjectEvent *objectEvent, { if (DoJumpAnim(objectEvent, sprite)) { - objectEvent->noShadow = FALSE; + objectEvent->hasShadow = FALSE; sprite->sActionFuncId = 2; return TRUE; } @@ -7795,7 +7707,7 @@ bool8 MovementAction_AcroWheelieJumpRight_Step1(struct ObjectEvent *objectEvent, { if (DoJumpAnim(objectEvent, sprite)) { - objectEvent->noShadow = FALSE; + objectEvent->hasShadow = FALSE; sprite->sActionFuncId = 2; return TRUE; } @@ -8806,7 +8718,6 @@ static void DoFlaggedGroundEffects(struct ObjectEvent *objEvent, struct Sprite * for (i = 0; i < ARRAY_COUNT(sGroundEffectFuncs); i++, flags >>= 1) if (flags & 1) sGroundEffectFuncs[i](objEvent, sprite); - GroundEffect_Shadow(objEvent, sprite); } void filters_out_some_ground_effects(struct ObjectEvent *objEvent, u32 *flags) @@ -9512,9 +9423,9 @@ u32 StartFieldEffectForObjectEvent(u8 fieldEffectId, struct ObjectEvent *objectE static void DoShadowFieldEffect(struct ObjectEvent *objectEvent) { - if (objectEvent->noShadow) + if (!objectEvent->hasShadow) { - objectEvent->noShadow = FALSE; + objectEvent->hasShadow = 1; StartFieldEffectForObjectEvent(FLDEFF_SHADOW, objectEvent); } } diff --git a/src/field_effect.c b/src/field_effect.c index 5172ea8c8..35902b455 100644 --- a/src/field_effect.c +++ b/src/field_effect.c @@ -771,7 +771,6 @@ void FieldEffectScript_LoadFadedPalette(u8 **script) struct SpritePalette *palette = (struct SpritePalette *)FieldEffectScript_ReadWord(script); LoadSpritePalette(palette); UpdateSpritePaletteWithWeather(IndexOfSpritePaletteTag(palette->tag)); - UpdateSpritePaletteWithTime(IndexOfSpritePaletteTag(palette->tag)); // Ensure field effects are blended (*script) += 4; } @@ -3271,7 +3270,7 @@ static void FlyOutFieldEffect_FlyOffWithBird(struct Task *task) struct ObjectEvent *objectEvent = &gObjectEvents[gPlayerAvatar.objectEventId]; ObjectEventClearHeldMovementIfActive(objectEvent); objectEvent->inanimate = FALSE; - objectEvent->noShadow = TRUE; // TODO: Make shadow smaller instead of disappearing completely ? + objectEvent->hasShadow = FALSE; SetFlyBirdPlayerSpriteId(task->tBirdSpriteId, objectEvent->spriteId); CameraObjectReset2(); task->tState++; @@ -3491,7 +3490,6 @@ 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 cf8ba8c47..977893279 100755 --- a/src/field_effect_helpers.c +++ b/src/field_effect_helpers.c @@ -157,7 +157,6 @@ static void LoadObjectRegularReflectionPalette(struct ObjectEvent *objectEvent, } paletteNum = LoadSpritePalette(&filteredPalette); UpdateSpritePaletteWithWeather(paletteNum); - UpdateSpritePaletteWithTime(paletteNum); } sprite->oam.paletteNum = paletteNum; sprite->oam.objMode = 1; // Alpha blending @@ -210,7 +209,6 @@ static void UpdateObjectReflectionSprite(struct Sprite *reflectionSprite) } paletteNum = LoadSpritePalette(&filteredPalette); UpdateSpritePaletteWithWeather(paletteNum); - UpdateSpritePaletteWithTime(paletteNum); } reflectionSprite->oam.paletteNum = paletteNum; } @@ -355,7 +353,6 @@ void UpdateShadowFieldEffect(struct Sprite *sprite) sprite->y = linkedSprite->y + sprite->data[3]; sprite->invisible = linkedSprite->invisible; if (!objectEvent->active - || objectEvent->noShadow || MetatileBehavior_IsPokeGrass(objectEvent->currentMetatileBehavior) || MetatileBehavior_IsSurfableWaterOrUnderwater(objectEvent->currentMetatileBehavior) || MetatileBehavior_IsSurfableWaterOrUnderwater(objectEvent->previousMetatileBehavior)) diff --git a/src/field_weather.c b/src/field_weather.c index 2006f9f76..698b079ec 100644 --- a/src/field_weather.c +++ b/src/field_weather.c @@ -862,7 +862,6 @@ void LoadCustomWeatherSpritePalette(const u16 *palette) { LoadPalette(palette, 0x100 + gWeatherPtr->weatherPicSpritePalIndex * 16, 32); UpdateSpritePaletteWithWeather(gWeatherPtr->weatherPicSpritePalIndex); - UpdateSpritePaletteWithTime(gWeatherPtr->weatherPicSpritePalIndex); } static void LoadDroughtWeatherPalette(u8 *gammaIndexPtr, u8 *a1) diff --git a/src/field_weather_effect.c b/src/field_weather_effect.c index 58e5d8c3d..c9231c71f 100644 --- a/src/field_weather_effect.c +++ b/src/field_weather_effect.c @@ -479,7 +479,7 @@ void Rain_InitVars(void) gWeatherPtr->rainSpriteVisibleDelay = 8; gWeatherPtr->isDownpour = FALSE; gWeatherPtr->targetRainSpriteCount = 10; - gWeatherPtr->gammaTargetIndex = gTimeOfDay == TIME_OF_DAY_DAY ? 3 : 0; + gWeatherPtr->gammaTargetIndex = 3; gWeatherPtr->gammaStepDelay = 20; SetRainStrengthFromSoundEffect(SE_RAIN); } @@ -1045,7 +1045,7 @@ void Thunderstorm_InitVars(void) gWeatherPtr->rainSpriteVisibleDelay = 4; gWeatherPtr->isDownpour = FALSE; gWeatherPtr->targetRainSpriteCount = 16; - gWeatherPtr->gammaTargetIndex = gTimeOfDay == TIME_OF_DAY_DAY ? 3 : 0; + gWeatherPtr->gammaTargetIndex = 3; gWeatherPtr->gammaStepDelay = 20; gWeatherPtr->weatherGfxLoaded = FALSE; // duplicate assignment gWeatherPtr->thunderTriggered = FALSE; @@ -1142,8 +1142,6 @@ void Thunderstorm_Main(void) if (--gWeatherPtr->thunderDelay == 0) { ApplyWeatherGammaShiftIfIdle(3); - if (gTimeOfDay != TIME_OF_DAY_DAY) - BlendPalettesWithTime(0xFFFFFFFF); gWeatherPtr->thunderAllowEnd = TRUE; if (--gWeatherPtr->thunderShortRetries != 0) { @@ -1184,7 +1182,7 @@ void Thunderstorm_Main(void) case TSTORM_STATE_FADE_THUNDER_LONG: if (--gWeatherPtr->thunderDelay == 0) { - gTimeOfDay == TIME_OF_DAY_DAY ? ApplyWeatherGammaShiftIfIdle_Gradual(19, 3, 5) : BlendPalettesWithTime(0xFFFFFFFF); + ApplyWeatherGammaShiftIfIdle_Gradual(19, 3, 5); gWeatherPtr->initStep++; } break; diff --git a/src/overworld.c b/src/overworld.c index 913a9645d..697fd444d 100644 --- a/src/overworld.c +++ b/src/overworld.c @@ -184,7 +184,6 @@ static u16 (*sPlayerKeyInterceptCallback)(u32); static bool8 sReceivingFromLink; static u8 sRfuKeepAliveTimer; -u8 static gTimeOfDayState; // IWRAM common u16 *gBGTilemapBuffers1; @@ -196,7 +195,6 @@ bool8 (*gFieldCallback2)(void); u8 gLocalLinkPlayerId; // This is our player id in a multiplayer mode. u8 gFieldLinkPlayerCount; -u8 gTimeOfDay; // EWRAM vars EWRAM_DATA static u8 sObjectEventLoadFlag = 0; @@ -847,7 +845,6 @@ void LoadMapFromCameraTransition(u8 mapGroup, u8 mapNum) RoamerMove(); DoCurrentWeather(); ResetFieldTasksArgs(); - BlendPalettesWithTime(0xFFFFFFFF); RunOnResumeMapScript(); if (gMapHeader.regionMapSectionId != MAPSEC_BATTLE_FRONTIER @@ -1483,59 +1480,6 @@ void CB1_Overworld(void) DoCB1_Overworld(gMain.newKeys, gMain.heldKeys); } -struct TimeOfDayBlend { - u8 coeff:4; - u16 blendColor; -}; - -static const struct TimeOfDayBlend sTimeOfDayBlendVars[] = -{ - [TIME_OF_DAY_NIGHT] = {.coeff = 10, .blendColor = 0x1400}, - [TIME_OF_DAY_TWILIGHT] = {.coeff = 4, .blendColor = 0x155D}, - [TIME_OF_DAY_DAY] = {.coeff = 0, .blendColor = 0}, -}; - -u8 UpdateTimeOfDay(void) { - RtcCalcLocalTime(); - if (gLocalTime.hours >= 20 || gLocalTime.hours < 4) - return gTimeOfDay = TIME_OF_DAY_NIGHT; - else if (gLocalTime.hours >= 10 && gLocalTime.hours < 20) - return gTimeOfDay = TIME_OF_DAY_DAY; - return gTimeOfDay = TIME_OF_DAY_TWILIGHT; -} - -static bool8 MapHasNaturalLight(u8 mapType) { // Weather a map type is naturally lit/outside - return mapType == MAP_TYPE_TOWN || mapType == MAP_TYPE_CITY || mapType == MAP_TYPE_ROUTE; -} - -static bool8 FadePalettesWithTime(void) { - gTimeOfDayState = 0; - gTimeOfDay = UpdateTimeOfDay(); - if (MapHasNaturalLight(gMapHeader.mapType)) { - ResetPaletteFade(); - BeginTimeOfDayPaletteFade(0xFFFFFFFF, 0, 16, sTimeOfDayBlendVars[gTimeOfDay].coeff, sTimeOfDayBlendVars[gTimeOfDay].blendColor); - } -} - -void BlendPalettesWithTime(u32 palettes) { - // Only blend if not transitioning between times and the map type allows - if (gTimeOfDayState == 0 && MapHasNaturalLight(gMapHeader.mapType)) { - u8 i; - for (i = 0; i < 16; i++) { - if (GetSpritePaletteTagByPaletteNum(i) & 0x8000) // Don't blend special sprite palette tags - palettes &= ~(1 << (i + 16)); - } - palettes &= ~0xE000; // Don't blend tile palettes [13,15] - gTimeOfDay = gTimeOfDay > TIME_OF_DAY_MAX ? TIME_OF_DAY_MAX : gTimeOfDay; - BlendPalettes(palettes, sTimeOfDayBlendVars[gTimeOfDay].coeff, sTimeOfDayBlendVars[gTimeOfDay].blendColor); - } -} - -u8 UpdateSpritePaletteWithTime(u8 paletteNum) { - BlendPalettesWithTime(1 << (paletteNum + 16)); - return paletteNum; -} - static void OverworldBasic(void) { ScriptContext2_RunScript(); @@ -1559,7 +1503,6 @@ void CB2_Overworld(void) { u32 *debugPtr = (u32*) 0x0203de00; bool32 fading = (gPaletteFade.active != 0); - *debugPtr = (u32) &gTimeOfDay; if (fading) SetVBlankCallback(NULL); OverworldBasic(); @@ -1662,7 +1605,6 @@ static void CB2_LoadMap2(void) DoMapLoadLoop(&gMain.state); SetFieldVBlankCallback(); SetMainCallback1(CB1_Overworld); - FadePalettesWithTime(); SetMainCallback2(CB2_Overworld); } @@ -1719,7 +1661,6 @@ static void CB2_ReturnToFieldLocal(void) if (ReturnToFieldLocal(&gMain.state)) { SetFieldVBlankCallback(); - FadePalettesWithTime(); SetMainCallback2(CB2_Overworld); } } diff --git a/src/palette.c b/src/palette.c index d9da87625..58c05e187 100644 --- a/src/palette.c +++ b/src/palette.c @@ -205,53 +205,6 @@ 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, u16 blendColor) -{ - u8 temp; - u16 color = blendColor; - - 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.blendColor = color; - gPaletteFade.active = 1; - gPaletteFade.mode = TIME_OF_DAY_FADE; - - 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) { From 11c7eee285a6b0699681a0b3cfd9061e875d9090 Mon Sep 17 00:00:00 2001 From: Ariel A <24759293+aarant@users.noreply.github.com> Date: Wed, 22 Dec 2021 23:12:20 -0500 Subject: [PATCH 136/241] Restored lighting & shadows code removed from follower branch. --- common_syms/overworld.txt | 1 + include/event_object_movement.h | 1 + include/global.fieldmap.h | 2 +- include/global.h | 3 +- include/overworld.h | 1 + include/palette.h | 1 + .../field_effect_object_template_pointers.h | 1 + src/data/field_effects/field_effect_objects.h | 6 ++ .../object_events/object_event_graphics.h | 2 + src/event_object_movement.c | 66 ++++++++++--------- src/field_effect.c | 3 +- 11 files changed, 53 insertions(+), 34 deletions(-) diff --git a/common_syms/overworld.txt b/common_syms/overworld.txt index 3cea73ccd..cc92cee1e 100644 --- a/common_syms/overworld.txt +++ b/common_syms/overworld.txt @@ -6,4 +6,5 @@ gFieldCallback gFieldCallback2 gLocalLinkPlayerId gFieldLinkPlayerCount +gTimeOfDay currentTimeBlend diff --git a/include/event_object_movement.h b/include/event_object_movement.h index a59203f84..98e5fd784 100644 --- a/include/event_object_movement.h +++ b/include/event_object_movement.h @@ -100,6 +100,7 @@ void UpdateFollowingPokemon(void); void RemoveFollowingPokemon(void); struct ObjectEvent * GetFollowerObject(void); u8 GetDirectionToFace(s16, s16, s16, s16); +void UpdateLightSprite(struct Sprite *); void TrySpawnObjectEvents(s16, s16); u8 CreateObjectGraphicsSprite(u16, void (*)(struct Sprite *), s16 x, s16 y, u8 subpriority); u8 TrySpawnObjectEvent(u8, u8, u8); diff --git a/include/global.fieldmap.h b/include/global.fieldmap.h index 424fd46d5..24e9e9ea5 100644 --- a/include/global.fieldmap.h +++ b/include/global.fieldmap.h @@ -183,7 +183,7 @@ 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; diff --git a/include/global.h b/include/global.h index 13bdf0282..c4094ffc2 100644 --- a/include/global.h +++ b/include/global.h @@ -497,6 +497,7 @@ struct SaveBlock2 extern struct SaveBlock2 *gSaveBlock2Ptr; +extern u8 UpdateSpritePaletteWithTime(u8); extern bool8 IsAccurateGBA(void); struct SecretBaseParty @@ -871,7 +872,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 246d63e29..0469c8b9e 100644 --- a/include/overworld.h +++ b/include/overworld.h @@ -62,6 +62,7 @@ extern void (*gFieldCallback)(void); extern bool8 (*gFieldCallback2)(void); extern u8 gLocalLinkPlayerId; extern u8 gFieldLinkPlayerCount; +extern u8 gTimeOfDay; extern struct TimeBlendSettings currentTimeBlend; diff --git a/include/palette.h b/include/palette.h index f9f42990e..7e9ed0cae 100644 --- a/include/palette.h +++ b/include/palette.h @@ -69,6 +69,7 @@ void TransferPlttBuffer(void); u8 UpdatePaletteFade(void); void ResetPaletteFade(void); bool8 BeginNormalPaletteFade(u32, s8, u8, u8, u16); +bool8 BeginTimeOfDayPaletteFade(u32, s8, u8, u8, struct BlendSettings *, struct BlendSettings *, u16, u16); void PaletteStruct_ResetById(u16); void ResetPaletteFadeControl(void); void InvertPlttBuffer(u32); 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 41d6271bf..eb8e52029 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,7 @@ const struct SpriteTemplate gFieldEffectObjectTemplate_AshLaunch; const struct SpriteTemplate gFieldEffectObjectTemplate_Bubbles; const struct SpriteTemplate gFieldEffectObjectTemplate_SmallSparkle; const struct SpriteTemplate gFieldEffectObjectTemplate_Rayquaza; +const struct SpriteTemplate gFieldEffectObjectTemplate_BallLight; const struct SpriteTemplate *const gFieldEffectObjectTemplatePointers[] = { [FLDEFFOBJ_SHADOW_S] = &gFieldEffectObjectTemplate_ShadowSmall, diff --git a/src/data/field_effects/field_effect_objects.h b/src/data/field_effects/field_effect_objects.h index da688f2cf..aa4bc624d 100755 --- a/src/data/field_effects/field_effect_objects.h +++ b/src/data/field_effects/field_effect_objects.h @@ -28,6 +28,12 @@ static const struct SpriteFrameImage sPicTable_ShadowExtraLarge[] = { obj_frame_tiles(gFieldEffectObjectPic_ShadowExtraLarge), }; +const struct SpriteFrameImage gFieldEffectObjectPicTable_BallLight[] = { + obj_frame_tiles(gFieldEffectObjectPic_BallLight), +}; + +const struct SpriteTemplate gFieldEffectObjectTemplate_BallLight = {TAG_NONE, OBJ_EVENT_PAL_TAG_LIGHT, &gObjectEventBaseOam_32x32, sAnimTable_Inanimate, gFieldEffectObjectPicTable_BallLight, gDummySpriteAffineAnimTable, UpdateLightSprite}; + const struct SpriteTemplate gFieldEffectObjectTemplate_ShadowSmall = { .tileTag = TAG_NONE, .paletteTag = TAG_WEATHER_START, diff --git a/src/data/object_events/object_event_graphics.h b/src/data/object_events/object_event_graphics.h index 43ccdcff7..51ad7d393 100755 --- a/src/data/object_events/object_event_graphics.h +++ b/src/data/object_events/object_event_graphics.h @@ -281,6 +281,7 @@ 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"); 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"); @@ -778,4 +779,5 @@ const u32 gObjectEventPic_RayquazaCutscene[] = INCBIN_U32("graphics/object_event 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 u16 gObjectEventPaletteLight[] = INCBIN_U16("graphics/object_events/palettes/light.gbapal"); const u16 gObjectEventPaletteEmotes[] = INCBIN_U16("graphics/misc/emotes.gbapal"); diff --git a/src/event_object_movement.c b/src/event_object_movement.c index 6ef1bd15e..f9ec12b8d 100644 --- a/src/event_object_movement.c +++ b/src/event_object_movement.c @@ -448,6 +448,7 @@ const u8 gInitialMovementTypeFacingDirections[] = { #define OBJ_EVENT_PAL_TAG_RS_BRENDAN 0x1122 #define OBJ_EVENT_PAL_TAG_RS_MAY 0x1123 #define OBJ_EVENT_PAL_TAG_DYNAMIC 0x1124 +#define OBJ_EVENT_PAL_TAG_LIGHT 0x8001 #define OBJ_EVENT_PAL_TAG_EMOTES 0x8002 #define OBJ_EVENT_PAL_TAG_NONE 0x11FF @@ -497,6 +498,7 @@ static const struct SpritePalette sObjectEventSpritePalettes[] = { {gObjectEventPal_RubySapphireBrendan, OBJ_EVENT_PAL_TAG_RS_BRENDAN}, {gObjectEventPal_RubySapphireMay, OBJ_EVENT_PAL_TAG_RS_MAY}, {gObjectEventPal_Npc1, OBJ_EVENT_PAL_TAG_DYNAMIC}, + {gObjectEventPaletteLight, OBJ_EVENT_PAL_TAG_LIGHT}, {gObjectEventPaletteEmotes, OBJ_EVENT_PAL_TAG_EMOTES}, {NULL, 0x0000}, }; @@ -2054,6 +2056,7 @@ void TrySpawnObjectEvents(s16 cameraX, s16 cameraY) TrySpawnObjectEventTemplate(template, gSaveBlock1Ptr->location.mapNum, gSaveBlock1Ptr->location.mapGroup, cameraX, cameraY); } } + TrySpawnLightSprites(cameraX, cameraY); } void RemoveObjectEventsOutsideView(void) @@ -2107,6 +2110,7 @@ void SpawnObjectEventsOnReturnToField(s16 x, s16 y) SpawnObjectEventOnReturnToField(i, x, y); } CreateReflectionEffectSprites(); + TrySpawnLightSprites(x, y); } static void SpawnObjectEventOnReturnToField(u8 objectEventId, s16 x, s16 y) @@ -2170,7 +2174,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; @@ -6160,7 +6164,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; } @@ -6177,7 +6181,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; } @@ -6194,7 +6198,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; } @@ -6211,7 +6215,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; } @@ -6982,7 +6986,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; } @@ -6999,7 +7003,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; } @@ -7016,7 +7020,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; } @@ -7033,7 +7037,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; } @@ -7050,7 +7054,7 @@ bool8 MovementAction_JumpInPlaceDown_Step1(struct ObjectEvent *objectEvent, stru { if (DoJumpAnim(objectEvent, sprite)) { - objectEvent->hasShadow = 0; + objectEvent->noShadow = 0; sprite->sActionFuncId = 2; return TRUE; } @@ -7067,7 +7071,7 @@ bool8 MovementAction_JumpInPlaceUp_Step1(struct ObjectEvent *objectEvent, struct { if (DoJumpAnim(objectEvent, sprite)) { - objectEvent->hasShadow = 0; + objectEvent->noShadow = 0; sprite->sActionFuncId = 2; return TRUE; } @@ -7084,7 +7088,7 @@ bool8 MovementAction_JumpInPlaceLeft_Step1(struct ObjectEvent *objectEvent, stru { if (DoJumpAnim(objectEvent, sprite)) { - objectEvent->hasShadow = 0; + objectEvent->noShadow = 0; sprite->sActionFuncId = 2; return TRUE; } @@ -7101,7 +7105,7 @@ bool8 MovementAction_JumpInPlaceRight_Step1(struct ObjectEvent *objectEvent, str { if (DoJumpAnim(objectEvent, sprite)) { - objectEvent->hasShadow = 0; + objectEvent->noShadow = 0; sprite->sActionFuncId = 2; return TRUE; } @@ -7118,7 +7122,7 @@ bool8 MovementAction_JumpInPlaceDownUp_Step1(struct ObjectEvent *objectEvent, st { if (DoJumpInPlaceAnim(objectEvent, sprite)) { - objectEvent->hasShadow = 0; + objectEvent->noShadow = 0; sprite->sActionFuncId = 2; return TRUE; } @@ -7135,7 +7139,7 @@ bool8 MovementAction_JumpInPlaceUpDown_Step1(struct ObjectEvent *objectEvent, st { if (DoJumpInPlaceAnim(objectEvent, sprite)) { - objectEvent->hasShadow = 0; + objectEvent->noShadow = 0; sprite->sActionFuncId = 2; return TRUE; } @@ -7152,7 +7156,7 @@ bool8 MovementAction_JumpInPlaceLeftRight_Step1(struct ObjectEvent *objectEvent, { if (DoJumpInPlaceAnim(objectEvent, sprite)) { - objectEvent->hasShadow = 0; + objectEvent->noShadow = 0; sprite->sActionFuncId = 2; return TRUE; } @@ -7169,7 +7173,7 @@ bool8 MovementAction_JumpInPlaceRightLeft_Step1(struct ObjectEvent *objectEvent, { if (DoJumpInPlaceAnim(objectEvent, sprite)) { - objectEvent->hasShadow = 0; + objectEvent->noShadow = 0; sprite->sActionFuncId = 2; return TRUE; } @@ -7614,7 +7618,7 @@ bool8 MovementAction_AcroWheelieHopFaceDown_Step1(struct ObjectEvent *objectEven { if (DoJumpAnim(objectEvent, sprite)) { - objectEvent->hasShadow = FALSE; + objectEvent->noShadow = FALSE; sprite->sActionFuncId = 2; return TRUE; } @@ -7631,7 +7635,7 @@ bool8 MovementAction_AcroWheelieHopFaceUp_Step1(struct ObjectEvent *objectEvent, { if (DoJumpAnim(objectEvent, sprite)) { - objectEvent->hasShadow = FALSE; + objectEvent->noShadow = FALSE; sprite->sActionFuncId = 2; return TRUE; } @@ -7648,7 +7652,7 @@ bool8 MovementAction_AcroWheelieHopFaceLeft_Step1(struct ObjectEvent *objectEven { if (DoJumpAnim(objectEvent, sprite)) { - objectEvent->hasShadow = FALSE; + objectEvent->noShadow = FALSE; sprite->sActionFuncId = 2; return TRUE; } @@ -7665,7 +7669,7 @@ bool8 MovementAction_AcroWheelieHopFaceRight_Step1(struct ObjectEvent *objectEve { if (DoJumpAnim(objectEvent, sprite)) { - objectEvent->hasShadow = FALSE; + objectEvent->noShadow = FALSE; sprite->sActionFuncId = 2; return TRUE; } @@ -7682,7 +7686,7 @@ bool8 MovementAction_AcroWheelieHopDown_Step1(struct ObjectEvent *objectEvent, s { if (DoJumpAnim(objectEvent, sprite)) { - objectEvent->hasShadow = FALSE; + objectEvent->noShadow = FALSE; sprite->sActionFuncId = 2; return TRUE; } @@ -7699,7 +7703,7 @@ bool8 MovementAction_AcroWheelieHopUp_Step1(struct ObjectEvent *objectEvent, str { if (DoJumpAnim(objectEvent, sprite)) { - objectEvent->hasShadow = FALSE; + objectEvent->noShadow = FALSE; sprite->sActionFuncId = 2; return TRUE; } @@ -7716,7 +7720,7 @@ bool8 MovementAction_AcroWheelieHopLeft_Step1(struct ObjectEvent *objectEvent, s { if (DoJumpAnim(objectEvent, sprite)) { - objectEvent->hasShadow = FALSE; + objectEvent->noShadow = FALSE; sprite->sActionFuncId = 2; return TRUE; } @@ -7733,7 +7737,7 @@ bool8 MovementAction_AcroWheelieHopRight_Step1(struct ObjectEvent *objectEvent, { if (DoJumpAnim(objectEvent, sprite)) { - objectEvent->hasShadow = FALSE; + objectEvent->noShadow = FALSE; sprite->sActionFuncId = 2; return TRUE; } @@ -7750,7 +7754,7 @@ bool8 MovementAction_AcroWheelieJumpDown_Step1(struct ObjectEvent *objectEvent, { if (DoJumpAnim(objectEvent, sprite)) { - objectEvent->hasShadow = FALSE; + objectEvent->noShadow = FALSE; sprite->sActionFuncId = 2; return TRUE; } @@ -7767,7 +7771,7 @@ bool8 MovementAction_AcroWheelieJumpUp_Step1(struct ObjectEvent *objectEvent, st { if (DoJumpAnim(objectEvent, sprite)) { - objectEvent->hasShadow = FALSE; + objectEvent->noShadow = FALSE; sprite->sActionFuncId = 2; return TRUE; } @@ -7784,7 +7788,7 @@ bool8 MovementAction_AcroWheelieJumpLeft_Step1(struct ObjectEvent *objectEvent, { if (DoJumpAnim(objectEvent, sprite)) { - objectEvent->hasShadow = FALSE; + objectEvent->noShadow = FALSE; sprite->sActionFuncId = 2; return TRUE; } @@ -7801,7 +7805,7 @@ bool8 MovementAction_AcroWheelieJumpRight_Step1(struct ObjectEvent *objectEvent, { if (DoJumpAnim(objectEvent, sprite)) { - objectEvent->hasShadow = FALSE; + objectEvent->noShadow = FALSE; sprite->sActionFuncId = 2; return TRUE; } @@ -9518,9 +9522,9 @@ u32 StartFieldEffectForObjectEvent(u8 fieldEffectId, struct ObjectEvent *objectE static void DoShadowFieldEffect(struct ObjectEvent *objectEvent) { - if (!objectEvent->hasShadow) + if (objectEvent->noShadow) { - objectEvent->hasShadow = 1; + objectEvent->noShadow = FALSE; StartFieldEffectForObjectEvent(FLDEFF_SHADOW, objectEvent); } } diff --git a/src/field_effect.c b/src/field_effect.c index d97d86cd8..afc25f757 100644 --- a/src/field_effect.c +++ b/src/field_effect.c @@ -3270,7 +3270,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++; @@ -3490,6 +3490,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); From febdb7616ee781654e809b9f7fce896b70ba7174 Mon Sep 17 00:00:00 2001 From: Ariel A <24759293+aarant@users.noreply.github.com> Date: Wed, 22 Dec 2021 23:28:27 -0500 Subject: [PATCH 137/241] Updated README.md. --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 851faed92..c52414991 100644 --- a/README.md +++ b/README.md @@ -9,13 +9,12 @@ There are several branches, each with additional features compared to vanilla: **romhack** 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. -* HGSS-style alpha-blended shadows for object events. * A way to change a pokemon's nature while mangling its PID as little as possible. * Function to detect newer emulators/new GBA hardware. **icons** branch: * Everything from the **romhack** branch. -* All pokemon icons updated to nicer looking Gen 6 style, based on [this repo](https://github.com/msikma/pokesprite/tree/master/icons/pokemon/regular) +* 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) @@ -27,6 +26,7 @@ There are several branches, each with additional features compared to vanilla: * 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. To set up the repository, see [INSTALL.md](INSTALL.md). From 58a3e55b3928019796670d6b7fa3f65b32f1b62a Mon Sep 17 00:00:00 2001 From: Ariel A <24759293+aarant@users.noreply.github.com> Date: Thu, 23 Dec 2021 01:35:11 -0500 Subject: [PATCH 138/241] Fixed follower appearance in shops. --- src/event_object_movement.c | 92 ++++++++++++++++++++++++++----------- src/shop.c | 12 ++++- 2 files changed, 77 insertions(+), 27 deletions(-) diff --git a/src/event_object_movement.c b/src/event_object_movement.c index ee12d3d57..840571870 100644 --- a/src/event_object_movement.c +++ b/src/event_object_movement.c @@ -174,6 +174,9 @@ static u8 DoJumpSpecialSpriteMovement(struct Sprite *sprite); static void CreateLevitateMovementTask(struct ObjectEvent *); static void DestroyLevitateMovementTask(u8); static bool8 NpcTakeStep(struct Sprite *sprite); +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 const struct SpriteFrameImage sPicTable_PechaBerryTree[]; @@ -1557,10 +1560,30 @@ u8 CreateObjectGraphicsSprite(u16 graphicsId, void (*callback)(struct Sprite *), const struct SubspriteTable *subspriteTables; struct Sprite *sprite; u8 spriteId; + u16 species; + u8 form; + bool8 shiny; + u8 paletteNum; spriteTemplate = malloc(sizeof(struct SpriteTemplate)); - CopyObjectGraphicsInfoToSpriteTemplate(graphicsId, callback, spriteTemplate, &subspriteTables); - if (spriteTemplate->paletteTag != TAG_NONE) + if (graphicsId == OBJ_EVENT_GFX_OW_MON && GetFollowerInfo(&species, &form, &shiny)) { + const struct ObjectEventGraphicsInfo *graphicsInfo = SpeciesToGraphicsInfo(species, form); + spriteTemplate->tileTag = graphicsInfo->tileTag; + spriteTemplate->paletteTag = graphicsInfo->paletteTag; + spriteTemplate->oam = graphicsInfo->oam; + spriteTemplate->anims = graphicsInfo->anims; + spriteTemplate->images = graphicsInfo->images; + spriteTemplate->affineAnims = graphicsInfo->affineAnims; + spriteTemplate->callback = callback; + subspriteTables = graphicsInfo->subspriteTables; + } else + CopyObjectGraphicsInfoToSpriteTemplate(graphicsId, callback, spriteTemplate, &subspriteTables); + + if (spriteTemplate->paletteTag == OBJ_EVENT_PAL_TAG_DYNAMIC) { + const struct CompressedSpritePalette *spritePalette = &(shiny ? gMonShinyPaletteTable : gMonPaletteTable)[species]; + paletteNum = LoadDynamicFollowerPalette(species, form, shiny); + spriteTemplate->paletteTag = spritePalette->tag; + } else if (spriteTemplate->paletteTag != TAG_NONE) LoadObjectEventPalette(spriteTemplate->paletteTag); spriteId = CreateSprite(spriteTemplate, x, y, subpriority); @@ -1661,41 +1684,61 @@ static const struct ObjectEventGraphicsInfo * SpeciesToGraphicsInfo(u16 species, return graphicsInfo->tileTag == 0xFFFF ? graphicsInfo : &gPokemonObjectGraphics[SPECIES_PORYGON]; // avoid OOB access } -// Set graphics & sprite for a follower object event by species & shininess. -static void FollowerSetGraphics(struct ObjectEvent *objectEvent, u16 species, u8 form, bool8 shiny) { - const struct ObjectEventGraphicsInfo *graphicsInfo = SpeciesToGraphicsInfo(species, form); - objectEvent->graphicsId = OBJ_EVENT_GFX_OW_MON; - ObjectEventSetGraphics(objectEvent, graphicsInfo); - objectEvent->graphicsId = OBJ_EVENT_GFX_OW_MON; - objectEvent->extra.mon.species = species; - objectEvent->extra.mon.form = form; - objectEvent->extra.mon.shiny = shiny; - if (graphicsInfo->paletteTag == OBJ_EVENT_PAL_TAG_DYNAMIC) { // Use palette from species palette table - struct Sprite *sprite = &gSprites[objectEvent->spriteId]; +// 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]; - // Free palette if otherwise unused - sprite->inUse = FALSE; - FieldEffectFreePaletteIfUnused(sprite->oam.paletteNum); - sprite->inUse = TRUE; - if (IndexOfSpritePaletteTag(spritePalette->tag) == 0xFF) { // Load compressed palette + if ((paletteNum = IndexOfSpritePaletteTag(spritePalette->tag)) == 0xFF) { // Load compressed palette LoadCompressedSpritePalette(spritePalette); - sprite->oam.paletteNum = IndexOfSpritePaletteTag(spritePalette->tag); // Tag is always present - } else - sprite->oam.paletteNum = IndexOfSpritePaletteTag(spritePalette->tag); // Tag is always present + paletteNum = IndexOfSpritePaletteTag(spritePalette->tag); // Tag is always present + } + 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) { + const struct ObjectEventGraphicsInfo *graphicsInfo = SpeciesToGraphicsInfo(species, form); + objEvent->graphicsId = OBJ_EVENT_GFX_OW_MON; + ObjectEventSetGraphics(objEvent, graphicsInfo); + objEvent->graphicsId = OBJ_EVENT_GFX_OW_MON; + objEvent->extra.mon.species = species; + objEvent->extra.mon.form = form; + objEvent->extra.mon.shiny = shiny; + if (graphicsInfo->paletteTag == OBJ_EVENT_PAL_TAG_DYNAMIC) { // 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); } } +// Retrieve graphic information about the following pokemon, if any +static bool8 GetFollowerInfo(u16 *species, u8 *form, u8 *shiny) { + struct Pokemon *mon = GetFirstLiveMon(); + if (!mon) { + *species = SPECIES_NONE; + *form = 0; + *shiny = 0; + return FALSE; + } + *species = GetMonData(mon, MON_DATA_SPECIES); + *shiny = IsMonShiny(mon); + *form = *species == SPECIES_UNOWN ? GET_UNOWN_LETTER(mon->box.personality) : 0; + return TRUE; +} + void UpdateFollowingPokemon(void) { // Update following pokemon if any struct ObjectEvent *objEvent = GetFollowerObject(); - struct Pokemon *mon = GetFirstLiveMon(); struct Sprite *sprite; u16 species; bool8 shiny; u8 form; // Avoid spawning large (64x64) follower pokemon inside buildings - if (mon && !(gMapHeader.mapType == MAP_TYPE_INDOOR && SpeciesToGraphicsInfo(GetMonData(mon, MON_DATA_SPECIES), 0)->width == 64)) { + if (GetFollowerInfo(&species, &form, &shiny) && !(gMapHeader.mapType == MAP_TYPE_INDOOR && SpeciesToGraphicsInfo(species, 0)->width == 64)) { if (objEvent == NULL) { // Spawn follower struct ObjectEventTemplate template = { .localId = OBJ_EVENT_ID_FOLLOWER, @@ -1709,9 +1752,6 @@ void UpdateFollowingPokemon(void) { // Update following pokemon if any objEvent->invisible = TRUE; } sprite = &gSprites[objEvent->spriteId]; - species = GetMonData(mon, MON_DATA_SPECIES); - shiny = IsMonShiny(mon); - form = species == SPECIES_UNOWN ? GET_UNOWN_LETTER(mon->box.personality) : 0; // Follower appearance changed; move to player and set invisible if (species != objEvent->extra.mon.species || shiny != objEvent->extra.mon.shiny || form != objEvent->extra.mon.form) { MoveObjectEventToMapCoords(objEvent, gObjectEvents[gPlayerAvatar.objectEventId].currentCoords.x, gObjectEvents[gPlayerAvatar.objectEventId].currentCoords.y); diff --git a/src/shop.c b/src/shop.c index f41ae315f..25a998307 100755 --- a/src/shop.c +++ b/src/shop.c @@ -34,6 +34,7 @@ #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" @@ -805,7 +806,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_OW_MON && gObjectEvents[objEventId].localId != OBJ_EVENT_ID_FOLLOWER)) { sShopData->viewportObjects[r8][OBJ_EVENT_ID] = objEventId; sShopData->viewportObjects[r8][X_COORD] = x; @@ -839,7 +841,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) @@ -862,6 +869,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) From d06e1d4af6d099458914f967b0f6298a815d6084 Mon Sep 17 00:00:00 2001 From: Ariel A <24759293+aarant@users.noreply.github.com> Date: Wed, 29 Dec 2021 20:22:13 -0500 Subject: [PATCH 139/241] Added flag for safe follower movement. --- include/constants/flags.h | 1 + src/scrcmd.c | 4 +++- 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/include/constants/flags.h b/include/constants/flags.h index 793fe1135..f76e7b232 100644 --- a/include/constants/flags.h +++ b/include/constants/flags.h @@ -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/src/scrcmd.c b/src/scrcmd.c index 572fb7a60..6ec06cced 100644 --- a/src/scrcmd.c +++ b/src/scrcmd.c @@ -1005,7 +1005,7 @@ bool8 ScrCmd_applymovement(struct ScriptContext *ctx) ScriptMovement_StartObjectMovementScript(localId, gSaveBlock1Ptr->location.mapNum, gSaveBlock1Ptr->location.mapGroup, movementScript); sMovingNpcId = localId; - if (localId != OBJ_EVENT_ID_FOLLOWER) { // Force follower into pokeball + 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) { @@ -1262,6 +1262,7 @@ bool8 ScrCmd_releaseall(struct ScriptContext *ctx) { u8 playerObjectId; struct ObjectEvent *followerObject = GetFollowerObject(); + FlagClear(FLAG_SAFE_FOLLOWER_MOVEMENT); // 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]); @@ -1278,6 +1279,7 @@ bool8 ScrCmd_release(struct ScriptContext *ctx) { u8 playerObjectId; struct ObjectEvent *followerObject = GetFollowerObject(); + FlagClear(FLAG_SAFE_FOLLOWER_MOVEMENT); // 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]); From 149f4436c1f56a584dd6f453bb389cace8ce2191 Mon Sep 17 00:00:00 2001 From: Ariel A <24759293+aarant@users.noreply.github.com> Date: Wed, 29 Dec 2021 20:27:54 -0500 Subject: [PATCH 140/241] Follower pokemon now emerge matching the player's direction. --- src/data/object_events/object_event_anims.h | 94 +++++++++++++++++++-- src/event_object_movement.c | 30 ++++--- 2 files changed, 106 insertions(+), 18 deletions(-) diff --git a/src/data/object_events/object_event_anims.h b/src/data/object_events/object_event_anims.h index 291425613..b9edf35b6 100755 --- a/src/data/object_events/object_event_anims.h +++ b/src/data/object_events/object_event_anims.h @@ -370,7 +370,7 @@ static const union AnimCmd sAnim_GoFasterSouth[] = ANIMCMD_JUMP(0), }; -static const union AnimCmd sAnim_ExitPokeball[] = +static const union AnimCmd sAnim_ExitPokeballSouth[] = { ANIMCMD_FRAME(0, 1), ANIMCMD_FRAME(0, 3), @@ -379,7 +379,46 @@ static const union AnimCmd sAnim_ExitPokeball[] = ANIMCMD_FRAME(2, 1), ANIMCMD_FRAME(3, 1), ANIMCMD_FRAME(4, 1), - ANIMCMD_FRAME(0, 6), + 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), }; @@ -467,15 +506,51 @@ static const union AnimCmd sAnim_GoFastestSouth[] = ANIMCMD_JUMP(0), }; -static const union AnimCmd sAnim_ExitPokeballFast[] = +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), }; @@ -1025,10 +1100,15 @@ static const union AnimCmd *const sAnimTable_Following[] = { sAnim_EnterNorth, sAnim_EnterWest, sAnim_EnterEast, - sAnim_ExitPokeball, - sAnim_ExitPokeballFast, - sAnim_ExitPokeball, - sAnim_ExitPokeball, + 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[] = { diff --git a/src/event_object_movement.c b/src/event_object_movement.c index 840571870..f90b72e14 100644 --- a/src/event_object_movement.c +++ b/src/event_object_movement.c @@ -6311,26 +6311,23 @@ bool8 MovementAction_WalkInPlaceSlowDown_Step0(struct ObjectEvent *objectEvent, // Copy and load objectEvent's palette, but set all opaque colors to white static u8 LoadWhiteFlashPalette(struct ObjectEvent *objectEvent, struct Sprite *sprite) { - - u8 i; u16 paletteData[16]; struct SpritePalette dynamicPalette = {.tag = OBJ_EVENT_PAL_TAG_NONE-1, .data = paletteData}; // TODO: Use a proper palette tag here - for (i=1; i<16; i++) { - paletteData[i] = 0xFFFF; - } + CpuFill16(0xFFFF, &paletteData[1], 30); return UpdateSpritePalette(&dynamicPalette, sprite); } bool8 MovementAction_ExitPokeball_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite) { - + u8 direction = gObjectEvents[gPlayerAvatar.objectEventId].facingDirection; objectEvent->invisible = FALSE; if (TestPlayerAvatarFlags(PLAYER_AVATAR_FLAG_DASH)) { // If player is dashing, the pokemon must come out faster - InitMoveInPlace(objectEvent, sprite, DIR_SOUTH, GetMoveDirectionFastestAnimNum(DIR_NORTH), 8); + InitMoveInPlace(objectEvent, sprite, direction, GetMoveDirectionFastestAnimNum(direction) + 4, 8); sprite->data[6] = 0; // fast speed } else { - InitMoveInPlace(objectEvent, sprite, DIR_SOUTH, GetMoveDirectionFastestAnimNum(DIR_SOUTH), 16); + InitMoveInPlace(objectEvent, sprite, direction, GetMoveDirectionFastestAnimNum(direction), 16); sprite->data[6] = 1; // slow speed } + sprite->data[6] |= (direction == DIR_EAST ? 1 : 0) << 4; ObjectEventSetGraphicsId(objectEvent, OBJ_EVENT_GFX_ANIMATED_BALL); return MovementAction_ExitPokeball_Step1(objectEvent, sprite); } @@ -6344,6 +6341,15 @@ static const union AffineAnimCmd sAffineAnim_PokeballExit[] = 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), @@ -6365,6 +6371,7 @@ static const union AffineAnimCmd sAffineAnim_PokeballEnterEast[] = // sprtie is static const union AffineAnimCmd *const sAffineAnims_PokeballFollower[] = { sAffineAnim_PokeballExit, + sAffineAnim_PokeballExitEast, sAffineAnim_PokeballEnter, sAffineAnim_PokeballEnterEast, }; @@ -6375,7 +6382,8 @@ bool8 MovementAction_ExitPokeball_Step1(struct ObjectEvent *objectEvent, struct sprite->data[3]--; if (sprite->data[3] == 0) { - sprite->data[2] = 2; + sprite->sActionFuncId = 2; + sprite->animCmdIndex = 0; sprite->animPaused = TRUE; return TRUE; // Set graphics, palette, and affine animation @@ -6386,7 +6394,7 @@ bool8 MovementAction_ExitPokeball_Step1(struct ObjectEvent *objectEvent, struct sprite->affineAnims = sAffineAnims_PokeballFollower; sprite->oam.affineMode = ST_OAM_AFFINE_NORMAL; InitSpriteAffineAnim(sprite); - StartSpriteAffineAnim(sprite, 0); + 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; @@ -6400,7 +6408,7 @@ bool8 MovementAction_ExitPokeball_Step1(struct ObjectEvent *objectEvent, struct bool8 MovementAction_EnterPokeball_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite) { u8 direction = objectEvent->facingDirection; InitMoveInPlace(objectEvent, sprite, direction, GetMoveDirectionFasterAnimNum(direction), 16); - sprite->data[6] = direction == DIR_EAST ? 2 : 1; // affine animation number + sprite->data[6] = direction == DIR_EAST ? 3 : 2; // affine animation number return MovementAction_EnterPokeball_Step1(objectEvent, sprite); } From cf673fda9f3b7f720301e341c3a1a65ab30df5c4 Mon Sep 17 00:00:00 2001 From: Ariel A <24759293+aarant@users.noreply.github.com> Date: Fri, 31 Dec 2021 16:10:01 -0500 Subject: [PATCH 141/241] Added movements to follower messages. Movement credit: SonikkuA-DatH --- data/scripts/follower.inc | 665 +++++++++++++++++++++++++----- include/data.h | 34 +- include/event_scripts.h | 34 +- src/data/text/follower_messages.h | 411 +++++++++++------- src/event_object_movement.c | 43 +- 5 files changed, 883 insertions(+), 304 deletions(-) diff --git a/data/scripts/follower.inc b/data/scripts/follower.inc index 6e2b8ee3a..f2e8c4ac7 100644 --- a/data/scripts/follower.inc +++ b/data/scripts/follower.inc @@ -7,45 +7,9 @@ gText_FollowerLostInThought:: gText_FollowerDefault:: .string "ERROR 404: Script not found.$" -gText_FollowerUnhappyToBeWet:: - .string "{STR_VAR_1} looks unhappy to be wet.$" - -gText_FollowerSplashesAround:: - .string "{STR_VAR_1} splashes around happily!$" - gText_WantsToFly:: .string "{STR_VAR_1} looks up at the\nsky restlessly.\pWould you like to use FLY?$" -gText_FollowerUnhappyFace:: - .string "{STR_VAR_1} is making an unhappy face...$" - -gText_FollowerHappyRain:: - .string "{STR_VAR_1} seems to be happy\nabout the rain!$" - -gText_FollowerMetLocation:: - .string "{STR_VAR_1} looks around fondly.\nIt seems familiar with this place.$" - -gText_FollowerSkeptical:: - .string "{STR_VAR_1} looks skeptical...\pWhat could it mean?$" - -gText_FollowerAppraising:: - .string "{STR_VAR_1} carefully follows behind.$" - -gText_FollowerHappyWalk:: - .string "{STR_VAR_1} skips happily behind you!$" - -gText_FollowerAboutToFall:: - .string "{STR_VAR_1} seems to be about\nto fall over!$" - -gText_FollowerTryingToKeepUp:: - .string "{STR_VAR_1} is trying very hard\nto keep up with you...$" - -gText_FollowerIsShivering:: - .string "{STR_VAR_1} is shivering.$" - -gText_FollowerBurnPainful:: - .string "{STR_VAR_1}'s burn looks painful!$'" - .macro playfirstmoncry callfunc ScrFunc_playfirstmoncry .endm @@ -83,49 +47,6 @@ EventScript_FollowerEnd:: release end -EventScript_FollowerHappyWalk:: - msgbox gText_FollowerHappyWalk, MSGBOX_DEFAULT - waitmoncry - return - -EventScript_FollowerAppraising:: - msgbox gText_FollowerAppraising, MSGBOX_DEFAULT - waitmoncry - return - -EventScript_FollowerSkeptical:: - msgbox gText_FollowerSkeptical, MSGBOX_DEFAULT - waitmoncry - return - -EventScript_FollowerMetLocation:: - applymovement 0xFE Common_Movement_QuestionMark - waitmoncry - waitmovement 0xFE - msgbox gText_FollowerMetLocation, MSGBOX_DEFAULT - return - -EventScript_FollowerUnhappyFace:: - msgbox gText_FollowerUnhappyFace, MSGBOX_DEFAULT - waitmoncry - return - -EventScript_FollowerHappyRain:: - msgbox gText_FollowerHappyRain, MSGBOX_DEFAULT - waitmoncry - return - -EventScript_FollowerUnhappyToBeWet:: - msgbox gText_FollowerUnhappyToBeWet, MSGBOX_DEFAULT - waitmoncry - return - -EventScript_FollowerSplashesAbout:: - applymovement 0xFE FollowerSplashMovement - waitmovement 0xFE - msgbox gText_FollowerSplashesAround, MSGBOX_DEFAULT - return - EventScript_FollowerLovesYou:: applymovement 0xFE ContestHall_Movement_Heart waitmovement 0xFE @@ -133,26 +54,6 @@ EventScript_FollowerLovesYou:: msgbox gText_FollowerLovesYou, MSGBOX_DEFAULT return -EventScript_FollowerAboutToFall:: - msgbox gText_FollowerAboutToFall, MSGBOX_DEFAULT - waitmoncry - return - -EventScript_FollowerTryingToKeepUp:: - msgbox gText_FollowerTryingToKeepUp, MSGBOX_DEFAULT - waitmoncry - return - -EventScript_FollowerIsShivering:: - msgbox gText_FollowerIsShivering, MSGBOX_DEFAULT - waitmoncry - return - -EventScript_FollowerBurnPainful:: - msgbox gText_FollowerBurnPainful, MSGBOX_DEFAULT - waitmoncry - return - @ Message address must be loaded into bank 0 EventScript_FollowerGeneric:: @ similar to Std_MsgboxDefault waitfieldeffect FLDEFF_EMOTE @@ -174,9 +75,573 @@ EnterPokeballMovement:: .byte 0x9F @ EnterPokeball step_end -FollowerSplashMovement:: @ defined in movement.inc +@ 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_faster_up + walk_in_place_faster_left + walk_in_place_faster_down + walk_in_place_faster_right + walk_in_place_faster_up + walk_in_place_faster_left + walk_in_place_faster_down + walk_in_place_faster_right + walk_in_place_faster_up + walk_in_place_faster_left + walk_in_place_faster_down + walk_in_place_faster_right + walk_in_place_faster_up + walk_in_place_faster_left + walk_in_place_faster_down + walk_in_place_faster_right + walk_in_place_faster_up + walk_in_place_faster_left + walk_in_place_faster_down + walk_in_place_faster_right + jump_in_place_up + jump_in_place_down + jump_in_place_up + face_player + step_end + +@ Movement scripts + +EventScript_FollowerIsShivering:: + 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:: + 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:: + 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 + 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:: + 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:: + 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:: + 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_FollowerGeneric + +EventScript_FollowerLookAwayBark:: + applymovement 0xFE FollowerLookAwayBark + waitmovement 0xFE + goto EventScript_FollowerGeneric + +EventScript_FollowerLookAwayPoke:: + applymovement 0xFE FollowerLookAwayPokeG + waitmovement 0xFE + goto EventScript_FollowerGeneric + +EventScript_FollowerPokeGround:: + applymovement 0xFE FollowerPokeGround + waitmovement 0xFE + goto EventScript_FollowerGeneric + +EventScript_FollowerStartled:: + applymovement 0xFE FollowerStartled + waitmovement 0xFE + goto EventScript_FollowerGeneric + +EventScript_FollowerFastHopping:: + applymovement 0xFE FollowerHopFast + waitmovement 0xFE + goto EventScript_FollowerGeneric + +EventScript_FollowerDizzy:: + applymovement 0xFE FollowerDizzy + waitmovement 0 + goto EventScript_FollowerGeneric + +EventScript_FollowerLookAroundScared:: + applymovement 0xFE FollowerLookAroundScared + waitmovement 0xFE + goto EventScript_FollowerGeneric + +EventScript_FollowerDance:: + applymovement 0xFE FollowerDance + waitmovement 0 + goto EventScript_FollowerGeneric diff --git a/include/data.h b/include/data.h index ea99a691c..ea33bcbc7 100644 --- a/include/data.h +++ b/include/data.h @@ -5,7 +5,7 @@ #define SPECIES_SHINY_TAG 500 #define N_FOLLOWER_HAPPY_MESSAGES 31 -#define N_FOLLOWER_NEUTRAL_MESSAGES 15 +#define N_FOLLOWER_NEUTRAL_MESSAGES 14 #define N_FOLLOWER_SAD_MESSAGES 3 #define N_FOLLOWER_UPSET_MESSAGES 3 #define N_FOLLOWER_ANGRY_MESSAGES 5 @@ -13,7 +13,7 @@ #define N_FOLLOWER_LOVE_MESSAGES 10 #define N_FOLLOWER_SURPRISE_MESSAGES 20 #define N_FOLLOWER_CURIOUS_MESSAGES 7 -#define N_FOLLOWER_MUSIC_MESSAGES 15 +#define N_FOLLOWER_MUSIC_MESSAGES 14 #define N_FOLLOWER_POISONED_MESSAGES 1 #define MAX_TRAINER_ITEMS 4 @@ -92,13 +92,19 @@ struct Trainer #define TRAINER_ENCOUNTER_MUSIC(trainer)((gTrainers[trainer].encounterMusic_gender & 0x7F)) +struct FollowerMsgInfo { + const u8 *text; + const u8 *script; +}; + struct FollowerMessagePool { - const char * const * messages; + const struct FollowerMsgInfo * messages; const u8 * script; u16 length; }; + extern const u16 gMinigameDigits_Pal[]; extern const u32 gMinigameDigits_Gfx[]; @@ -146,16 +152,16 @@ extern const u8 gSpeciesNames[][POKEMON_NAME_LENGTH + 1]; extern const u8 gMoveNames[MOVES_COUNT][MOVE_NAME_LENGTH + 1]; // Follower text messages -extern const char * const gFollowerHappyMessages[]; -extern const char * const gFollowerNeutralMessages[]; -extern const char * const gFollowerSadMessages[]; -extern const char * const gFollowerUpsetMessages[]; -extern const char * const gFollowerAngryMessages[]; -extern const char * const gFollowerPensiveMessages[]; -extern const char * const gFollowerLoveMessages[]; -extern const char * const gFollowerSurpriseMessages[]; -extern const char * const gFollowerCuriousMessages[]; -extern const char * const gFollowerMusicMessages[]; -extern const char * const gFollowerPoisonedMessages[]; +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_scripts.h b/include/event_scripts.h index fd65a6613..911afa91d 100644 --- a/include/event_scripts.h +++ b/include/event_scripts.h @@ -2,22 +2,28 @@ #define GUARD_EVENT_SCRIPTS_H extern const u8 EventScript_Follower[]; -extern const u8 EventScript_FollowerUnhappyToBeWet[]; -extern const u8 EventScript_FollowerSplashesAbout[]; -extern const u8 EventScript_FollowerLovesYou[]; -extern const u8 EventScript_FollowerUnhappyFace[]; -extern const u8 EventScript_FollowerHappyRain[]; -extern const u8 EventScript_FollowerMetLocation[]; extern const u8 EventScript_FollowerEnd[]; -extern const u8 EventScript_FollowerSkeptical[]; -extern const u8 EventScript_FollowerAppraising[]; -extern const u8 EventScript_FollowerHappyWalk[]; -extern const u8 EventScript_FollowerAboutToFall[]; -extern const u8 EventScript_FollowerTryingToKeepUp[]; -extern const u8 EventScript_FollowerIsShivering[]; -extern const u8 EventScript_FollowerBurnPainful[]; extern const u8 EventScript_FollowerGeneric[]; -extern const u8 EventScript_FollowerLove[]; +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 EnterPokeballMovement[]; extern const u8 EventScript_TestSignpostMsg[]; diff --git a/src/data/text/follower_messages.h b/src/data/text/follower_messages.h index 5339a79ba..7dc9a67df 100644 --- a/src/data/text/follower_messages.h +++ b/src/data/text/follower_messages.h @@ -1,183 +1,298 @@ +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[]; + // 'Generic', unconditional happy messages -const char * const gFollowerHappyMessages[] = { - (const char []) _("{STR_VAR_1} began poking you in the\nstomach."), - (const char []) _("{STR_VAR_1} is happy but shy."), - (const char []) _("{STR_VAR_1} is coming along happily."), - (const char []) _("{STR_VAR_1} is composed."), - (const char []) _("{STR_VAR_1} seems to be feeling\ngreat about walking with you!"), - (const char []) _("{STR_VAR_1} is glowing with health."), - (const char []) _("{STR_VAR_1} looks very happy."), - (const char []) _("{STR_VAR_1} put in extra effort."), - (const char []) _("{STR_VAR_1} is smelling the scents\nof the surrounding air."), - (const char []) _("{STR_VAR_1} is jumping for joy!"), - (const char []) _("{STR_VAR_1} is still feeling great!"), - (const char []) _("Your pokemon has caught the scent of\nsmoke."), - (const char []) _("{STR_VAR_1} is poking at your belly."), - (const char []) _("Your pokemon stretched out its body\nand is relaxing."), - (const char []) _("{STR_VAR_1} looks like it wants to\nlead!"), - (const char []) _("{STR_VAR_1} is doing it's best to\nkeep up with you."), - (const char []) _("{STR_VAR_1} is happily cuddling up\nto you!"), - (const char []) _("{STR_VAR_1} is full of life!"), - (const char []) _("{STR_VAR_1} seems to be very happy!"), - (const char []) _("{STR_VAR_1} is so happy that it\ncan't stand still!"), - (const char []) _("{STR_VAR_1} nodded slowly."), - (const char []) _("{STR_VAR_1} is very eager!"), - (const char []) _("{STR_VAR_1} is wandering around and\nlistening to the different sounds."), - (const char []) _("{STR_VAR_1} looks very interested."), - (const char []) _("{STR_VAR_1} is somehow forcing\nitself to keep going."), - (const char []) _("{STR_VAR_1} gave you a sunny look!"), - (const char []) _("{STR_VAR_1} gives you a happy look\nand a smile."), - (const char []) _("Your pokemon is smelling the scent\nof flowers."), - (const char []) _("{STR_VAR_1} seems very happy to see\nyou!"), - (const char []) _("{STR_VAR_1} faced this way and\ngrinned."), - (const char []) _("{STR_VAR_1} happily cuddled up to\nyou!"), +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 pokemon has caught the scent of\nsmoke."); +static const u8 sHappyMsg12[] = _("{STR_VAR_1} is poking at your belly."); +static const u8 sHappyMsg13[] = _("Your pokemon 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 pokemon 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 - (const char []) _("Your pokemon seems happy about the\ngreat weather."), +static const u8 sHappyMsg31[] = _("Your pokemon seems happy about the\ngreat weather."); + +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}, }; // Unconditional neutral messages -const char * const gFollowerNeutralMessages[] = { - (const char []) _("{STR_VAR_1} is steadily poking at\nthe ground."), - (const char []) _("{STR_VAR_1} is standing guard."), - (const char []) _("{STR_VAR_1} is staring patiently at\nnothing at all."), - (const char []) _("{STR_VAR_1} is wandering around."), - (const char []) _("Your pokemon yawned loudly!"), - (const char []) _("Your pokemon is looking around\nrestlessly."), - (const char []) _("{STR_VAR_1} is steadily poking at\nthe ground."), - (const char []) _("{STR_VAR_1} is looking this way and\nsmiling."), - (const char []) _("{STR_VAR_1} is gazing around\nrestlessly."), - (const char []) _("{STR_VAR_1} let out a battle cry."), - (const char []) _("{STR_VAR_1} danced a wonderful\ndance!"), - (const char []) _("{STR_VAR_1} is very eager."), - (const char []) _("{STR_VAR_1} is staring intently into\nthe distance."), - (const char []) _("{STR_VAR_1} is on the lookout!"), - (const char []) _("{STR_VAR_1} looked off into the\ndistance and barked!"), +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 pokemon yawned loudly!"); +static const u8 sNeutralMsg05[] = _("Your pokemon 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 -const char * const gFollowerSadMessages[] = { - (const char []) _("{STR_VAR_1} is dizzy."), - (const char []) _("{STR_VAR_1} is stepping on your\nfeet!"), - (const char []) _("{STR_VAR_1} seems a little tired."), +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 - (const char []) _("{STR_VAR_1} is not happy."), - (const char []) _("{STR_VAR_1} is going to fall down!\n"), - (const char []) _("{STR_VAR_1} seems to be about to\nfall over!"), - (const char []) _("{STR_VAR_1} is trying very hard to\nkeep up with you..."), +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..."); + +const struct FollowerMsgInfo gFollowerSadMessages[] = { + {sSadMsg00, EventScript_FollowerDizzy}, + {sSadMsg01}, {sSadMsg02}, + {sSadMsg03}, {sSadMsg04}, {sSadMsg05}, {sSadMsg06}, }; // Unconditional upset messages -const char * const gFollowerUpsetMessages[] = { - (const char []) _("{STR_VAR_1} seems unhappy somehow..."), - (const char []) _("{STR_VAR_1} is making an unhappy\nface."), - (const char []) _(".....Your pokemon seems a little\ncold."), +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 pokemon seems a little\ncold."); // Conditional messages, index 3 - (const char []) _("{STR_VAR_1} is taking shelter in the\ngrass from the rain."), +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 -const char * const gFollowerAngryMessages[] = { - (const char []) _("{STR_VAR_1} let out a roar!"), - (const char []) _("{STR_VAR_1} is making a face like\nits angry!"), - (const char []) _("{STR_VAR_1} seems to be angry for\nsome reason."), - (const char []) _("Your pokemon turned to face the\nother way, showing a defiant\pexpression."), - (const char []) _("{STR_VAR_1} cried out."), +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 pokemon turned to face the\nother way, showing a defiant\pexpression."); +static const u8 sAngryMsg04[] = _("{STR_VAR_1} cried out."); + +const struct FollowerMsgInfo gFollowerAngryMessages[] = { + {sAngryMsg00}, {sAngryMsg01}, {sAngryMsg02}, + {sAngryMsg03, EventScript_FollowerLookAway}, + {sAngryMsg04}, }; // Unconditional pensive messages -const char * const gFollowerPensiveMessages[] = { - (const char []) _("{STR_VAR_1} is looking down\nsteadily."), - (const char []) _("{STR_VAR_1} is surveying the area."), - (const char []) _("{STR_VAR_1} is peering down."), - (const char []) _("{STR_VAR_1} is somehow fighting off\nsleep..."), - (const char []) _("{STR_VAR_1} seems to be wandering\naround."), - (const char []) _("{STR_VAR_1} is looking around\nabsentmindedly."), - (const char []) _("{STR_VAR_1} yawned very loudly!"), - (const char []) _("{STR_VAR_1} is relaxing comfortably."), - (const char []) _("{STR_VAR_1} is staring steadfastly\nat your face."), - (const char []) _("{STR_VAR_1} is staring intently at\nyour face."), - (const char []) _("{STR_VAR_1} is focusing its\nattention on you."), - (const char []) _("{STR_VAR_1} is staring into the\ndepths."), - (const char []) _("{STR_VAR_1} is sniffing at the\nground."), - (const char []) _("Your pokemon is staring intently at\nnothing."), - (const char []) _("{STR_VAR_1} focused with a sharp\ngaze!"), - (const char []) _("{STR_VAR_1} is concentrating."), - (const char []) _("{STR_VAR_1} faced this way and\nnodded."), - (const char []) _("{STR_VAR_1} seems a bit nervous..."), - (const char []) _("{STR_VAR_1} is looking at your\nfootprints."), - (const char []) _("{STR_VAR_1} is staring straight into\nyour eyes."), +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 pokemon 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 -const char * const gFollowerLoveMessages[] = { - (const char []) _("{STR_VAR_1} suddenly started walking\ncloser!"), - (const char []) _("{STR_VAR_1} cheeks are becoming\nrosy!"), - (const char []) _("Woah! {STR_VAR_1} suddenly hugged\nyou!"), - (const char []) _("Woah! {STR_VAR_1} is suddenly\nplayful!"), - (const char []) _("{STR_VAR_1} is rubbing against your\nlegs!"), - (const char []) _("{STR_VAR_1} blushes."), - (const char []) _("Ah! {STR_VAR_1} cuddles you!"), - (const char []) _("{STR_VAR_1} is regarding you with\nadoration!"), - (const char []) _("{STR_VAR_1} got closer to you."), - (const char []) _("{STR_VAR_1} is keeping close to your\nfeet."), +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 -const char * const gFollowerSurpriseMessages[] = { - (const char []) _("{STR_VAR_1} is in danger of falling\nover!"), - (const char []) _("{STR_VAR_1} bumped into you!"), - (const char []) _("{STR_VAR_1} doesn't seem to be used\nto its own name yet."), - (const char []) _("{STR_VAR_1} is peering down."), - (const char []) _("Your pokemon stumbled and nearly\nfell!"), - (const char []) _("{STR_VAR_1} feels something and is\nhowling!"), - (const char []) _("{STR_VAR_1} seems refreshed!"), - (const char []) _("{STR_VAR_1} suddenly turned around\nand started barking!"), - (const char []) _("{STR_VAR_1} suddenly turned around!"), - (const char []) _("Your pokemon was surprised that you\nsuddenly spoke to it!"), - (const char []) _("Sniff sniff, something smells really\ngood!"), - (const char []) _("{STR_VAR_1} feels refreshed."), - (const char []) _("{STR_VAR_1} is wobbling and seems\nabout to fall over."), - (const char []) _("{STR_VAR_1} is in danger of falling\nover."), - (const char []) _("{STR_VAR_1} is walking along\ncautiously."), - (const char []) _("{STR_VAR_1} is getting tense with\nnervous energy."), - (const char []) _("{STR_VAR_1} sensed something strange\nand was surprised!"), - (const char []) _("{STR_VAR_1} is scared and snuggled\nup to you!"), - (const char []) _("{STR_VAR_1} is feeling an unusual\npresence..."), - (const char []) _("{STR_VAR_1} is getting tense with\nnervous energy."), +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 pokemon 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 pokemon 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 - (const char []) _("{STR_VAR_1} seems to be very\nsurprised that it is raining!"), +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 -const char * const gFollowerCuriousMessages[] = { - (const char []) _("Your pokemon is looking around\nrestlessly for something."), - (const char []) _("Your pokemon wasn't watching where\nit was going and ran into you!"), - (const char []) _("Sniff, sniff! Is there something\nnearby?"), - (const char []) _("{STR_VAR_1} is rolling a pebble\naround playfully."), - (const char []) _("{STR_VAR_1} is wandering around and\nsearching for something."), - (const char []) _("{STR_VAR_1} is sniffing at you."), - (const char []) _("{STR_VAR_1} seems to be a little\nhesitant..."), +static const u8 sCuriousMsg00[] = _("Your pokemon is looking around\nrestlessly for something."); +static const u8 sCuriousMsg01[] = _("Your pokemon 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 -const char * const gFollowerMusicMessages[] = { - (const char []) _("{STR_VAR_1} is showing off its\nagility!"), - (const char []) _("{STR_VAR_1} is moving around\nhappily!"), - (const char []) _("Woah! {STR_VAR_1} suddenly started\ndancing in happiness!"), - (const char []) _("{STR_VAR_1} is steadily keeping up\nwith you!"), - (const char []) _("{STR_VAR_1} is very happy about the\nrain."), - (const char []) _("{STR_VAR_1} seems to want to play\nwith you."), - (const char []) _("{STR_VAR_1} is happy skipping about."), - (const char []) _("{STR_VAR_1} is singing and humming."), - (const char []) _("{STR_VAR_1} is nipping at your feet!"), - (const char []) _("{STR_VAR_1} turns around and looks\nat you."), - (const char []) _("{STR_VAR_1} is working hard to show\noff its mighty power!"), - (const char []) _("Whoa! {STR_VAR_1} suddenly danced in\nhappiness!"), - (const char []) _("{STR_VAR_1} is cheerful!"), - (const char []) _("{STR_VAR_1} is jumping around in a\ncarefree way!"), - (const char []) _("Your pokemon seems to be smelling a\nnostalgically familiar scent..."), +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 pokemon 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} }; -const char * const gFollowerPoisonedMessages[] = { - (const char []) _("{STR_VAR_1} is shivering with the\neffects of being poisoned."), + +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/event_object_movement.c b/src/event_object_movement.c index f90b72e14..691879660 100644 --- a/src/event_object_movement.c +++ b/src/event_object_movement.c @@ -1855,7 +1855,6 @@ bool8 ScrFunc_emote(struct ScriptContext *ctx) { } struct SpecialEmote { // Used for storing conditional emotes - const u8 * script; u16 index; u8 emotion; }; @@ -1864,7 +1863,7 @@ struct SpecialEmote { // Used for storing conditional emotes bool8 ScrFunc_getfolloweraction(struct ScriptContext *ctx) // Essentially a big switch for follower messages { u16 species; - u32 behavior; + s32 multi; s16 health_percent; u8 friendship; struct SpecialEmote cond_emotes[16] = {0}; @@ -1880,16 +1879,9 @@ bool8 ScrFunc_getfolloweraction(struct ScriptContext *ctx) // Essentially a big // 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); - behavior = MapGridGetMetatileBehaviorAt(objEvent->currentCoords.x, objEvent->currentCoords.y); + multi = MapGridGetMetatileBehaviorAt(objEvent->currentCoords.x, objEvent->currentCoords.y); species = GetMonData(mon, MON_DATA_SPECIES); friendship = GetMonData(mon, MON_DATA_FRIENDSHIP); - // // 1. Puddle splash or wet feet - // if (MetatileBehavior_IsPuddle(behavior) || MetatileBehavior_IsShallowFlowingWater(behavior)) { - // if (SpeciesHasType(species, TYPE_FIRE)) - // message_choices[n_choices++] = EventScript_FollowerUnhappyToBeWet; - // else if (SpeciesToGraphicsInfo(species, 0)->tracks) // if follower is grounded - // message_choices[n_choices++] = EventScript_FollowerSplashesAbout; - // } // Happy weights emotion_weight[FOLLOWER_EMOTION_HAPPY] = 10; if (friendship > 170) @@ -1924,10 +1916,11 @@ bool8 ScrFunc_getfolloweraction(struct ScriptContext *ctx) // Essentially a big cond_emotes[n_choices++] = (struct SpecialEmote) {.emotion=FOLLOWER_EMOTION_HAPPY, .index=31}; else if (GetCurrentWeather() == WEATHER_RAIN || GetCurrentWeather() == WEATHER_RAIN_THUNDERSTORM) { if (SpeciesHasType(species, TYPE_FIRE)) { - emotion_weight[FOLLOWER_EMOTION_SAD] = 30; - cond_emotes[n_choices++] = (struct SpecialEmote) {.emotion=FOLLOWER_EMOTION_SAD, .index=3}; - cond_emotes[n_choices++] = (struct SpecialEmote) {.emotion=FOLLOWER_EMOTION_UPSET, .index=3}; - } + emotion_weight[FOLLOWER_EMOTION_SAD] = 30; + cond_emotes[n_choices++] = (struct SpecialEmote) {.emotion=FOLLOWER_EMOTION_SAD, .index=3}; + cond_emotes[n_choices++] = (struct SpecialEmote) {.emotion=FOLLOWER_EMOTION_UPSET, .index=3}; + } else + cond_emotes[n_choices++] = (struct SpecialEmote) {.emotion = FOLLOWER_EMOTION_MUSIC, .index=14}; cond_emotes[n_choices++] = (struct SpecialEmote) {.emotion=FOLLOWER_EMOTION_SURPRISE, .index=20}; } // Health & status-related @@ -1946,26 +1939,20 @@ bool8 ScrFunc_getfolloweraction(struct ScriptContext *ctx) // Essentially a big if (mon->status & 0x8) // STATUS1_POISON emotion = FOLLOWER_EMOTION_POISONED; ObjectEventEmote(objEvent, emotion); + multi = Random() % followerBasicMessages[emotion].length; if (Random() & 1) { // With 50% chance, select special message using reservoir sampling u8 i, j = 1; struct SpecialEmote *choice = 0; for (i = 0; i < n_choices; i++) { - if (cond_emotes[i].emotion == emotion) { - if (Random() < 0x10000 / (j++)) // Replace item with 1/j chance - choice = &cond_emotes[i]; - } - } - if (choice) { // Only continue if a script was actually chosen - ctx->data[0] = (u32) followerBasicMessages[emotion].messages[choice->index]; - if (choice->script) - ScriptCall(ctx, choice->script); - else - ScriptCall(ctx, followerBasicMessages[emotion].script); - return FALSE; + if (cond_emotes[i].emotion == emotion && (Random() < 0x10000 / (j++))) // Replace item with 1/j chance + choice = &cond_emotes[i]; } + if (choice) + multi = choice->index; } - ctx->data[0] = (u32) followerBasicMessages[emotion].messages[Random() % followerBasicMessages[emotion].length]; - ScriptCall(ctx, followerBasicMessages[emotion].script); + 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; } From a4e1c8419a426b1c7732907fcca986f92554b485 Mon Sep 17 00:00:00 2001 From: Ariel A <24759293+aarant@users.noreply.github.com> Date: Sun, 2 Jan 2022 18:57:30 -0500 Subject: [PATCH 142/241] Added support for Ghoulslash's sideways stairs with followers. --- src/event_object_movement.c | 39 +++++++++++++++++++++++++++++++------ 1 file changed, 33 insertions(+), 6 deletions(-) diff --git a/src/event_object_movement.c b/src/event_object_movement.c index 691879660..17360eb9e 100644 --- a/src/event_object_movement.c +++ b/src/event_object_movement.c @@ -4729,8 +4729,14 @@ bool8 MovementType_FollowPlayer_Active(struct ObjectEvent *objectEvent, struct S bool8 MovementType_FollowPlayer_Moving(struct ObjectEvent *objectEvent, struct Sprite *sprite) { - if (ObjectEventExecSingleMovementAction(objectEvent, 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->data[1]) { // restore nonzero state sprite->data[1] = 1; @@ -4760,6 +4766,9 @@ bool8 FollowablePlayerMovement_Step(struct ObjectEvent *objectEvent, struct Spri 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; @@ -4786,12 +4795,27 @@ bool8 FollowablePlayerMovement_Step(struct ObjectEvent *objectEvent, struct Spri // Follow player direction = GetDirectionToFace(x, y, targetX, targetY); - ObjectEventMoveDestCoords(objectEvent, direction, &x, &y); - if (TestPlayerAvatarFlags(PLAYER_AVATAR_FLAG_DASH)) { // Set follow speed accordingly - ObjectEventSetSingleMovement(objectEvent, sprite, GetWalkFastMovementAction(direction)); + #ifdef MB_SIDEWAYS_STAIRS_RIGHT_SIDE // https://github.com/ghoulslash/pokeemerald/tree/sideways_stairs + MoveCoords(direction, &x, &y); + GetCollisionAtCoords(objectEvent, x, y, direction); // Sets directionOverwrite for stairs + 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 { - ObjectEventSetSingleMovement(objectEvent, sprite, GetWalkNormalMovementAction(direction)); + 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 (TestPlayerAvatarFlags(PLAYER_AVATAR_FLAG_DASH)) // Set follow speed according to player's speed + ObjectEventSetSingleMovement(objectEvent, sprite, GetWalkFastMovementAction(direction)); + else + ObjectEventSetSingleMovement(objectEvent, sprite, GetWalkNormalMovementAction(direction)); + #endif objectEvent->singleMovementActive = 1; sprite->data[1] = 2; return TRUE; @@ -5286,6 +5310,9 @@ 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]; From 5e3c48acfc7faf0bc24b4cfc1cf7f159c06bb087 Mon Sep 17 00:00:00 2001 From: Ariel A <24759293+aarant@users.noreply.github.com> Date: Sun, 16 Jan 2022 17:08:09 -0500 Subject: [PATCH 143/241] Fixed bug where `lighting` branch wouldn't build on modern. Credit: Jaizu --- include/overworld.h | 2 -- include/palette.h | 2 ++ 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/include/overworld.h b/include/overworld.h index 0469c8b9e..5061bb304 100644 --- a/include/overworld.h +++ b/include/overworld.h @@ -69,8 +69,6 @@ extern struct TimeBlendSettings currentTimeBlend; // Exported ROM declarations extern const struct UCoords32 gDirectionToVectors[]; -extern const struct BlendSettings gTimeOfDayBlend[]; - void DoWhiteOut(void); void Overworld_ResetStateAfterFly(void); void Overworld_ResetStateAfterTeleport(void); diff --git a/include/palette.h b/include/palette.h index 7e9ed0cae..abb00be6c 100644 --- a/include/palette.h +++ b/include/palette.h @@ -56,6 +56,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[]; From d8a5fbdf704630e691a4e4e7db46209e1d074ead Mon Sep 17 00:00:00 2001 From: Ariel A <24759293+aarant@users.noreply.github.com> Date: Sat, 22 Jan 2022 17:40:35 -0500 Subject: [PATCH 144/241] Updated Donphan, Taillow, Swellow follower sprites. Credit: SonikkuA-DatH --- .../object_events/pics/pokemon/donphan.png | Bin 658 -> 790 bytes .../object_events/pics/pokemon/swellow.png | Bin 989 -> 1105 bytes .../object_events/pics/pokemon/taillow.png | Bin 419 -> 525 bytes 3 files changed, 0 insertions(+), 0 deletions(-) diff --git a/graphics/object_events/pics/pokemon/donphan.png b/graphics/object_events/pics/pokemon/donphan.png index 57c5dab527d1867cc57dcaa657ff870df308e50c..19db7fe76669d65dba9c4a3f34b46afad0cbeb66 100644 GIT binary patch delta 707 zcmV;!0zCba1(pVoBv%J?Nliru<^c`@CNwaZuR{O;02g#cSaefwW^{L9a%BKVOhiyl zM<8}(av(DOV1ZP1_K>z@;j|==^1(6{> ze*ghuOGiZir3doG0006yNkl zs71GNKzCcJSm`_EL*8NVfTf|+F*)wC02Qw(&_}ExD6O!(vcTHwYQ|o(#uuu*4K@zP zz?P*^1E5y|LuGQ#@iwIyms!jiM+Pbwn?U9x&UmCD&=)Km4maa6r4^MaYdo_9e=zrv zbK|Vqm$t?HDHtsK^e8yLeN0kXQJKuYa~A8!n0vK3BytwLB*oc=GMNe96Gtm@;|{Oi z8<-C<(4{(OEPAk_bG?T;pk?VCF3CEVvz9to_vu?ifrm|M8AtkkIu%7x2egfWxFu%| z8kX7=&i$a5o><006z>XJa{pIff3VJ+!(#=`ZCT667U|}rrofyr2Hq}c$-AF*gO;;N zHRJJ?H3lws3%9|%x%@- zZ2Yr}gZ*8&mljIi2XD_8b2~U pu@S=k{%_Brx^>P5B$M(A>o>5Kgj#_Q*cSi*002ovPDHLkV1m6)K^p)7 delta 577 zcmV-H0>1s029gDkB$0kQe*zszL_t(|obA-HZrd;r24F6pi3}YBKLjUFeFb;mkR|s} zhK3tzK1ZiKLq`vRrVd_23I+$l5U+QZw5A+y$q8N3LkD**)23XUqorbD3M6DOzqo zFREnyf=+gn@El53f5}<}#^N|CM^Pyn1qFU;@ z8|!v%Z47S-j0r_+AHldEP6987G&A?C*HRU2I|j_nfqW!46HKhVZH>wD(h&+)s{PW+ zme=3bs%VblvLcQxT03an>8qE(P%sBR*0Sa9=QzR4uU~QUCz;zOzU~q=^q25V;wVl|E=E~;Ju8Ht=72JBo6L3{M!M5xS z50B9%bX9+*Vvay(`y=4QLoE+nFTa%pblm!l1BtPNJmcOR! z6U3LwO<>*kH%-UWY{JPng-eg>sxX-UrMhwwQu_Pf#;Lz`ZaQ=!OV1ZP1_K>z@;j|==^1(6{> ze*ghuOGiZir3doG000AZNkl_fn^DGq>Oyak| zlK+JcW{X4zx*^1X!ob9ozlFa50V-n=N}bwLRS9yu^ZjyZsDxla;;B{cb56eR-n;ki z?0Ns~zx@NocRg=KpY0yzaZ(~;MxjK;sbs4ma5gMDyoa;G zal-*TMZbE4qBlJ-4r>kVk;aw^@42IADs6z!)c0ueZjjnel3V zpy3M%PI$TZIEYqnEU&36Sj`?go0sL{WhrtKSEShNLJ1hhagu>ubIp23+wb322!5I8 zz!##>90UR9HIrSR!}C#ekmjaHQ^lrGnMe>4Ol@ANHHdXneE&2%04VqJe}E2xWubW- zNRuqL`Fc73da{3JTD=Q3m$qoTQVuLK%w!emqGa#pb4Vf2_fPp!XogtG7?yfXeDv+( zhx36E=p;3VW2;CZGy8 z*>H4f$OhCC=l5vEVD*UOe~hv;bhX-AM57l5${`LUhnZ`aE@t*<-~AJT?{VIjE;jRUWJDD_?UwhvR06eeNRWqrk=f9 zYCv~AaDL-O^L*t#Hga~sy2(_JcF{v()>k~tuyLlfKVOhx_H6pudd(Y5 zJ2)@YfBl@cMlp5x6?e2dT`w9#x2y_vkTQMxh-WxXHM4PY44VK03 vB>=8+Kd@Tadaf7^ZlkV=u3w}$|}00000NkvXXu0mjfonO|n delta 911 zcmV;A191G&2;B#eB$0kQe*_0H~&~aAu*}jouVVd>x=6CekNkQ|KF0wmwp@A!Sr_c`c}E~X9%zGRae^sfZ#2os#P@GXuh zLps8mtpqPv(eVeKf6k!bhHK#<;=E4|Vm&EX4Oxie5)m^BCDKj>8x4-rpy;?goEDZF z4&Va4>Ku7*GSd!fR?#p(TqlTeg;}c8CRl5*2Js=<}z`q@f4hya&gv(z|XlC{7Pf5%m?x5kN{acX{}-~|be z-Ewr{N2_bYYw8MCv%|LYvRqu1JlAnWlJzc>fN>lr8JIQKtakL^9rpiqoKcnnTdS=_batts3~(Sg%xt@KF*8R)e}zd(>?Mf`!D-)Ki8Y%dBd#*= z8>j1TyZE#-MGljiH@0jX57LH%pb%V!+JV!~g}&|HcAnCnf%UNC`Fv-ZAn8jE?V3uj zYipFUC7AMNPH#7dbY~Y#EJBD3vw{~oVbo=P$)V}Bc3iAq8wZoLW@ zJ#6Icf1Y)di5eZCuFTu-4pSG9Q)O9Sa*$!;OlyC;C&SFy^sDunH<)s8SIGbRIc<$( z>hMSIXnVTeH->gu6{;Xb`qUB6aF{A)!{pIB+S_}>GW6`Y_wXAmi|tDQJm!GbwfBZ= lz8kdmq~LE~WB#@M1ZuL0F8?gPqyPW_07*qo1w^hwV1mSfz{vmr diff --git a/graphics/object_events/pics/pokemon/taillow.png b/graphics/object_events/pics/pokemon/taillow.png index 68180045954a2019ec1cff69fe368520aed9ae36..0773282da2db779c3bed3426fc28a1f959df7057 100644 GIT binary patch delta 440 zcmV;p0Z0C$1C0cbBv%J?Nliru<^c`@7B!gJsU`pb02g#cSaefwW^{L9a%BKVOhiyl zM<8}(av(DOV1ZP1_K>z@;j|==^1(6{> ze*ghuOGiZir3doG0003oNklA3 z^Phd4%2xJ!o`XxR;}#Bev*;U6^iW^1f7YA>tuyz7d;{!;MUffC7-YPhH-o2g8}8kt4KR2`^tCF20y)W~)>h}$0{N#bPXPj%iXp8S@ooypS8KCz$R(;$` z+EtjQp`k6-wN7H%Afo%bQ_ce%W2oXNk&Ho9H^%k;+PVa5z2~>KVew)s*MTh?J|r3v i2LAWldj1_a+Wi3jx5+n(%~a_C0000mlRiR=zqKs=U79Z!9cH)%YNz!dur1f}gDdQ(koIB&(;6+>f%$t0hSjqsScK*DT zwCgy_VoO`B8>3U&Mj(=h;*|3Q#~A7~(ULKU`o{WhuboeDE_i`X_8qyh<9(td iVc~zzUEssO(e4+<@x)8wI~#BS0000 Date: Mon, 7 Feb 2022 21:57:24 -0500 Subject: [PATCH 145/241] Added more follower footprint types. Credit: Sonikku-DatH https://www.pokecommunity.com/showthread.php?p=10410294#post10410294 --- data/field_effect_scripts.s | 15 ++ graphics/field_effects/pics/bug_tracks.png | Bin 0 -> 275 bytes .../field_effects/pics/slither_tracks.png | Bin 0 -> 354 bytes graphics/field_effects/pics/spot_tracks.png | Bin 0 -> 269 bytes include/constants/event_objects.h | 3 + include/constants/field_effects.h | 7 + spritesheet_rules.mk | 10 ++ .../field_effect_object_template_pointers.h | 6 + src/data/field_effects/field_effect_objects.h | 49 ++++++ .../object_events/object_event_graphics.h | 3 + .../object_event_graphics_info_followers.h | 160 +++++++++--------- src/event_object_movement.c | 68 ++++++++ src/field_effect_helpers.c | 54 ++++++ 13 files changed, 295 insertions(+), 80 deletions(-) create mode 100644 graphics/field_effects/pics/bug_tracks.png create mode 100644 graphics/field_effects/pics/slither_tracks.png create mode 100644 graphics/field_effects/pics/spot_tracks.png diff --git a/data/field_effect_scripts.s b/data/field_effect_scripts.s index 49fcf798b..117ae710c 100644 --- 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/graphics/field_effects/pics/bug_tracks.png b/graphics/field_effects/pics/bug_tracks.png new file mode 100644 index 0000000000000000000000000000000000000000..b7062d253f68cd83d17f7e356850f9f4b47bb163 GIT binary patch literal 275 zcmeAS@N?(olHy`uVBq!ia0vp^3P3Et!VDx^^%Amx6nlxMuPgggPDy5E6|D{BGC(2m z64!{5;QX|b^2DN426rD9pfL(%sYMFLdM1UfOCAE1aFi7IxdUa4fouk^22FV&#ggvm z>&U>cv7h@-A}f$@5a1KynzZKKw`WJ+UEOkT%as5B|KEG|ZtvM=bGF<|nzQBq-e*8n z@18BWceeTJmaMaLKOLC z@v3_<&z>L46J9N{{kvjCupr0An@3hg*Dm7DDtYXbt-r@;M1& literal 0 HcmV?d00001 diff --git a/graphics/field_effects/pics/spot_tracks.png b/graphics/field_effects/pics/spot_tracks.png new file mode 100644 index 0000000000000000000000000000000000000000..cd8c9c0cf4ba7ff95fc87f06ec3c4fb7d51140ab GIT binary patch literal 269 zcmeAS@N?(olHy`uVBq!ia0vp^3P3Et!VDx^^%Amx6nlxMuPgggPDy5IruRyIQa~Z` z64!{5;QX|b^2DN426rD9pfL(%sYMFLdM1UfOCAE1aFi7IxdUa4fouk^22FV&#ggvm z>&U>cv7h@-A}f$@5a1KynzZKKw`WJ+UEOkT%as5B|KEG|ZtvM=bGF<|nzQBq-e*8n z@18BWceeTJmaMaLKkyAQ5E-N7?N2WG8`EhW-^NWZME4T3e?Qt>FVdQ&MBb@ E08~6)ssI20 literal 0 HcmV?d00001 diff --git a/include/constants/event_objects.h b/include/constants/event_objects.h index 384893a53..b07aee7c9 100644 --- a/include/constants/event_objects.h +++ b/include/constants/event_objects.h @@ -279,6 +279,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 diff --git a/include/constants/field_effects.h b/include/constants/field_effects.h index 75b4326e8..65ccc3ec7 100644 --- a/include/constants/field_effects.h +++ b/include/constants/field_effects.h @@ -69,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 @@ -108,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 diff --git a/spritesheet_rules.mk b/spritesheet_rules.mk index fe015fc85..3deb282e0 100644 --- a/spritesheet_rules.mk +++ b/spritesheet_rules.mk @@ -599,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 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 41d6271bf..5e7b2a1f8 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,9 @@ const struct SpriteTemplate gFieldEffectObjectTemplate_AshLaunch; const struct SpriteTemplate gFieldEffectObjectTemplate_Bubbles; const struct SpriteTemplate gFieldEffectObjectTemplate_SmallSparkle; const struct SpriteTemplate gFieldEffectObjectTemplate_Rayquaza; +const struct SpriteTemplate gFieldEffectObjectTemplate_SlitherTracks; +const struct SpriteTemplate gFieldEffectObjectTemplate_BugTracks; +const struct SpriteTemplate gFieldEffectObjectTemplate_SpotTracks; const struct SpriteTemplate *const gFieldEffectObjectTemplatePointers[] = { [FLDEFFOBJ_SHADOW_S] = &gFieldEffectObjectTemplate_ShadowSmall, @@ -74,4 +77,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 b50faedc4..9e22ec05e 100755 --- a/src/data/field_effects/field_effect_objects.h +++ b/src/data/field_effects/field_effect_objects.h @@ -431,6 +431,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 +468,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 +547,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), diff --git a/src/data/object_events/object_event_graphics.h b/src/data/object_events/object_event_graphics.h index 43ccdcff7..7779a57fb 100755 --- a/src/data/object_events/object_event_graphics.h +++ b/src/data/object_events/object_event_graphics.h @@ -302,6 +302,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"); diff --git a/src/data/object_events/object_event_graphics_info_followers.h b/src/data/object_events/object_event_graphics_info_followers.h index 0b6ad8563..17df71178 100644 --- a/src/data/object_events/object_event_graphics_info_followers.h +++ b/src/data/object_events/object_event_graphics_info_followers.h @@ -9,11 +9,11 @@ const struct ObjectEventGraphicsInfo gPokemonObjectGraphics[] = { [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_FOOT, &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_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_Following, sPicTable_Metapod, 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_FOOT, &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_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_Following, sPicTable_Kakuna, 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}, @@ -22,8 +22,8 @@ const struct ObjectEventGraphicsInfo gPokemonObjectGraphics[] = { [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_FOOT, &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_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_Following, sPicTable_Arbok, 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}, @@ -45,8 +45,8 @@ const struct ObjectEventGraphicsInfo gPokemonObjectGraphics[] = { [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_FOOT, &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_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_Following, sPicTable_Parasect, 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}, @@ -69,11 +69,11 @@ const struct ObjectEventGraphicsInfo gPokemonObjectGraphics[] = { [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_FOOT, &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_FOOT, &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_FOOT, &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_FOOT, &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_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_Following, sPicTable_Geodude, 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}, @@ -85,23 +85,23 @@ const struct ObjectEventGraphicsInfo gPokemonObjectGraphics[] = { [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_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_Following, sPicTable_Seel, 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_FOOT, &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_FOOT, &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_FOOT, &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_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_Following, sPicTable_Cloyster, 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_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_Following, sPicTable_Onix, 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_FOOT, &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_FOOT, &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_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_Following, sPicTable_Exeggcute, 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}, @@ -115,10 +115,10 @@ const struct ObjectEventGraphicsInfo gPokemonObjectGraphics[] = { [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_FOOT, &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_FOOT, &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_FOOT, &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_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_Following, sPicTable_Seaking, 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}, @@ -128,26 +128,26 @@ const struct ObjectEventGraphicsInfo gPokemonObjectGraphics[] = { [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_FOOT, &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_NONE, &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_FOOT, &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_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_Following, sPicTable_Ditto, 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_FOOT, &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_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_Following, sPicTable_Omanyte, 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_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_Following, sPicTable_Kabuto, 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_FOOT, &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_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_Following, sPicTable_Dragonair, 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}, @@ -164,13 +164,13 @@ const struct ObjectEventGraphicsInfo gPokemonObjectGraphics[] = { [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_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_Following, sPicTable_Ledyba, 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_FOOT, &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_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_Following, sPicTable_Ariados, 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_FOOT, &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_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_Following, sPicTable_Lanturn, 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}, @@ -190,7 +190,7 @@ const struct ObjectEventGraphicsInfo gPokemonObjectGraphics[] = { [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_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_Following, sPicTable_Sunkern, 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}, @@ -199,7 +199,7 @@ const struct ObjectEventGraphicsInfo gPokemonObjectGraphics[] = { [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_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_Following, sPicTable_Misdreavus, 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}, @@ -230,36 +230,36 @@ const struct ObjectEventGraphicsInfo gPokemonObjectGraphics[] = { [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_FOOT, &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_FOOT, &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_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_Following, sPicTable_Dunsparce, 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_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_Following, sPicTable_Steelix, 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_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_Following, sPicTable_Qwilfish, 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_FOOT, &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_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_Following, sPicTable_Magcargo, 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_FOOT, &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_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_Following, sPicTable_Octillery, 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_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_Following, sPicTable_Kingdra, 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_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_Following, sPicTable_Porygon2, 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}, @@ -273,7 +273,7 @@ const struct ObjectEventGraphicsInfo gPokemonObjectGraphics[] = { [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_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_Following, sPicTable_Pupitar, 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_DYNAMIC, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_Following, sPicTable_Lugia, gDummySpriteAffineAnimTable}, [SPECIES_HO_OH] = {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_Ho_oh, gDummySpriteAffineAnimTable}, @@ -291,10 +291,10 @@ const struct ObjectEventGraphicsInfo gPokemonObjectGraphics[] = { [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_FOOT, &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_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_Following, sPicTable_Silcoon, 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_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_Following, sPicTable_Cascoon, 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}, @@ -309,14 +309,14 @@ const struct ObjectEventGraphicsInfo gPokemonObjectGraphics[] = { [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_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_Following, sPicTable_Surskit, 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_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_Following, sPicTable_Nincada, 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}, @@ -342,16 +342,16 @@ const struct ObjectEventGraphicsInfo gPokemonObjectGraphics[] = { [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_FOOT, &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_FOOT, &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_FOOT, &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_FOOT, &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_FOOT, &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_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_Following, sPicTable_Wailord, 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_BIKE_TIRE, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_Following, sPicTable_Spoink, 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}, @@ -362,21 +362,21 @@ const struct ObjectEventGraphicsInfo gPokemonObjectGraphics[] = { [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_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_Following, sPicTable_Seviper, 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_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_Following, sPicTable_Barboach, 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_BIKE_TIRE, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_Following, sPicTable_Baltoy, 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_FOOT, &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_FOOT, &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_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_Following, sPicTable_Anorith, 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_FOOT, &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_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_Following, sPicTable_Milotic, 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}, @@ -392,11 +392,11 @@ const struct ObjectEventGraphicsInfo gPokemonObjectGraphics[] = { [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_FOOT, &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_FOOT, &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_FOOT, &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_FOOT, &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_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_Following, sPicTable_Luvdisc, 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}, @@ -409,7 +409,7 @@ const struct ObjectEventGraphicsInfo gPokemonObjectGraphics[] = { [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_DYNAMIC, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_Following, sPicTable_Kyogre, gDummySpriteAffineAnimTable}, - [SPECIES_GROUDON] = {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_Groudon, gDummySpriteAffineAnimTable}, + [SPECIES_GROUDON] = {0xFFFF, OBJ_EVENT_PAL_TAG_DYNAMIC, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_Following, sPicTable_Groudon, gDummySpriteAffineAnimTable}, [SPECIES_RAYQUAZA] = {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_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}, diff --git a/src/event_object_movement.c b/src/event_object_movement.c index 17360eb9e..6c8fa547b 100644 --- a/src/event_object_movement.c +++ b/src/event_object_movement.c @@ -123,7 +123,10 @@ static void InitObjectPriorityByZCoord(struct Sprite *sprite, u8 z); 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*); @@ -8593,6 +8596,9 @@ 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) @@ -8627,6 +8633,40 @@ static void DoTracksGroundEffect_Footprints(struct ObjectEvent *objEvent, struct FieldEffectStart(sandFootprints_FieldEffectData[a]); } +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, u8 a) { // Specifies which bike track shape to show next. @@ -8654,6 +8694,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); diff --git a/src/field_effect_helpers.c b/src/field_effect_helpers.c index 977893279..0a5fdd973 100755 --- a/src/field_effect_helpers.c +++ b/src/field_effect_helpers.c @@ -681,6 +681,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; @@ -699,6 +735,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 From ea5e081f74603dffe4e2cf2372f930a3686dbeaf Mon Sep 17 00:00:00 2001 From: Ariel A <24759293+aarant@users.noreply.github.com> Date: Mon, 21 Feb 2022 15:54:49 -0500 Subject: [PATCH 146/241] Fixed shadow palette tag. Fully removed permanent shadows. --- .../field_effects/pics/shadow_extra_large.png | Bin 152 -> 5188 bytes graphics/field_effects/pics/shadow_large.png | Bin 144 -> 4911 bytes graphics/field_effects/pics/shadow_medium.png | Bin 143 -> 4767 bytes graphics/field_effects/pics/shadow_small.png | Bin 143 -> 4807 bytes graphics/weather/fog.pal | 2 +- src/data/field_effects/field_effect_objects.h | 40 ++---------------- src/field_effect_helpers.c | 2 +- 7 files changed, 6 insertions(+), 38 deletions(-) diff --git a/graphics/field_effects/pics/shadow_extra_large.png b/graphics/field_effects/pics/shadow_extra_large.png index 765a5291a8d9eb0f6508e5d9e223c421112ca56b..eb334a976c597db39f56470dcb6e90b9123a3dd4 100644 GIT binary patch literal 5188 zcmeHKX;@Ro8V*~56p&RAgM?regzO1fWDyCF2%#822#9c!oP+>bOacV#?R5i-OGO0{ z1r)HBi()Gvf-5MC3aGe%Wzn{X;tFU*tWfSr!0oyHDOh1N2xeK8d9#13B}1EQk5E zgu&E3Pa|WFI=h-oifpR&lW|#tBe_Du>IqubGU?9V&Kmk8kz)%tw;gPy-S)44ef4hJ zWabuD)s|9PUasfSDBf?ISz`|>PAzmyJNJ{i|NPX#`hi~4ESGqb2eOdvKlc?rgI@{7 z?=tkSkE8Uw*rq7BKT$eVg=lx)w>@Ziy|sZiWr!2{b(DABk?l@3=`E|b%-_Gi8gpNC z;@o890g8UA?h6xZ&kVCss`-;ZOn5LVqpx8p{N#g;-dPG)J*3b1OFrtsRowcktD-K+ zn8pu}$jv=B6g(T4H8>ypJgB7C+$YLxa_?w$;lA!}x%AxefYhW8tJrPEIfvZJW4>FH zm1&x@X)n>&2=T5U{ieaM_FL*Of`T#Mp(QU7p)%%&2IDZbdyZs<1N zyxUrSVNdnE!%K`Rd%bs>j#Qpm)sh6;Pz78u`uWe)a8gN<>=$qNzM-|5>qqa|KdiHc zp>EHn`stXAGkjfkL<+ys{eI3wxXb0;b4{&tjAp4X;Wz3l2>T?SWi{PZBNk=Cbw$%U_j@m0h}TZwUYTqhH3^Tj!Wt?L@8*2t51?A+y8r*GLlPRT!e?{2JOf0@#AHB>Zcij|tCw&s5FYA4O3|G^LTt6kz`ZHGT_qHo!c@--MOa79EMOiI5Ae z*@aOq@Mdq*bhl%F0ji(Y$2r8=u$z_)>dFIwh@O$f%ZE(QIb>CoR9%oqTwFS(E0r~2 z`+A(EPc2S3C3;}{`tYv}5W&w)DMWSawy^!j2E3MsHP%}s8K(Bzk6Wfq=~_Mx8P1uV zsPq^o>M~Sn%k_-T{OFKso1UN zQM}@zElJGetV9@euixOfCBo2F6zj0kz;{HisiT9{>A!3uj+0<9(74*?PXC&|GkT{x z7KNEi=^rRRR2a_*6!fzkX_6rKI4uP&$?Vf*mPDS_1X&_*RgC#yln#6{qdXIRnZIA z4$rCMEdDFnYR}~SGo78KflCtR*3~^rxIRx_ug54REw`0i3cL~Ht~)IHgPk5fGJ7aS znUOR+@Q2PtPGlRUq0tGqqV!2he%hRY)Ev5=*^M!>7)nkYa%sDw52`vE_bXf|!}10K+mu z!uc6Ve3}5|;|=#z(;)&0r~;5`NwQQ)S9_tfymY9pF=J6kEku>%g^FT_BK>3v5J|$2 zFgUcoTAWHidBc&O3W1Q$VFb)jKrJs+f=VT)W3g#zX_z!3My3#9@iZC@iz8qO1T=&| zE7PSaK#i6voi!BG91Kv&SBT{*u}q58Z~{D8ipmRxg8Gqf=O>Y~+3)D3${7_PJ+Nv( zj>TheScwGtp@&lCp9+!8Oz3Ytl;P0TjOBnzS&D)W`lo_YmGg%b0{%OHd5R)g8;*dF z1(QJu1XV(#;y)TPki`yt=b@26B$mjvUXa)yAys1Gd$B&6o2Ew_&W96$+~4tjgnk>l z77U@-Y&t{6Pti<|#qdID#-|Hpe6fJ8tgm?>CP)@*yO2n2;?e>B^dL$g z6%=R(g8Zht_z8ei1VTG}CZ*om#ecJ0Gzv(@Qw1JqGQjgdllYLvfDjO(J@_~h$wTNt zgQWkMT`3c)(f|eMD}o}0qJdIK8x7KBMoia_@o5R5MkyQtkH(SE1X4JjLMPzqBpM1k z6D(G6jcUaBnrIGL-{LQSxKR5zJ{dtg2()Y7m zpXK@_1wIMFyvoZ7~Zw=*b< tw>B~QwJ_T-7>S(4!S8}0lXaaaFqnH=^e+*NQ;rZC#_|tg99Xg3j9Hh@&EqUA5s%2VrH0YF+Fpl-(pRmat2RVKbLh*2~7Zaj3H$J diff --git a/graphics/field_effects/pics/shadow_large.png b/graphics/field_effects/pics/shadow_large.png index e917823b05cd96f64884877479f9c8df82d73483..1695208af543eee620304317dd419295cbe6d44a 100644 GIT binary patch literal 4911 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 delta 86 zcmbQQ+Rr#adGbF&MenHYy#j_oTb3kM7du*7O8o!-pMilvHh11}ASLDL;uyj)GdbY^ p^N;_`2iY}vlm50dwQ%_GG92cTe|U0_SQ$_igQu&X%Q~loCID}b9-#mL diff --git a/graphics/field_effects/pics/shadow_small.png b/graphics/field_effects/pics/shadow_small.png index f5feada2b96633ca74e5281fa01fa7fd59aff536..6cd37c5f23a54d2ea919da42888fa1bb2f98384a 100644 GIT binary patch literal 4807 zcmeHKX;c&05)P{fxFX8{Y7C+%c9ITFAQ5B3%M9uqL`6XuKv@Ps!Id+D3o0VwL!TS(CZNKZ`Qtfn{+V++-CeiptE#W+R&p~# z<_3;1wKXM?NF%sGetd8@(O!lI;F~$=U=fLAz)1=XSMgCbS)r7RaS29NB`Pp7roqJ| zlIB+Dj>XCuQ_a&`Bm8%yP4*VBkex@Lk+0T|O0AB3*0$V(#?3usi~7v=-5dSv?a~z^ zUk{tmE1~+G$)5jG<2!PfneoHdhmYl@gn#&$L#R%wn+-XRTa?G=ykz$9%?Web?zo0WIPPrTkK^<+ii>O-;L;Vouy2 z-?HXr?61K)rWlJYHAag{1p6Pj(bU_`H`$?%78}NtM7y0+pPn~jBRo5=>h^Z$@`|1i z@&>M~H{6Jf)UmUiOJkB#riAI07G0CHM0eko3D&EcZX9!n*k@$s(Eh`XpxY>E+N!Q~ z(IFixQz)6)RnDizPTFid%P3uvw{e7tQ-EyUw$(xU_H7+@txm_!*e8ay)#S^1-T;W>(pS-BT8~+~2{xE4jM(h|^x%Wyg*za}6V)jeC$g7Lcp- zhSE8g9egBXLh_Sa#~&>*4whD#IBY^xEma32o2oj)_uhKi^f>>I^-Yll)~+c>lXmY* z%q_1rFLxik?&;*TRS&Cc?ABhA9oSQoBF@RGTF02{zHtgX+C0~NWO2&}&ht%s%>D|z z^Jem+DaGn7gvH&d?RjTYy^q%}-SeaZ^6jyy%TFrpe(D&3a?Zw&IG^70sMD-tNz|L$ zf66(1aU6rNGF#cTTABFnhr*X9>uzR0AKx&i82k#IxRbv+-_=aC|3Isdk=Q` z_q5-+aM->tIeke@eO&cN=9%W{?!F*94oUp>6 z@?d3qTPk%8iKMp%=Ws%}9L}fh1U6Al>Q>L7%ii`COTF?b+gB}gy1!*VJ7Tou^6cqW zrM|fH=_k?34r>Gt;z!yWHLqGdas7f})-h4zBaM7s7?ju6avS`E-!J9Ij%h1h?se~O z@|_C?=WD0WH}5mtS8ynAZu#2C9~PLLFWYRAKDsQe${gAiQBxM5a`*D(=5sdnO0Ul{TyB(SxGg{quN_t<`{F=wBx5&s` z%eS5#Rdc1-*Mn!j-E#ZO3#<&RZgI}`Ww~d%s+Zc#C~*GnM5Dcr{_G%%k>1!R1^Y}b z;6)4g=J~kS^ZOHj|1eF-Z9kf}RjB9cG+OHQX5#zjH=O43*xXY0KYIib6AyYvTgST2 zc>1oTaM9GXuJ4NYGe0h}`02ys3k?ki0=;AHii)1cUYnpeYv7lMd~YqS4s2XJL%%EL z6)!RRh1KK5L{eN=+bg{)e%MvFOQnH6`@Vd8aSHcRfh&E+z2``EY#-0rh z##=aV4qGUfQc;myfKfG41sH!Ml82W@fePa=6-ykuLO;c5%PGY5c5yKWGaWj5F+7cdquob zqDx04q+t?F3RDT;6&~U;kjo4CY@wwf2A3*yR)FjwnkroUg{&d5X;*aV3=RaCf5si6 z{V8{yGSK4j*nVv z5>JXYD6-a4*WhH2{;~w&1kgy-_WVHC&&QVczx8hd39efrlXZ>DMuq)O2s8l`=^O#O z{v}~7DvQCu4j*W#PjdVp$^}X+bY(EzAQ6U%AViG8kUJs}K$x40J1PVTqPqw5=8U&X*zDSzv( zZ*+YX17D^5t-JnjbeVoR?qD+T4@eCTGl>DswcsE`51A9{PgLahT|eDdk$o?lNcQpR z%Rha6S@L=xes)DKP#F#LPv;Ag2_F{ArmwFLNDfT0eg$rNg4uz7q;*E)gTTvhMNkAm zBAHoeFFn%k92+1UrsDGahdnT~u^eZ{{cA@I5ZQA5d_ql{h0)#yITmS}hc&~^T~?CH b^fUEHVTHpW%-ixOphe>P&-FXu8@=j(7?>nJ delta 86 zcmX@E+Rr#ad9s?2qIXpHUID|PElZNBiybX3CI0{a&%nSSn>+6~kdpFraSY*@nVjIj p{71gw$N&HQJpUUR4l#8yGECy*{>oQV+zwR5;OXk;vd$@?2>?w89&P{t diff --git a/graphics/weather/fog.pal b/graphics/weather/fog.pal index 6191b6692..1f40dd4e7 100644 --- 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/src/data/field_effects/field_effect_objects.h b/src/data/field_effects/field_effect_objects.h index 9e22ec05e..00b95340e 100755 --- a/src/data/field_effects/field_effect_objects.h +++ b/src/data/field_effects/field_effect_objects.h @@ -28,45 +28,13 @@ static const struct SpriteFrameImage sPicTable_ShadowExtraLarge[] = { obj_frame_tiles(gFieldEffectObjectPic_ShadowExtraLarge), }; -const struct SpriteTemplate gFieldEffectObjectTemplate_ShadowSmall = { - .tileTag = TAG_NONE, - .paletteTag = OBJ_EVENT_PAL_TAG_MAY, - .oam = &gObjectEventBaseOam_8x8, - .anims = sAnimTable_Shadow, - .images = sPicTable_ShadowSmall, - .affineAnims = gDummySpriteAffineAnimTable, - .callback = UpdateShadowFieldEffect, -}; +const struct SpriteTemplate gFieldEffectObjectTemplate_ShadowSmall = {0xFFFF, TAG_WEATHER_START, &gObjectEventBaseOam_8x8, sAnimTable_Shadow, sPicTable_ShadowSmall, gDummySpriteAffineAnimTable, UpdateShadowFieldEffect}; -const struct SpriteTemplate gFieldEffectObjectTemplate_ShadowMedium = { - .tileTag = TAG_NONE, - .paletteTag = OBJ_EVENT_PAL_TAG_MAY, - .oam = &gObjectEventBaseOam_16x8, - .anims = sAnimTable_Shadow, - .images = sPicTable_ShadowMedium, - .affineAnims = gDummySpriteAffineAnimTable, - .callback = UpdateShadowFieldEffect, -}; +const struct SpriteTemplate gFieldEffectObjectTemplate_ShadowMedium = {0xFFFF, TAG_WEATHER_START, &gObjectEventBaseOam_16x8, sAnimTable_Shadow, sPicTable_ShadowMedium, gDummySpriteAffineAnimTable, UpdateShadowFieldEffect}; -const struct SpriteTemplate gFieldEffectObjectTemplate_ShadowLarge = { - .tileTag = TAG_NONE, - .paletteTag = OBJ_EVENT_PAL_TAG_MAY, - .oam = &gObjectEventBaseOam_32x8, - .anims = sAnimTable_Shadow, - .images = sPicTable_ShadowLarge, - .affineAnims = gDummySpriteAffineAnimTable, - .callback = UpdateShadowFieldEffect, -}; +const struct SpriteTemplate gFieldEffectObjectTemplate_ShadowLarge = {0xFFFF, TAG_WEATHER_START, &gObjectEventBaseOam_32x8, sAnimTable_Shadow, sPicTable_ShadowLarge, gDummySpriteAffineAnimTable, UpdateShadowFieldEffect}; -const struct SpriteTemplate gFieldEffectObjectTemplate_ShadowExtraLarge = { - .tileTag = TAG_NONE, - .paletteTag = OBJ_EVENT_PAL_TAG_MAY, - .oam = &gObjectEventBaseOam_64x32, - .anims = sAnimTable_Shadow, - .images = sPicTable_ShadowExtraLarge, - .affineAnims = gDummySpriteAffineAnimTable, - .callback = UpdateShadowFieldEffect, -}; +const struct SpriteTemplate gFieldEffectObjectTemplate_ShadowExtraLarge = {0xFFFF, TAG_WEATHER_START, &gObjectEventBaseOam_64x32, sAnimTable_Shadow, sPicTable_ShadowExtraLarge, gDummySpriteAffineAnimTable, UpdateShadowFieldEffect}; static const struct SpriteFrameImage sPicTable_TallGrass[] = { overworld_frame(gFieldEffectObjectPic_TallGrass, 2, 2, 0), diff --git a/src/field_effect_helpers.c b/src/field_effect_helpers.c index 0a5fdd973..d47c40262 100755 --- a/src/field_effect_helpers.c +++ b/src/field_effect_helpers.c @@ -352,7 +352,7 @@ void UpdateShadowFieldEffect(struct Sprite *sprite) sprite->x = linkedSprite->x; sprite->y = linkedSprite->y + sprite->data[3]; sprite->invisible = linkedSprite->invisible; - if (!objectEvent->active + if (!objectEvent->active || !objectEvent->hasShadow || MetatileBehavior_IsPokeGrass(objectEvent->currentMetatileBehavior) || MetatileBehavior_IsSurfableWaterOrUnderwater(objectEvent->currentMetatileBehavior) || MetatileBehavior_IsSurfableWaterOrUnderwater(objectEvent->previousMetatileBehavior)) From 2273a61b3775b0cd35bbd7999d23ebac6ac201ca Mon Sep 17 00:00:00 2001 From: Ariel A <24759293+aarant@users.noreply.github.com> Date: Mon, 1 Nov 2021 00:48:36 -0400 Subject: [PATCH 147/241] Re-indexed follower & pokeball GFX IDs. --- data/maps/AncientTomb/scripts.inc | 2 +- data/maps/DesertRuins/map.json | 2 +- data/maps/DesertRuins/scripts.inc | 2 +- data/maps/IslandCave/map.json | 8 +++++--- data/maps/IslandCave/scripts.inc | 1 + include/constants/event_objects.h | 6 +++--- src/data/object_events/object_event_graphics_info.h | 2 +- .../object_events/object_event_graphics_info_pointers.h | 4 ++-- src/event_object_movement.c | 2 ++ 9 files changed, 17 insertions(+), 12 deletions(-) diff --git a/data/maps/AncientTomb/scripts.inc b/data/maps/AncientTomb/scripts.inc index d28ac7bc3..bafc5490f 100644 --- 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/DesertRuins/map.json b/data/maps/DesertRuins/map.json index c87df0dee..aaa2b4c7b 100644 --- a/data/maps/DesertRuins/map.json +++ b/data/maps/DesertRuins/map.json @@ -15,7 +15,7 @@ "connections": null, "object_events": [ { - "graphics_id": "OBJ_EVENT_GFX_REGIROCK", + "graphics_id": "OBJ_EVENT_GFX_OW_MON", "x": 8, "y": 7, "elevation": 3, diff --git a/data/maps/DesertRuins/scripts.inc b/data/maps/DesertRuins/scripts.inc index 2aaa61ebb..1b23d993d 100644 --- 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/IslandCave/map.json b/data/maps/IslandCave/map.json index 7c540411f..1f7b59f1c 100644 --- a/data/maps/IslandCave/map.json +++ b/data/maps/IslandCave/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_REGICE", + "graphics_id": "OBJ_EVENT_GFX_OW_MON", "x": 8, "y": 7, "elevation": 3, @@ -51,7 +51,9 @@ "dest_warp_id": 1 } ], - "coord_events": [], + "coord_events": [ + + ], "bg_events": [ { "type": "sign", diff --git a/data/maps/IslandCave/scripts.inc b/data/maps/IslandCave/scripts.inc index 8f8236a5c..b6a1c18a6 100644 --- 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/include/constants/event_objects.h b/include/constants/event_objects.h index b07aee7c9..72933582f 100644 --- a/include/constants/event_objects.h +++ b/include/constants/event_objects.h @@ -240,10 +240,10 @@ #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 239 -#define OBJ_EVENT_GFX_OW_MON 240 +#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 NUM_OBJ_EVENT_GFX 241 +#define NUM_OBJ_EVENT_GFX 239 // These are dynamic object gfx ids. diff --git a/src/data/object_events/object_event_graphics_info.h b/src/data/object_events/object_event_graphics_info.h index 18c68d7a7..53df4e9c3 100755 --- a/src/data/object_events/object_event_graphics_info.h +++ b/src/data/object_events/object_event_graphics_info.h @@ -243,5 +243,5 @@ const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_RubySapphireBrenda 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, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_16x32, sOamTables_16x32, sAnimTable_Following, sPicTable_AnimatedBall, 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}; 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 0135b840d..4db596708 100755 --- a/src/data/object_events/object_event_graphics_info_pointers.h +++ b/src/data/object_events/object_event_graphics_info_pointers.h @@ -310,7 +310,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, @@ -452,7 +452,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, diff --git a/src/event_object_movement.c b/src/event_object_movement.c index 6c8fa547b..f96adeef4 100644 --- a/src/event_object_movement.c +++ b/src/event_object_movement.c @@ -6346,6 +6346,7 @@ bool8 MovementAction_ExitPokeball_Step0(struct ObjectEvent *objectEvent, struct } sprite->data[6] |= (direction == DIR_EAST ? 1 : 0) << 4; ObjectEventSetGraphicsId(objectEvent, OBJ_EVENT_GFX_ANIMATED_BALL); + objectEvent->inanimate = FALSE; return MovementAction_ExitPokeball_Step1(objectEvent, sprite); } @@ -6446,6 +6447,7 @@ bool8 MovementAction_EnterPokeball_Step1(struct ObjectEvent *objectEvent, struct FreeSpriteOamMatrix(sprite); sprite->oam.affineMode = ST_OAM_AFFINE_OFF; ObjectEventSetGraphicsId(objectEvent, OBJ_EVENT_GFX_ANIMATED_BALL); + objectEvent->inanimate = FALSE; } return FALSE; } From c78736c94f8879b1cddf43f998ab4d3ae3f4590e Mon Sep 17 00:00:00 2001 From: Ariel A <24759293+aarant@users.noreply.github.com> Date: Tue, 15 Mar 2022 18:53:06 -0400 Subject: [PATCH 148/241] Fixed bug where decor icons cleared dynamic palettes in the Frontier Exchange Corner shop. --- include/field_effect.h | 1 + src/field_specials.c | 3 ++- 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/include/field_effect.h b/include/field_effect.h index 073fc3b4c..9bd76e06f 100644 --- a/include/field_effect.h +++ b/include/field_effect.h @@ -25,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/src/field_specials.c b/src/field_specials.c index 96eb949e5..da1706500 100644 --- a/src/field_specials.c +++ b/src/field_specials.c @@ -3118,7 +3118,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; From 570b5927c291549a13d4e20b2601023ba1a17d5d Mon Sep 17 00:00:00 2001 From: Ariel A <24759293+aarant@users.noreply.github.com> Date: Tue, 15 Mar 2022 19:20:13 -0400 Subject: [PATCH 149/241] Fixed script `release` breaking followers when called mid-movement. --- src/scrcmd.c | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/src/scrcmd.c b/src/scrcmd.c index 6ec06cced..ae2cbfc33 100644 --- a/src/scrcmd.c +++ b/src/scrcmd.c @@ -1032,7 +1032,15 @@ bool8 ScrCmd_applymovement_at(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) From 6ef4e92e76bbde184394b0f30cbc5f59da043130 Mon Sep 17 00:00:00 2001 From: Ariel A <24759293+aarant@users.noreply.github.com> Date: Wed, 16 Mar 2022 18:44:12 -0400 Subject: [PATCH 150/241] Fixed bug where followers could be talked to while invisible. Was caused by quick `applymovements` not giving enough time to move the follower on top of the player. --- src/event_object_movement.c | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/event_object_movement.c b/src/event_object_movement.c index f96adeef4..6235c1577 100644 --- a/src/event_object_movement.c +++ b/src/event_object_movement.c @@ -4705,6 +4705,12 @@ bool8 MovementType_FollowPlayer_Shadow(struct ObjectEvent *objectEvent, struct S 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->data[1] = 1; // Enter active state; if the player moves the follower will appear return TRUE; } From 23782c16f7521a30fa8dbcb38bc4b3fc486c1fa3 Mon Sep 17 00:00:00 2001 From: Ariel A <24759293+aarant@users.noreply.github.com> Date: Sun, 20 Mar 2022 16:36:38 -0400 Subject: [PATCH 151/241] Fixed Sky Pillar Rayquaza sprite having the wrong image. --- src/data/object_events/object_event_graphics_info.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/data/object_events/object_event_graphics_info.h b/src/data/object_events/object_event_graphics_info.h index 53df4e9c3..789fc7e17 100755 --- a/src/data/object_events/object_event_graphics_info.h +++ b/src/data/object_events/object_event_graphics_info.h @@ -208,7 +208,7 @@ const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Skitty = {TAG_NONE 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_M, FALSE, TRUE, TRACKS_FOOT, &gObjectEventBaseOam_64x64, sOamTables_64x64, sAnimTable_Rayquaza, sPicTable_Rayquaza, gDummySpriteAffineAnimTable}; +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}; From 6e621d80a10f015e00ae017342cfb71284f51503 Mon Sep 17 00:00:00 2001 From: Ariel A <24759293+aarant@users.noreply.github.com> Date: Fri, 15 Apr 2022 22:38:56 -0400 Subject: [PATCH 152/241] Added day/night palette swapping. Updated lighting for lava, Petalburg, Slateport, Dewford, Verdanturf, Oldale, Mossdeep, Lilycove, Fallarbor. Improved lantern appearance & added neon signs on PokeCenter & Mart. Optimized gamma shift code. Removed obselete CacheLightMetatiles. --- common_syms/overworld.txt | 1 + data/maps/DewfordTown/map.json | 13 ++ data/maps/EverGrandeCity/map.json | 16 +- data/maps/LilycoveCity/map.json | 13 ++ data/maps/MauvilleCity/map.json | 26 +++ data/maps/MossdeepCity/map.json | 26 +++ data/maps/PacifidlogTown/map.json | 17 +- data/maps/PetalburgCity/map.json | 26 +++ data/maps/RustboroCity/map.json | 221 ++++++++++++++++++ data/maps/SlateportCity/map.json | 26 +++ data/maps/VerdanturfTown/map.json | 26 +++ data/tilesets/headers.inc | 30 +-- .../primary/general/metatile_attributes.bin | Bin 1024 -> 1024 bytes data/tilesets/primary/general/metatiles.bin | Bin 8192 -> 8192 bytes data/tilesets/primary/general/palettes/04.pal | 12 +- data/tilesets/primary/general/palettes/13.pal | 32 +-- data/tilesets/primary/general/tiles.png | Bin 7622 -> 7658 bytes .../secondary/dewford/metatile_attributes.bin | Bin 758 -> 758 bytes data/tilesets/secondary/dewford/metatiles.bin | Bin 6064 -> 6064 bytes .../secondary/dewford/palettes/12.pal | 26 +-- data/tilesets/secondary/dewford/tiles.png | Bin 12295 -> 3818 bytes .../secondary/fallarbor/palettes/00.pal | 26 +-- .../secondary/lavaridge/metatiles.bin | Bin 7056 -> 7056 bytes .../secondary/lavaridge/palettes/06.pal | 32 +-- data/tilesets/secondary/lavaridge/tiles.png | Bin 4087 -> 4087 bytes .../lilycove/metatile_attributes.bin | Bin 702 -> 702 bytes .../tilesets/secondary/lilycove/metatiles.bin | Bin 5616 -> 5616 bytes .../secondary/lilycove/palettes/15.pal | 30 +-- data/tilesets/secondary/lilycove/tiles.png | Bin 3674 -> 3728 bytes .../tilesets/secondary/mauville/metatiles.bin | Bin 8160 -> 8192 bytes data/tilesets/secondary/mauville/tiles.png | Bin 6069 -> 6079 bytes .../tilesets/secondary/mossdeep/metatiles.bin | Bin 7264 -> 7264 bytes .../secondary/mossdeep/palettes/01.pal | 24 +- .../secondary/mossdeep/palettes/02.pal | 32 +-- .../secondary/mossdeep/palettes/09.pal | 26 +-- data/tilesets/secondary/mossdeep/tiles.png | Bin 4115 -> 4129 bytes .../secondary/pacifidlog/palettes/02.pal | 32 +-- .../secondary/petalburg/palettes/02.pal | 32 +-- .../secondary/petalburg/palettes/09.pal | 32 +-- .../tilesets/secondary/rustboro/metatiles.bin | Bin 5600 -> 5616 bytes data/tilesets/secondary/rustboro/tiles.png | Bin 12786 -> 4057 bytes .../slateport/metatile_attributes.bin | Bin 812 -> 812 bytes .../secondary/slateport/metatiles.bin | Bin 6496 -> 6496 bytes .../secondary/slateport/palettes/12.pal | 10 +- .../secondary/slateport/palettes/15.pal | 30 +-- data/tilesets/secondary/slateport/tiles.png | Bin 6558 -> 6587 bytes .../secondary/sootopolis/palettes/15.pal | 30 +-- gflib/sprite.c | 22 ++ gflib/sprite.h | 2 + graphics/object_events/palettes/light.pal | 30 +-- graphics/object_events/palettes/light2.pal | 19 ++ .../object_events/palettes/neon_light.pal | 19 ++ graphics/object_events/pics/misc/light.png | Bin 3064 -> 6205 bytes .../object_events/pics/misc/mart_light.png | Bin 0 -> 5395 bytes .../pics/misc/poke_center_light.png | Bin 0 -> 5378 bytes include/constants/event_objects.h | 1 + include/field_weather.h | 1 + include/fieldmap.h | 1 - include/global.fieldmap.h | 3 +- include/overworld.h | 4 + include/palette.h | 1 + src/data/field_effects/field_effect_objects.h | 36 ++- .../object_events/object_event_graphics.h | 4 + .../object_event_graphics_info.h | 2 + .../object_event_graphics_info_pointers.h | 4 +- .../object_events/object_event_pic_tables.h | 2 + src/event_object_movement.c | 196 ++++++++++------ src/field_weather.c | 29 ++- src/fieldmap.c | 21 -- src/overworld.c | 61 +++-- src/palette.c | 25 ++ src/trainer_see.c | 2 +- 72 files changed, 972 insertions(+), 360 deletions(-) create mode 100644 graphics/object_events/palettes/light2.pal create mode 100644 graphics/object_events/palettes/neon_light.pal create mode 100644 graphics/object_events/pics/misc/mart_light.png create mode 100644 graphics/object_events/pics/misc/poke_center_light.png diff --git a/common_syms/overworld.txt b/common_syms/overworld.txt index cc92cee1e..9aff4e77a 100644 --- a/common_syms/overworld.txt +++ b/common_syms/overworld.txt @@ -8,3 +8,4 @@ gLocalLinkPlayerId gFieldLinkPlayerCount gTimeOfDay currentTimeBlend +gTimeUpdateCounter diff --git a/data/maps/DewfordTown/map.json b/data/maps/DewfordTown/map.json index 8beb5add7..c59e66844 100644 --- 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/EverGrandeCity/map.json b/data/maps/EverGrandeCity/map.json index 9db9c8feb..311cf4c2c 100644 --- a/data/maps/EverGrandeCity/map.json +++ b/data/maps/EverGrandeCity/map.json @@ -19,7 +19,21 @@ "map": "MAP_ROUTE128" } ], - "object_events": [], + "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": [ { "x": 18, diff --git a/data/maps/LilycoveCity/map.json b/data/maps/LilycoveCity/map.json index a13904ca9..d4a2b6ee4 100644 --- a/data/maps/LilycoveCity/map.json +++ b/data/maps/LilycoveCity/map.json @@ -310,6 +310,19 @@ "trainer_sight_or_berry_tree_id": "0", "script": "LilycoveCity_EventScript_FatMan", "flag": "0" + }, + { + "graphics_id": "OBJ_EVENT_GFX_LIGHT_SPRITE", + "x": 26, + "y": 14, + "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/MauvilleCity/map.json b/data/maps/MauvilleCity/map.json index cf3d5f8a1..bd7426404 100644 --- a/data/maps/MauvilleCity/map.json +++ b/data/maps/MauvilleCity/map.json @@ -177,6 +177,32 @@ "trainer_sight_or_berry_tree_id": "0", "script": "0x0", "flag": "FLAG_HIDE_MAUVILLE_CITY_SCOTT" + }, + { + "graphics_id": "OBJ_EVENT_GFX_LIGHT_SPRITE", + "x": 24, + "y": 5, + "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": 25, + "y": 14, + "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/MossdeepCity/map.json b/data/maps/MossdeepCity/map.json index ff8ae1b61..309a22f42 100644 --- a/data/maps/MossdeepCity/map.json +++ b/data/maps/MossdeepCity/map.json @@ -250,6 +250,32 @@ "trainer_sight_or_berry_tree_id": "0", "script": "MossdeepCity_EventScript_BlackBelt", "flag": "0" + }, + { + "graphics_id": "OBJ_EVENT_GFX_LIGHT_SPRITE", + "x": 30, + "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": 39, + "y": 18, + "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/PacifidlogTown/map.json b/data/maps/PacifidlogTown/map.json index 51fc772a9..ec1bb1b22 100644 --- 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": [ @@ -109,7 +122,9 @@ "dest_warp_id": 0 } ], - "coord_events": [], + "coord_events": [ + + ], "bg_events": [ { "type": "sign", diff --git a/data/maps/PetalburgCity/map.json b/data/maps/PetalburgCity/map.json index d9587cdbb..c36d36faf 100644 --- 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/RustboroCity/map.json b/data/maps/RustboroCity/map.json index 445bc5189..979d61e0b 100644 --- a/data/maps/RustboroCity/map.json +++ b/data/maps/RustboroCity/map.json @@ -237,6 +237,227 @@ "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" } ], "warp_events": [ diff --git a/data/maps/SlateportCity/map.json b/data/maps/SlateportCity/map.json index 6ffed4b45..9141e5ab6 100644 --- a/data/maps/SlateportCity/map.json +++ b/data/maps/SlateportCity/map.json @@ -484,6 +484,32 @@ "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" } ], "warp_events": [ diff --git a/data/maps/VerdanturfTown/map.json b/data/maps/VerdanturfTown/map.json index 94d140c05..df419ce90 100644 --- a/data/maps/VerdanturfTown/map.json +++ b/data/maps/VerdanturfTown/map.json @@ -76,6 +76,32 @@ "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" } ], "warp_events": [ diff --git a/data/tilesets/headers.inc b/data/tilesets/headers.inc index 3f1945af4..8a1e8f444 100644 --- a/data/tilesets/headers.inc +++ b/data/tilesets/headers.inc @@ -1,8 +1,8 @@ .align 2 gTileset_General:: - .byte TRUE @ is compressed + .byte 0x41 @ is compressed, swapPalettes 4 .byte FALSE @ is secondary tileset - .2byte 0 @ padding + .2byte 0x10 @ lightPalettes 4 .4byte gTilesetTiles_General .4byte gTilesetPalettes_General .4byte gMetatiles_General @@ -11,9 +11,9 @@ gTileset_General:: .align 2 gTileset_Petalburg:: - .byte TRUE @ is compressed + .byte 0x21 @ is compressed, swapPalettes 9 .byte TRUE @ is secondary tileset - .2byte 3 @ lightPalettes 6,7 + .2byte 0x00B @ lightPalettes 6,7,9, custom 9 .4byte gTilesetTiles_Petalburg .4byte gTilesetPalettes_Petalburg .4byte gMetatiles_Petalburg @@ -35,7 +35,7 @@ gTileset_Rustboro:: gTileset_Dewford:: .byte TRUE @ is compressed .byte TRUE @ is secondary tileset - .2byte 64 @ lightPalettes 12 + .2byte 0 @ padding .4byte gTilesetTiles_Dewford .4byte gTilesetPalettes_Dewford .4byte gMetatiles_Dewford @@ -44,9 +44,9 @@ gTileset_Dewford:: .align 2 gTileset_Slateport:: - .byte TRUE @ is compressed + .byte 5 @ is compressed, swapPalettes 6 .byte TRUE @ is secondary tileset - .2byte 0x41 @ lightPalettes 6,12 + .2byte 0x1 @ lightPalettes 6 .4byte gTilesetTiles_Slateport .4byte gTilesetPalettes_Slateport .4byte gMetatiles_Slateport @@ -68,7 +68,7 @@ gTileset_Mauville:: gTileset_Lavaridge:: .byte TRUE @ is compressed .byte TRUE @ is secondary tileset - .2byte 0 @ padding + .2byte 0x0101 @ lightPalettes 6, customLights 6 .4byte gTilesetTiles_Lavaridge .4byte gTilesetPalettes_Lavaridge .4byte gMetatiles_Lavaridge @@ -77,7 +77,7 @@ gTileset_Lavaridge:: .align 2 gTileset_Fallarbor:: - .byte TRUE @ is compressed + .byte 9 @ is compressed, swapPalettes 7 .byte TRUE @ is secondary tileset .2byte 2 @ lightPalettes 7 .4byte gTilesetTiles_Fallarbor @@ -99,7 +99,7 @@ gTileset_Fortree:: .align 2 gTileset_Lilycove:: - .byte TRUE @ is compressed + .byte 5 @ is compressed, swapPalettes 6 .byte TRUE @ is secondary tileset .2byte 0x01 @ lightPalettes 6 .4byte gTilesetTiles_Lilycove @@ -107,12 +107,13 @@ gTileset_Lilycove:: .4byte gMetatiles_Lilycove .4byte gMetatileAttributes_Lilycove .4byte InitTilesetAnim_Lilycove + .2byte 0 .align 2 gTileset_Mossdeep:: - .byte TRUE @ is compressed + .byte 0x11 @ is compressed, swapPalettes 8 .byte TRUE @ is secondary tileset - .2byte 0 @ lightPalettes 8,9 + .2byte 0x4 @ lightPalettes 8 .4byte gTilesetTiles_Mossdeep .4byte gTilesetPalettes_Mossdeep .4byte gMetatiles_Mossdeep @@ -129,10 +130,11 @@ gTileset_EverGrande:: .4byte gMetatiles_EverGrande .4byte gMetatileAttributes_EverGrande .4byte InitTilesetAnim_EverGrande + .2byte 0 .align 2 gTileset_Pacifidlog:: - .byte TRUE @ is compressed + .byte 0x21 @ is compressed, swapPalettes 9 .byte TRUE @ is secondary tileset .2byte 8 @ lightPalettes 9 .4byte gTilesetTiles_Pacifidlog @@ -143,7 +145,7 @@ gTileset_Pacifidlog:: .align 2 gTileset_Sootopolis:: - .byte TRUE @ is compressed + .byte 5 @ is compressed, swapPalettes 6 .byte TRUE @ is secondary tileset .2byte 0x101 @ lightPalettes 6, customLights 6 .4byte gTilesetTiles_Sootopolis diff --git a/data/tilesets/primary/general/metatile_attributes.bin b/data/tilesets/primary/general/metatile_attributes.bin index d9cd29016d792fb568494dbf2f820100081a14f8..552dafb603a737f14fa19094994e2dfb92163764 100644 GIT binary patch delta 56 ocmZqRXyBM2t}DR6z{G$6i~@`d%m^+615h3c1TqCSy6j;F0Cb=PSpWb4 delta 56 ncmZqRXyBM2uFJr{zy!oFz{tSJzzpMnXaP7!Ad_LE%N}L`Z!iQY diff --git a/data/tilesets/primary/general/metatiles.bin b/data/tilesets/primary/general/metatiles.bin index af899bcc5efa4bdd3ab1f418b371a866441207c9..813543f580749b6863bb474c80764044624545a6 100644 GIT binary patch delta 111 zcmZp0XmFUYhh@3La+iq*Dp_Fh6|<%P6x_@S6Mmy=1mA0{~x$BLV;b delta 111 zcmZp0XmFUYhlPQGfo0->3NSs{hVc%F!LV6|>6xSlvjVdMlR|Ugw7}-Tus|jt55%7i fbK0veuN&RLonQhDfrW6@% diff --git a/data/tilesets/primary/general/palettes/04.pal b/data/tilesets/primary/general/palettes/04.pal index 11ebd16a6..57d4faa34 100644 --- a/data/tilesets/primary/general/palettes/04.pal +++ b/data/tilesets/primary/general/palettes/04.pal @@ -1,12 +1,12 @@ JASC-PAL 0100 16 -24 41 82 -248 0 248 +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 80 104 208 65 90 189 @@ -16,4 +16,4 @@ JASC-PAL 139 164 222 106 131 213 82 106 213 -248 0 248 +96 168 232 diff --git a/data/tilesets/primary/general/palettes/13.pal b/data/tilesets/primary/general/palettes/13.pal index 4b0812f09..73fec5261 100644 --- 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 17426ab80e8fe2434bc9ecefbc8e063fd4e6d09a..b22b3f1fcbf3dc7f0fd63f893ee07326fd965f1f 100644 GIT binary patch literal 7658 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 Y2juoiOYAb5z5oCK07*qoM6N<$f{x@yJpcdz literal 7622 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 diff --git a/data/tilesets/secondary/dewford/metatile_attributes.bin b/data/tilesets/secondary/dewford/metatile_attributes.bin index 67ee25d405026191260b7a7cfc078b007db4af1d..158238664fe74c5543b5e0374f4996b1eb3c441c 100644 GIT binary patch delta 28 dcmeyy`i*sht)Kt{1A_n%fdzd?V)Q%3Hf_Fh6|<%P6x_@+kxr>L|cIBVe*@+n9W2097!ft delta 117 zcmdm>zd?V)Q%3GX$;TKVfMxOr#zO8xsmF?gii3bcER%DXj(JD~N(6EQHU~}v;xHf! i!k-T0hYO|&BKU2A>45=oemhV;K(qx({pKoWGZ6qYsUj-? diff --git a/data/tilesets/secondary/dewford/palettes/12.pal b/data/tilesets/secondary/dewford/palettes/12.pal index cf04ad17c..4b0812f09 100644 --- a/data/tilesets/secondary/dewford/palettes/12.pal +++ b/data/tilesets/secondary/dewford/palettes/12.pal @@ -1,19 +1,19 @@ JASC-PAL 0100 16 -0 224 0 -0 0 0 -222 230 238 -189 205 230 -156 180 222 -131 131 139 -98 98 123 -65 74 106 -152 176 216 -115 189 246 -98 172 238 0 0 0 0 0 0 -213 180 106 -205 156 82 +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 diff --git a/data/tilesets/secondary/dewford/tiles.png b/data/tilesets/secondary/dewford/tiles.png index 522864a973349519bbe3f1e52a202d929fe7d71c..2af1303c274bf1662d41d0b37c8b49772697f4c1 100644 GIT binary patch delta 3804 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 diff --git a/data/tilesets/secondary/fallarbor/palettes/00.pal b/data/tilesets/secondary/fallarbor/palettes/00.pal index ede0c60a1..87f9999ae 100644 --- 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/lavaridge/metatiles.bin b/data/tilesets/secondary/lavaridge/metatiles.bin index fd0314ed78ce4aad760ba39a6e6522e5f27bfdd9..c9bc71442ad26a06aab12352b676b63098f74c93 100644 GIT binary patch delta 15 XcmbPWKEZs$4^F1#j+=jRP7?$GHQWY= delta 15 XcmbPWKEZs$4^AcqhRwe?rwIZ8FU19) diff --git a/data/tilesets/secondary/lavaridge/palettes/06.pal b/data/tilesets/secondary/lavaridge/palettes/06.pal index 00e1478a7..a858e623d 100644 --- 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/lavaridge/tiles.png b/data/tilesets/secondary/lavaridge/tiles.png index 2f6898a0f7ca21efb0dfc0c1d608d8bae6931a27..03c832c37a14b993e7096921d0f27f8647945916 100644 GIT binary patch delta 30 kcmew^|6P7UDpSRrjp+^i0w#wmdKI;Vst0J-l9+yDRo delta 30 kcmew^|6P7UDpN+|#`Fe$fosPnZ(;xfPgg&ebxsLQ0K`@cm;e9( diff --git a/data/tilesets/secondary/lilycove/metatile_attributes.bin b/data/tilesets/secondary/lilycove/metatile_attributes.bin index 0f4e01b923280efa5742e9a869e9d172da7fb119..f31cc9a047db711eaaa07a556400e4425abe0ad0 100644 GIT binary patch delta 35 icmdnTx{q~(H>02c0|NsHg8-O4IfijIqrl`JjK=_MNe03I delta 26 icmdnTx{q~(H{-;QB9r48XH3>-WSe}Ok!vzL({=!cBMCVG diff --git a/data/tilesets/secondary/lilycove/metatiles.bin b/data/tilesets/secondary/lilycove/metatiles.bin index 15b22292776bcba749ccf955107603eb5fec08fa..f82bdff5c618f60de442abefd7d77737975195dc 100644 GIT binary patch delta 171 zcmeyM{Xu&}3>VXDr^#_#QcQ20CRcIA0jbTmxH_05)P{qb>vzU{+9b0}ABu<%xtk`2?jpc?U5oL<4ackeB8(`5oUWl~AWJr&OmjCy-_a qAn*zD36c;J2kM7dpys6JHu(;J8`M5upnb7$`+ycWZLSh1V+8=6J1Q9f delta 171 zcmeyM{Xu&}3>Omv!{j(FDG*h~6$hj?-{R_El3-w9Qeal_2~rn|35p2<@jy^RXmSdgfHZ?>pCF$g2_bPI5F2EI chLF0@@ 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 delta 3668 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 b8!#B01mc?pEe72NvkYb%oHSuDxe3GoKrbzT delta 100 zcmZp0cwoO_iv*9aQmm43l5vtlkVDwy0}=&1u}Z#R7!VW?HrYlpOTrf{?-=9|1X2r< hHcm200;=98nIZuZa106v3JeN{D+mbNY$dgf6#xJq9c%yq diff --git a/data/tilesets/secondary/mauville/tiles.png b/data/tilesets/secondary/mauville/tiles.png index 20da7198e89bf0890f4ec48261c9372907c2c4c6..09bab365772533a3970d7f4a44cb72d806e02b38 100644 GIT binary patch literal 6079 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 diff --git a/data/tilesets/secondary/mossdeep/metatiles.bin b/data/tilesets/secondary/mossdeep/metatiles.bin index 5fc527d0ff3080888be2712495687578893e0d5b..1fe4faf9c560e696faa866bee59490b27545cb12 100644 GIT binary patch delta 42 zcmV+_0M-BCIN&(2lnD&86SNbtld+Sxlem+Upb2mc!xO|410Vt*$CJpDvm6RU5}^MP A!TZLU;AFhZO2G$~m>9+BPUrSV?o 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 Qe>XokW^PNXJ;I3nKPyfrPXGV_ literal 4115 zcmWNUX*8650LA~$EQ}e0u};>pi^0e?mNd2q2`OY7qLl1ws2)^a6nZUXNh5^{*|H{6 zNwO~?Dvh0xL8A2L?bH38d(J)Qe!J%;+u2&+v7%T20RD)jnZsX&0e}Ds`InN%PG|iU zik*$4`QF~%w{PDjCntM*ds|yu%gf6P3JOwFQ^Uf-yuH0092|^|jWskhNF)*;AK%}Q z>G!E$0Pq$bF*A0IE?CV!dO_@6HY`>}{*|F8*jf|CaR-#^$a}@(X*oXoF;!5zWcp|+ zAzMZuJ>GevY`@;EqI($<7q1sEJ^Z3SnA3Zl4+}K;Xym-^_>|Dj+3%%ZNHZu%4uyO&-_4sG2u z8CjG~ak{+Y+^L9XhNxwBi=TKTYhNh$Z9zU%EjdDkA@hK%>WP^2jzi{#p4LL&!UX?5 zvDYzx6)hV+i!k!UBwkYE1`CD!8|TG9#Rm8qsU0LD4*RVk{_WP%pG0TO8LpxQ)6&24 zu);3f8}i*X%|p>d1SYgG<3Fw=o&O1~d`cB1<6!&{k6o59>;PXm;RJowp30D+*IcQ?+7UD#t+PfMDrm?j%`hNpy{^fRTS(^+aO|C4*N2G6kQ_0NHEfkT?EVEK zWJZd|ofH)nf6PBHmH1rsfwGDipbDet`;}EKQ*G_W>%jXJNpP0YR7`*z5jy6Alnz41 zQ;88*DB=R=>!@M^XVZ-#M5hcr^(cHV;CBk+f0D&_=Rm z16R{gt|DdWO!uRVDY^Of3pm!nzANN=jS{j`M;76C9|;@jnWq#PIdb+rkIzA!&EWM; z^^Ec1S6TL=r3C)cT6fUxV>9cEghnEnxzUD*uc=08d}Ir#?<5kEKjU`NPp#s(NIRa# zy<&Y1d=lc5#xWk+EK9)DT=d#Cb1-P&Q-fnsOk}Q7H(%MGM5HJx9^em38Zlr%FZ(ms zEp=(x|5AYEd)&^_y(_=Yt}`X9*4odxA^e;a6GR?jWgd;{^)EenqWESydBzO89%XSS zIN$b9tS+EJCor+l&5IB?U#)~xvUPEy3C(b05cIPTIY`s-1Pqkjivv>JH1C z=aE<+!ZdE%)#SxDqs`H{kY}>I(NLi5!lu0#E349dXg9L>W7qEZlb4InUwqWK;r{O3 z*6HT4HT!VVV(aBxS(CnPq@&SbN~<>IXm?H5_AZolJ3QcpE&~N>)maZyHr~0mLS-~h z=9n_w{GlREiEgw~3Q_(n`yYf%;)eiD>Kzxld=eOFXlG|wZ`;o)J}HFrnjNp&=ht>I zXor|<3#D}&jOY&JfR?*wuZ#RjrxDoYO*V6zO&s(OfUR4a3k9&>(I48zoK3Rf5gq)= ztpYpd*UvYpHS+?;Z4iCYptR2V$wZ*7(tsjAft_>_va1wo1&+ooawbjh6*GJSFIs29 z_G?u}Z?pm=O`ATc^PBJH?;m7O}SQdQj3+D5Q{+~k{h7a~U=qU6`g5Fuwh~Wi{N-U=X;$#125J^BEh)c0`}X;y zXCt4d;#fAv)t6QcG!Ds>zQg;v`X2pR9}uMZTQ8pwmM2?f(y-a9x>mM$@S+T*h;`tF z^cM?eM28xd)^|`B7Ha-4@U-uJa;he3{ZK~>IFr$ahkvE)&V;|j5rt}>dCwl8{5(dK z05)&uxIyUn6Q`#N#m5Q_k0fGyBVKMC!qEa^IYuc0Bf?BB!^Z2y(ft6Om!$BV{@O!r z#-349Rl(IU0lw_vez$oG-aZg%yApfc?=AM2F60oO_o_jGt~rDS=oJZTpW&n}u~DN3 zb**B+O|u&_a;d%a=V2Eywn^j$`6HL*DuWhdvDykK7|hH_1NrE8dkpm z>>X*)=s{zywa3-$6E^-gDWZGx$~y4TzYS{Tw5#NR>{E!M(=SHEAs96rbPFZ=XA9am zdF>0OcLf_I9(bZs^FU7q0Dx* z^8qD)nlW>U+>d}`pbs~n4{&^#Oz1ry>dgUS<)JDvO6lATzOXM8Whhdrje(sz_ts}; zk16|y&-~zC*&NpaU9m(31ew{TJDvu$cZ0qRBEk7Zv+L9_`72V zkeJ4MoNqosb9p3)uWNtyfA^@5Ep?ry?~AEo%OI_lsLL;DXjeXa8uLB}RV#)hw3GI-w5#LWozg-#2TDih&P$wdRLM z%%xzV%1uWx+JExC!^Z&Ihr;6H4^Mg8fOxS*?W;T~ywqUiA0hyRPX{kZj7}KwP&o_h+c1Y!ATRcxO!!^_$!A6-`0pLP9 z{QzR9F(pEfkcIWt%+0s_to8U^ChhO6$}Qj`lX&BhX{0%y;kOb-Y+Ud{8jn;XFCAeH zG9x%y4Ymc}ze8sP*$=7uol(h&!b|f=)XJUF!b3C>DGcoq8C+9Ss6*;sg2A1ezoD2N zmN41hgBx^04P zFrBSRAWSUn;_F99-)WY`e`+cOtjQ2gh6qvktSjV5f56k|6 zxLCVf!Se-{yEF`cE{pQO$jMx4;z3AVuIm10sx!u-qcBnEux8vU!K( zPY#ws5BfK)G{}hK-tUyJZ9nkLgSEJUIW|qjuz{mR>4?m%zsG^ z+|?6RRB1NC$12p6rJkOq9T1T=d!uTU=y7B!kbK84?CRCiDycV?Ka%skMUV(BtSANH zp7*+^?$w#!>FBImmQ;eQ)^thz*$X8`joB9So!5vjgfA1|=mrnw35l$;h7#P2LEJ40 z>4y0k`n#H3+ET#PHzRtYnHRl?0{jG%QfHrNrud}vpp2ZM97s^ISrU~08VnP180QN- z7~fw7w^I1;c^@Yr0^eU>zGh}7BoofqD145B(56pg9W&QYSy$>&Wpbrl7eI`W8QEMhgBo)@T2;R(x_npTu z6#)Nq@a2^1{bKW+|~6)elpJI&wXNWMO|_cS^S@<7#^!P)5u}1M1*6N2@)9Wpb^n@ z@Ow{G>17FuSwr4iHPsO3wz)lMKH2z7 zDS44g<^UTx9}L`s1Z~RZ`+4F@wV+Pb)um?gzFJ2eBy!Sa;)$cr&znElIniUwB7En^ z7(T=~2RN2kga*$mmeZxWH#(oUA&*-Fn%4Lkge8e~pv(0xQINtR`nVs&30iI*N z1lQJ3JKE)dwv(9;Qx3H^Ndq_v87BxbRzQ{~im#@e_fVDOufkjuqpCjWW6gVl-H-<_ z;-C8SY}wU~gWX*`ffInHz8F)XV11&=H~SC<;q158K~_)X`U4H>fE|`+FR<-#=raJ@ z^!|CNj0?C2Qs?GWpt!1BoBG+r8)5&c%#9+U(|@ZA#cET4=1?k#r0`&So%U}r;g$gS z#g&#ZJpGSi#9DZf&*ro*<&SYeIp;5C`#DN!YFg*wzCX4V8!itWcJc3p$~h4phd~co zlD5@Ng4u^$tQKod=8cMXZ4-fjA^ee$9Zb)RM~#}rw{%fc5uYp)~wQmp71}Z Ca4E_F diff --git a/data/tilesets/secondary/pacifidlog/palettes/02.pal b/data/tilesets/secondary/pacifidlog/palettes/02.pal index 4c41030f6..9ea109ce0 100644 --- 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/petalburg/palettes/02.pal b/data/tilesets/secondary/petalburg/palettes/02.pal index 4c41030f6..489761445 100644 --- 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/09.pal b/data/tilesets/secondary/petalburg/palettes/09.pal index c4a6e250a..1a6a5c771 100644 --- 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/rustboro/metatiles.bin b/data/tilesets/secondary/rustboro/metatiles.bin index 63ecf0306eed55fba51975805e7469fdd82f728a..649b09fac9aa91854c7410881856a96aee8e5aca 100644 GIT binary patch delta 177 zcmaE${Xu&}8!Ok0WD6lnA+NTX&66jvnn=w^_H42Q3e0Q<(aZ`nlJ^T(3Rwa9lkc%A z$uTgjNM-;6ueO!VQEib;o=qp3BAaeB?J(MD#K16Fj!i-(vT3K$E+7Y{l!0L-(5y%x zglGlvH%GCpV3U{@_^9bYQ*+=l$L7GW!0CYxnn3*Jj+>=;k8ubvDKG;elfpd1`G)HZ H*Bb%=xS>1? delta 160 zcmeyM{Xly|8!OkzCJP}32Cudm$&)9rnn;~&@@!%Nf*HvS43=*EATag^q770{*0?5D7w8LnpQDoC(IW`HE{Q^6Ub{R1+L^j<7N`n-y v0Gbuq1mc5uApYhkwiRp=51Jk|J!onUoEF#|7#8>t$OiGJ2X2<)J;nh5UMxSF diff --git a/data/tilesets/secondary/rustboro/tiles.png b/data/tilesets/secondary/rustboro/tiles.png index 3c71f263bbc5270db2f12d5b74d3c5c35d19e7e0..1cf8473a20fa80111fa74681b1f66eebe1b5ef79 100644 GIT binary patch delta 4004 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 Eg77eZ)&Kwi diff --git a/data/tilesets/secondary/slateport/metatile_attributes.bin b/data/tilesets/secondary/slateport/metatile_attributes.bin index d4894828bb7bc86e7d87bb144ca87610ca9b6bee..0f311a694f316031fc8829b1d3c72ae7fa4d39be 100644 GIT binary patch delta 36 kcmZ3(wuWtkJR_sPWCg}%K>-E^1_2-h0Wf>>7RCxj0C?;LzW@LL delta 36 jcmZ3(wuWtkJR>8+WCg}%K?WcY073{2BsXtitY8EHb!-KX diff --git a/data/tilesets/secondary/slateport/metatiles.bin b/data/tilesets/secondary/slateport/metatiles.bin index 0cb7f64acaf96c38d35e004426fe9fc0bfca9d57..3ba541bfbd4a2a77a00b1a692ed22bf48377f019 100644 GIT binary patch delta 241 zcmaE0^uTDt2Mz(bB-tdsB;F*IBGn?3BGaNxoFXhd%L0~#Tu!*0u-sv}%VY)K5>$Z& zyc#SqjLr>t9}}F# F4gkZUMKu5b delta 241 zcmaE0^uTDt2Mz%SG_Z+NgoTG$fm!8p!sUcz0n0)rEAW=^NCYAYEa25(0qNR&hW7;{ z7l@_NtkEpdJb52~5ts`S0&=YcPB;KfQeaXL2g<4g)i42hAU;SnNDqP!F#*Ph$b#f2 jI|;ftFe!jEs{=K`6o8b23_C6i1h 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 KZdk5Qi25H3171e} delta 6326 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 R`0sT9MitileTag == 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; @@ -1621,6 +1636,13 @@ 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, paletteOffset + 0x100, 32); diff --git a/gflib/sprite.h b/gflib/sprite.h index e53737981..6b952ab4e 100644 --- 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/object_events/palettes/light.pal b/graphics/object_events/palettes/light.pal index 3beca89bd..92a4477f7 100644 --- a/graphics/object_events/palettes/light.pal +++ b/graphics/object_events/palettes/light.pal @@ -2,18 +2,18 @@ JASC-PAL 0100 16 110 198 165 -255 213 18 -255 214 38 -254 217 39 -254 218 53 -255 220 65 -255 221 76 -255 223 86 -254 225 95 -254 228 104 -254 229 112 -254 230 120 -255 232 132 -255 235 148 -255 237 162 -255 240 176 +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 100644 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 100644 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/light.png b/graphics/object_events/pics/misc/light.png index d1a0402d102cf52e47a584f2feb56230d5b7debf..22687a7c0067cff356a2cd6a1ebef4e6d1115a9d 100644 GIT binary patch literal 6205 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 N6CBAt7?}Lse*nyl2|xe< literal 0 HcmV?d00001 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 100644 index 0000000000000000000000000000000000000000..42d19f51c6eb9cc16d70ae9e9d4b06063494da62 GIT binary patch literal 5378 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.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; - bool8 finished = TRUE; - // Ripped from RemoveObjectEventIfOutsideView - if (x >= left && x <= right - && y >= top && y <= bottom) - finished = FALSE; - finished = finished ? finished : gTimeOfDay != TIME_OF_DAY_NIGHT; - if (finished) { - 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; - } + 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 (gPlayerAvatar.tileTransitionState) { // As long as the second coefficient stays 12, shadows will not change - Weather_SetBlendCoeffs(7, 12); - sprite->invisible = FALSE; - } else { - Weather_SetBlendCoeffs(12, 12); - sprite->invisible = gSaveBlock2Ptr->playTimeVBlanks & 1; - } + 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 based on metatile behavior -static void SpawnLightSprite(s16 x, s16 y, s16 camX, s16 camY, u32 behavior) { - struct Sprite *sprite; - 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; - } - sprite = &gSprites[CreateSprite(&gFieldEffectObjectTemplate_BallLight, 0, 0, 0)]; - UpdateSpritePaletteByTemplate(&gFieldEffectObjectTemplate_BallLight, sprite); - GetMapCoordsFromSpritePos(x + camX, y + camY, &sprite->x, &sprite->y); - sprite->data[6] = x; - sprite->data[7] = y; - sprite->affineAnims = gDummySpriteAffineAnimTable; - sprite->affineAnimBeginning = TRUE; - 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->coordOffsetEnabled = TRUE; - sprite->x += 8; - sprite->y += 22 + sprite->centerToCornerVecY; +// 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) { - s16 left = gSaveBlock1Ptr->pos.x - 2; - s16 right = gSaveBlock1Ptr->pos.x + 17; - s16 top = gSaveBlock1Ptr->pos.y; - s16 bottom = gSaveBlock1Ptr->pos.y + 16; - u8 i = 0; - s16 x, y; - u32 behavior; - if (gTimeOfDay != TIME_OF_DAY_NIGHT) - return; - for (i = 0; gLightMetatiles[i].x > 0; i++) { - x = gLightMetatiles[i].x; - y = gLightMetatiles[i].y; - if (x >= left && x <= right && y >= top && y <= bottom) { - behavior = MapGridGetMetatileBehaviorAt(x, y); - if (behavior == 0x04) // TODO: Use an actual constant for light metatiles - SpawnLightSprite(x, y, camX, camY, behavior); + 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) @@ -2080,12 +2122,14 @@ 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); + } } } - TrySpawnLightSprites(cameraX, cameraY); } void RemoveObjectEventsOutsideView(void) diff --git a/src/field_weather.c b/src/field_weather.c index 2c0fc5ca8..fb07ec41f 100644 --- a/src/field_weather.c +++ b/src/field_weather.c @@ -466,18 +466,21 @@ static void ApplyGammaShift(u8 startPalIndex, u8 numPalettes, s8 gammaIndex) if (gammaIndex > 0) { + // Create the palette mask + u32 palettes = PALETTES_ALL; + numPalettes += startPalIndex; + palettes = (palettes >> startPalIndex) << startPalIndex; + palettes = (palettes << (32-numPalettes)) >> (32-numPalettes); + numPalettes -= startPalIndex; gammaIndex--; palOffset = startPalIndex * 16; - CpuFastCopy(gPlttBufferUnfaded + palOffset, gPlttBufferFaded + palOffset, 32 * numPalettes); - numPalettes += startPalIndex; + UpdateAltBgPalettes(palettes & PALETTES_BG); // Thunder gamma-shift looks bad on night-blended palettes, so ignore time blending in some situations - if (!(gammaIndex > 3 && gWeatherPtr->currWeather == WEATHER_RAIN_THUNDERSTORM)) { - // Create the palette mask - u32 palettes = PALETTES_ALL; - palettes = (palettes >> startPalIndex) << startPalIndex; - palettes = (palettes << (32-numPalettes)) >> (32-numPalettes); + if (!(gammaIndex > 3 && gWeatherPtr->currWeather == WEATHER_RAIN_THUNDERSTORM) && MapHasNaturalLight(gMapHeader.mapType)) UpdatePalettesWithTime(palettes); - } + else + CpuFastCopy(gPlttBufferUnfaded + palOffset, gPlttBufferFaded + palOffset, 32 * numPalettes); + numPalettes += startPalIndex; curPalIndex = startPalIndex; // Loop through the speficied palette range and apply necessary gamma shifts to the colors. while (curPalIndex < numPalettes) @@ -546,6 +549,7 @@ static void ApplyGammaShift(u8 startPalIndex, u8 numPalettes, s8 gammaIndex) numPalettes += startPalIndex; palettes = (palettes >> startPalIndex) << startPalIndex; palettes = (palettes << (32-numPalettes)) >> (32-numPalettes); + UpdateAltBgPalettes(palettes & PALETTES_BG); UpdatePalettesWithTime(palettes); } else { // copy CpuFastCopy(gPlttBufferUnfaded + startPalIndex * 16, gPlttBufferFaded + startPalIndex * 16, numPalettes * 16 * sizeof(u16)); @@ -570,6 +574,7 @@ static void ApplyGammaShiftWithBlend(u8 startPalIndex, u8 numPalettes, s8 gammaI 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 (sPaletteGammaTypes[curPalIndex] == GAMMA_NONE) @@ -670,6 +675,7 @@ static void ApplyFogBlend(u8 blendCoeff, u16 blendColor) // TODO: Optimize this u16 curPalIndex; // First blend all palettes with time + UpdateAltBgPalettes(PALETTES_BG); CpuFastCopy(gPlttBufferUnfaded, gPlttBufferFaded, 0x400); UpdatePalettesWithTime(PALETTES_ALL); // Then blend tile palettes [0, 12] faded->faded @@ -816,6 +822,7 @@ void FadeScreen(u8 mode, s8 delay) 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], @@ -883,11 +890,15 @@ void UpdateSpritePaletteWithWeather(u8 spritePaletteIndex, bool8 allowFog) } } -void ApplyWeatherGammaShiftToPal(u8 paletteIndex) +void ApplyWeatherGammaShiftToPal(u8 paletteIndex) // now unused / obselete { ApplyGammaShift(paletteIndex, 1, gWeatherPtr->gammaIndex); } +void ApplyWeatherGammaShiftToPals(u8 startPalIndex, u8 numPalettes) { + ApplyGammaShift(startPalIndex, numPalettes, gWeatherPtr->gammaIndex); +} + // Unused static bool8 IsFirstFrameOfWeatherFadeIn(void) { diff --git a/src/fieldmap.c b/src/fieldmap.c index 245562c93..7fb479ae2 100644 --- a/src/fieldmap.c +++ b/src/fieldmap.c @@ -30,7 +30,6 @@ EWRAM_DATA struct MapHeader gMapHeader = {0}; EWRAM_DATA struct Camera gCamera = {0}; EWRAM_DATA static struct ConnectionFlags gMapConnectionFlags = {0}; EWRAM_DATA static u32 sFiller = 0; // without this, the next file won't align properly -EWRAM_DATA struct Coords16 gLightMetatiles[32] = {0}; struct BackupMapLayout gBackupMapLayout; @@ -63,7 +62,6 @@ static bool8 IsCoordInIncomingConnectingMap(int coord, int srcMax, int destMax, #define AreCoordsWithinMapGridBounds(x, y) (x >= 0 && x < gBackupMapLayout.width && y >= 0 && y < gBackupMapLayout.height) #define MapGridGetTileAt(x, y) (AreCoordsWithinMapGridBounds(x, y) ? gBackupMapLayout.map[x + gBackupMapLayout.width * y] : MapGridGetBorderTileAt(x, y)) -static void CacheLightMetatiles(void); struct MapHeader const *const GetMapHeaderFromConnection(struct MapConnection *connection) { @@ -75,7 +73,6 @@ void InitMap(void) InitMapLayoutData(&gMapHeader); SetOccupiedSecretBaseEntranceMetatiles(gMapHeader.events); RunOnLoadMapScript(); - CacheLightMetatiles(); } void InitMapFromSavedGame(void) @@ -85,7 +82,6 @@ void InitMapFromSavedGame(void) SetOccupiedSecretBaseEntranceMetatiles(gMapHeader.events); LoadSavedMapView(); RunOnLoadMapScript(); - CacheLightMetatiles(); UpdateTVScreensOnMap(gBackupMapLayout.width, gBackupMapLayout.height); } @@ -382,23 +378,6 @@ u32 MapGridGetMetatileBehaviorAt(int x, int y) return GetBehaviorByMetatileId(metatile) & METATILE_BEHAVIOR_MASK; } -// Caches light metatile coordinates -static void CacheLightMetatiles(void) { // TODO: Better way to dynamically generate lights - u8 i = 0; - s16 x, y; - for (x = 0; x < gBackupMapLayout.width; x++) { - for (y = 0; y < gBackupMapLayout.height; y++) { - if (MapGridGetMetatileBehaviorAt(x, y) == 0x04) { - gLightMetatiles[i].x = x; - gLightMetatiles[i].y = y; - i++; - } - } - } - gLightMetatiles[i].x = -1; - gLightMetatiles[i].y = -1; -} - u8 MapGridGetMetatileLayerTypeAt(int x, int y) { u16 metatile = MapGridGetMetatileIdAt(x, y); diff --git a/src/overworld.c b/src/overworld.c index b9b69acff..332fa6d8c 100644 --- a/src/overworld.c +++ b/src/overworld.c @@ -184,7 +184,6 @@ static u16 (*sPlayerKeyInterceptCallback)(u32); static bool8 sReceivingFromLink; static u8 sRfuKeepAliveTimer; -static u16 sTimeUpdateCounter; // playTimeVBlanks will eventually overflow, so this is used to update TOD // IWRAM common @@ -199,6 +198,7 @@ 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; @@ -822,8 +822,7 @@ void LoadMapFromCameraTransition(u8 mapGroup, u8 mapNum) CopySecondaryTilesetToVramUsingHeap(gMapHeader.mapLayout); LoadSecondaryTilesetPalette(gMapHeader.mapLayout); - for (paletteIndex = 6; paletteIndex < 13; paletteIndex++) // TODO: Optimize gamma shifts - ApplyWeatherGammaShiftToPal(paletteIndex); + ApplyWeatherGammaShiftToPals(6, 6); // palettes [6,12] InitSecondaryTilesetAnimation(); UpdateLocationHistoryForRoamer(); @@ -1481,29 +1480,34 @@ u8 UpdateTimeOfDay(void) { minutes = gLocalTime.minutes; if (hours >= 22 || hours < 4) { // night currentTimeBlend.weight = 256; + currentTimeBlend.altWeight = 0; return gTimeOfDay = currentTimeBlend.time0 = currentTimeBlend.time1 = TIME_OF_DAY_NIGHT; } else if (hours >= 4 && 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; return gTimeOfDay = TIME_OF_DAY_DAY; } else if (hours >= 7 && 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; return gTimeOfDay = TIME_OF_DAY_DAY; } else if (hours >= 10 && hours < 18) { // day - currentTimeBlend.weight = 256; + currentTimeBlend.weight = currentTimeBlend.altWeight = 256; return gTimeOfDay = currentTimeBlend.time0 = currentTimeBlend.time1 = TIME_OF_DAY_DAY; } else if (hours >= 18 && 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; return gTimeOfDay = TIME_OF_DAY_TWILIGHT; } else if (hours >= 20 && 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; return gTimeOfDay = TIME_OF_DAY_NIGHT; } else { // This should never occur currentTimeBlend.weight = 256; @@ -1516,16 +1520,41 @@ bool8 MapHasNaturalLight(u8 mapType) { // Whether a map type is naturally lit/ou || 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)) { - u16 i; - u16 tempPaletteBuffer[16]; + u32 i; u32 mask = 1 << 16; - 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 tile palettes [13,15] + 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, @@ -1565,18 +1594,20 @@ static void OverworldBasic(void) UpdateTilesetAnimations(); DoScheduledBgTilemapCopiesToVram(); // Every minute if no palette fade is active, update TOD blending as needed - if (!(gPaletteFade.active || (++sTimeUpdateCounter % 3600))) { + if (!(gPaletteFade.active || (++gTimeUpdateCounter % 3600))) { struct TimeBlendSettings cachedBlend = { .time0 = currentTimeBlend.time0, .time1 = currentTimeBlend.time1, .weight = currentTimeBlend.weight, }; - sTimeUpdateCounter = 0; + gTimeUpdateCounter = 0; UpdateTimeOfDay(); if (cachedBlend.time0 != currentTimeBlend.time0 || cachedBlend.time1 != currentTimeBlend.time1 - || cachedBlend.weight != currentTimeBlend.weight) - UpdatePalettesWithTime(PALETTES_ALL); + || cachedBlend.weight != currentTimeBlend.weight) { + UpdateAltBgPalettes(PALETTES_BG); + UpdatePalettesWithTime(PALETTES_ALL); + } } } diff --git a/src/palette.c b/src/palette.c index 9ea27d0f2..2c9db82e2 100644 --- a/src/palette.c +++ b/src/palette.c @@ -1211,6 +1211,31 @@ void TimeMixPalettes(u32 palettes, u16 *src, u16 *dst, struct BlendSettings *ble } 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 + } +} + void BlendPalettesUnfaded(u32 selectedPalettes, u8 coeff, u16 color) { void *src = gPlttBufferUnfaded; diff --git a/src/trainer_see.c b/src/trainer_see.c index 3bf4e0c2f..0e478c941 100644 --- a/src/trainer_see.c +++ b/src/trainer_see.c @@ -287,7 +287,7 @@ static const union AnimCmd *const sSpriteAnimTable_Emotes[] = { // TODO: Move these declarations into even_object_movement.h #define OBJ_EVENT_PAL_TAG_MAY 0x1110 -#define OBJ_EVENT_PAL_TAG_EMOTES 0x8002 +#define OBJ_EVENT_PAL_TAG_EMOTES 0x8003 static const struct SpriteTemplate sSpriteTemplate_ExclamationQuestionMark = { From ea6c1a9e40afb2414c9d692b91e4047d8dc634cf Mon Sep 17 00:00:00 2001 From: Ariel A <24759293+aarant@users.noreply.github.com> Date: Sat, 16 Apr 2022 17:33:36 -0400 Subject: [PATCH 153/241] Optimized UpdateTimeOfDay. --- src/overworld.c | 19 ++++++++++--------- 1 file changed, 10 insertions(+), 9 deletions(-) diff --git a/src/overworld.c b/src/overworld.c index 332fa6d8c..9d929a244 100644 --- a/src/overworld.c +++ b/src/overworld.c @@ -1474,44 +1474,45 @@ const struct BlendSettings gTimeOfDayBlend[] = }; u8 UpdateTimeOfDay(void) { - s8 hours, minutes; + s32 hours, minutes; RtcCalcLocalTime(); hours = gLocalTime.hours; minutes = gLocalTime.minutes; - if (hours >= 22 || hours < 4) { // night + if (hours < 4) { // night currentTimeBlend.weight = 256; currentTimeBlend.altWeight = 0; return gTimeOfDay = currentTimeBlend.time0 = currentTimeBlend.time1 = TIME_OF_DAY_NIGHT; - } else if (hours >= 4 && hours < 7) { // night->twilight + } 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; return gTimeOfDay = TIME_OF_DAY_DAY; - } else if (hours >= 7 && hours < 10) { // twilight->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; return gTimeOfDay = TIME_OF_DAY_DAY; - } else if (hours >= 10 && hours < 18) { // day + } else if (hours < 18) { // day currentTimeBlend.weight = currentTimeBlend.altWeight = 256; return gTimeOfDay = currentTimeBlend.time0 = currentTimeBlend.time1 = TIME_OF_DAY_DAY; - } else if (hours >= 18 && hours < 20) { // day->twilight + } 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; return gTimeOfDay = TIME_OF_DAY_TWILIGHT; - } else if (hours >= 20 && hours < 22) { // twilight->night + } 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; return gTimeOfDay = TIME_OF_DAY_NIGHT; - } else { // This should never occur + } else { // 22-24, night currentTimeBlend.weight = 256; - return gTimeOfDay = currentTimeBlend.time0 = currentTimeBlend.time1 = TIME_OF_DAY_DAY; + currentTimeBlend.altWeight = 0; + return gTimeOfDay = currentTimeBlend.time0 = currentTimeBlend.time1 = TIME_OF_DAY_NIGHT; } } From bc2b50cd2ea4cce1835f924390072fc0740c343b Mon Sep 17 00:00:00 2001 From: Ariel A <24759293+aarant@users.noreply.github.com> Date: Sat, 16 Apr 2022 17:57:20 -0400 Subject: [PATCH 154/241] Added LoadPaletteFast function. --- gflib/sprite.c | 2 +- include/fieldmap.h | 2 +- include/palette.h | 1 + src/fieldmap.c | 24 +++++++++++++++--------- src/overworld.c | 2 +- src/palette.c | 7 +++++++ 6 files changed, 26 insertions(+), 12 deletions(-) diff --git a/gflib/sprite.c b/gflib/sprite.c index 7c2b759b2..de7c4c307 100644 --- a/gflib/sprite.c +++ b/gflib/sprite.c @@ -1645,7 +1645,7 @@ u8 LoadSpritePaletteInSlot(const struct SpritePalette *palette, u8 paletteNum) { void DoLoadSpritePalette(const u16 *src, u16 paletteOffset) { - LoadPalette(src, paletteOffset + 0x100, 32); + LoadPaletteFast(src, paletteOffset + 0x100, 32); } u8 AllocSpritePalette(u16 tag) diff --git a/include/fieldmap.h b/include/fieldmap.h index 28da8da2a..9962c2cca 100644 --- a/include/fieldmap.h +++ b/include/fieldmap.h @@ -42,7 +42,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/palette.h b/include/palette.h index c1b7dff55..d59ccbd90 100644 --- a/include/palette.h +++ b/include/palette.h @@ -66,6 +66,7 @@ extern u16 gPlttBufferFaded[PLTT_BUFFER_SIZE]; void LoadCompressedPalette(const u32 *, u16, u16); void LoadPalette(const void *, u16, u16); +void LoadPaletteFast(const void *src, u16 offset, u16 size); void FillPalette(u16, u16, u16); void TransferPlttBuffer(void); u8 UpdatePaletteFade(void); diff --git a/src/fieldmap.c b/src/fieldmap.c index 7fb479ae2..bc494b599 100644 --- a/src/fieldmap.c +++ b/src/fieldmap.c @@ -870,9 +870,8 @@ static void FieldmapUnkDummy(void) } -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; @@ -880,15 +879,22 @@ void LoadTilesetPalette(struct Tileset const *tileset, u16 destOffset, u16 size) { if (tileset->isSecondary == FALSE) { - LoadPalette(&black, destOffset, 2); - LoadPalette(((u16*)tileset->palettes) + 1, destOffset + 1, size - 2); + // LoadPalette(&black, destOffset, 2); + if (skipFaded) + CpuFastCopy(tileset->palettes, &gPlttBufferUnfaded[destOffset], size); + else + LoadPaletteFast(((u16*)tileset->palettes), destOffset, size); + gPlttBufferFaded[destOffset] = gPlttBufferUnfaded[destOffset] = RGB_BLACK; // why does it have to be black? FieldmapPaletteDummy(destOffset + 1, (size - 2) >> 1); low = 0; high = NUM_PALS_IN_PRIMARY; } else if (tileset->isSecondary == TRUE) { - LoadPalette(((u16*)tileset->palettes) + (NUM_PALS_IN_PRIMARY * 16), destOffset, size); + if (skipFaded) + CpuFastCopy(((u16*)tileset->palettes) + (NUM_PALS_IN_PRIMARY * 16), &gPlttBufferUnfaded[destOffset], size); + else + LoadPaletteFast(((u16*)tileset->palettes) + (NUM_PALS_IN_PRIMARY * 16), destOffset, size); low = NUM_PALS_IN_PRIMARY; high = NUM_PALS_TOTAL; } @@ -928,12 +934,12 @@ void CopySecondaryTilesetToVramUsingHeap(struct MapLayout const *mapLayout) static void LoadPrimaryTilesetPalette(struct MapLayout const *mapLayout) { - LoadTilesetPalette(mapLayout->primaryTileset, 0, NUM_PALS_IN_PRIMARY * 16 * 2); + LoadTilesetPalette(mapLayout->primaryTileset, 0, NUM_PALS_IN_PRIMARY * 16 * 2, FALSE); } -void LoadSecondaryTilesetPalette(struct MapLayout const *mapLayout) +void LoadSecondaryTilesetPalette(struct MapLayout const *mapLayout, bool8 skipFaded) { - LoadTilesetPalette(mapLayout->secondaryTileset, NUM_PALS_IN_PRIMARY * 16, (NUM_PALS_TOTAL - NUM_PALS_IN_PRIMARY) * 16 * 2); + LoadTilesetPalette(mapLayout->secondaryTileset, NUM_PALS_IN_PRIMARY * 16, (NUM_PALS_TOTAL - NUM_PALS_IN_PRIMARY) * 16 * 2, skipFaded); } void CopyMapTilesetsToVram(struct MapLayout const *mapLayout) @@ -950,6 +956,6 @@ void LoadMapTilesetPalettes(struct MapLayout const *mapLayout) if (mapLayout) { LoadPrimaryTilesetPalette(mapLayout); - LoadSecondaryTilesetPalette(mapLayout); + LoadSecondaryTilesetPalette(mapLayout, FALSE); } } diff --git a/src/overworld.c b/src/overworld.c index 9d929a244..c78a409c2 100644 --- a/src/overworld.c +++ b/src/overworld.c @@ -820,7 +820,7 @@ 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 ApplyWeatherGammaShiftToPals(6, 6); // palettes [6,12] diff --git a/src/palette.c b/src/palette.c index 2c9db82e2..6cb4f77df 100644 --- a/src/palette.c +++ b/src/palette.c @@ -96,6 +96,13 @@ 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) { + 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); From 2d376d83178e0f05761181146e413a18daa1ee68 Mon Sep 17 00:00:00 2001 From: Ariel A <24759293+aarant@users.noreply.github.com> Date: Mon, 18 Apr 2022 00:37:15 -0400 Subject: [PATCH 155/241] Removed shadows in puddles or sand piles. Optimized shadow tile loading. --- include/constants/field_effects.h | 6 ++++++ src/data/field_effects/field_effect_objects.h | 8 ++++---- src/event_object_movement.c | 2 +- src/field_effect_helpers.c | 7 +++++-- 4 files changed, 16 insertions(+), 7 deletions(-) diff --git a/include/constants/field_effects.h b/include/constants/field_effects.h index 65ccc3ec7..0f00ac653 100644 --- a/include/constants/field_effects.h +++ b/include/constants/field_effects.h @@ -128,4 +128,10 @@ #define FLDEFF_PAL_TAG_HOF_MONITOR 0x1010 #define FLDEFF_PAL_TAG_UNKNOWN 0x1011 +// tile tags, for field effects that may have many copies on screen at once +#define FLDEFF_TILE_TAG_SHADOW_SMALL 0x1300 +#define FLDEFF_TILE_TAG_SHADOW_MEDIUM 0x1301 +#define FLDEFF_TILE_TAG_SHADOW_LARGE 0x1302 +#define FLDEFF_TILE_TAG_SHADOW_EXTRA_LARGE 0x1303 + #endif // GUARD_FIELD_EFFECT_CONSTANTS_H diff --git a/src/data/field_effects/field_effect_objects.h b/src/data/field_effects/field_effect_objects.h index 219700cdd..a61bcb036 100755 --- a/src/data/field_effects/field_effect_objects.h +++ b/src/data/field_effects/field_effect_objects.h @@ -69,7 +69,7 @@ const struct SpriteTemplate *const gFieldEffectLightTemplates[] = { }; const struct SpriteTemplate gFieldEffectObjectTemplate_ShadowSmall = { - .tileTag = TAG_NONE, + .tileTag = FLDEFF_TILE_TAG_SHADOW_SMALL, .paletteTag = TAG_WEATHER_START, .oam = &gObjectEventBaseOam_8x8, .anims = sAnimTable_Shadow, @@ -79,7 +79,7 @@ const struct SpriteTemplate gFieldEffectObjectTemplate_ShadowSmall = { }; const struct SpriteTemplate gFieldEffectObjectTemplate_ShadowMedium = { - .tileTag = TAG_NONE, + .tileTag = FLDEFF_TILE_TAG_SHADOW_MEDIUM, .paletteTag = TAG_WEATHER_START, .oam = &gObjectEventBaseOam_16x8, .anims = sAnimTable_Shadow, @@ -89,7 +89,7 @@ const struct SpriteTemplate gFieldEffectObjectTemplate_ShadowMedium = { }; const struct SpriteTemplate gFieldEffectObjectTemplate_ShadowLarge = { - .tileTag = TAG_NONE, + .tileTag = FLDEFF_TILE_TAG_SHADOW_LARGE, .paletteTag = TAG_WEATHER_START, .oam = &gObjectEventBaseOam_32x8, .anims = sAnimTable_Shadow, @@ -99,7 +99,7 @@ const struct SpriteTemplate gFieldEffectObjectTemplate_ShadowLarge = { }; const struct SpriteTemplate gFieldEffectObjectTemplate_ShadowExtraLarge = { - .tileTag = TAG_NONE, + .tileTag = FLDEFF_TILE_TAG_SHADOW_EXTRA_LARGE, .paletteTag = TAG_WEATHER_START, .oam = &gObjectEventBaseOam_64x32, .anims = sAnimTable_Shadow, diff --git a/src/event_object_movement.c b/src/event_object_movement.c index c3eb81622..fb9ca34d9 100644 --- a/src/event_object_movement.c +++ b/src/event_object_movement.c @@ -8996,7 +8996,7 @@ static void DoFlaggedGroundEffects(struct ObjectEvent *objEvent, struct Sprite * for (i = 0; i < ARRAY_COUNT(sGroundEffectFuncs); i++, flags >>= 1) if (flags & 1) sGroundEffectFuncs[i](objEvent, sprite); - if (!(gWeatherPtr->noShadows || objEvent->inHotSprings)) + if (!(gWeatherPtr->noShadows || objEvent->inHotSprings || objEvent->inSandPile || MetatileBehavior_IsPuddle(objEvent->currentMetatileBehavior))) GroundEffect_Shadow(objEvent, sprite); } diff --git a/src/field_effect_helpers.c b/src/field_effect_helpers.c index 0418a1ef1..91efae9e1 100755 --- a/src/field_effect_helpers.c +++ b/src/field_effect_helpers.c @@ -314,8 +314,8 @@ u32 FldEff_Shadow(void) u8 objectEventId; const struct ObjectEventGraphicsInfo *graphicsInfo; u8 spriteId; - u8 i; - for (i = 0; i < MAX_SPRITES; i++) { + 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; @@ -324,6 +324,7 @@ u32 FldEff_Shadow(void) graphicsInfo = GetObjectEventGraphicsInfo(gObjectEvents[objectEventId].graphicsId); 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); if (spriteId != MAX_SPRITES) { @@ -359,8 +360,10 @@ void UpdateShadowFieldEffect(struct Sprite *sprite) 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)) { From acfd11bb217b57a8720b61cdf0ba7d0ecb3c1323 Mon Sep 17 00:00:00 2001 From: Ariel A <24759293+aarant@users.noreply.github.com> Date: Mon, 18 Apr 2022 22:43:46 -0400 Subject: [PATCH 156/241] Ignored species shiny/form bits in ScrCmd_bufferspeciesname. --- src/scrcmd.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/scrcmd.c b/src/scrcmd.c index ae2cbfc33..b53ae95b9 100644 --- a/src/scrcmd.c +++ b/src/scrcmd.c @@ -1589,7 +1589,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; From f94a92fe1f7687115e7da8fe35cb6480f8f2f7f2 Mon Sep 17 00:00:00 2001 From: Ariel A <24759293+aarant@users.noreply.github.com> Date: Mon, 18 Apr 2022 23:17:41 -0400 Subject: [PATCH 157/241] Fixed shadow brightness during battle transition. --- include/field_weather.h | 1 + src/battle_transition.c | 47 ++++++++++++++++++++++++++++---------- src/field_weather_effect.c | 2 +- 3 files changed, 37 insertions(+), 13 deletions(-) diff --git a/include/field_weather.h b/include/field_weather.h index 091080f54..677155c95 100644 --- a/include/field_weather.h +++ b/include/field_weather.h @@ -193,6 +193,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/src/battle_transition.c b/src/battle_transition.c index 1e421b5e4..b940eb39f 100644 --- 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; @@ -2434,7 +2435,7 @@ static bool8 Mugshot_WaitStartPlayerSlide(struct Task *task) { sTransitionData->BG0HOFS_Lower -= 8; sTransitionData->BG0HOFS_Upper += 8; - + // Start player's slide in once the opponent is finished if (IsTrainerPicSlideDone(task->tOpponentSpriteId)) { @@ -2770,7 +2771,7 @@ static bool8 Slice_Main(struct Task *task) { u16 *storeLoc1 = &gScanlineEffectRegBuffers[0][i]; u16 *storeLoc2 = &gScanlineEffectRegBuffers[0][i + DISPLAY_HEIGHT]; - + // Alternate rows if (i % 2) { @@ -3251,7 +3252,7 @@ static bool8 RectangularSpiral_Main(struct Task *task) // The line moved to a new position, draw the tile. done = FALSE; position = sRectangularSpiralLines[j].position; - + // Invert position for the two lines that start at the bottom. if ((j % 2) == 1) position = 637 - position; @@ -3281,7 +3282,7 @@ static bool8 RectangularSpiral_End(struct Task *task) static bool16 UpdateRectangularSpiralLine(const s16 * const *moveDataTable, struct RectangularSpiralLine *line) { const s16 *moveData = moveDataTable[line->state]; - + // Has spiral finished? // Note that most move data arrays endsin SPIRAL_END but it is // only ever reached on the final array of spiraling outward. @@ -3294,9 +3295,9 @@ static bool16 UpdateRectangularSpiralLine(const s16 * const *moveDataTable, stru sDebug_RectangularSpiralData = moveData[2]; sDebug_RectangularSpiralData = moveData[3]; - // Note that for the two lines originating at the bottom the + // Note that for the two lines originating at the bottom the // position is inverted, so the directions are flipped. - // i.e. position += 1 is right for the top lines and left + // i.e. position += 1 is right for the top lines and left // for their inverted partners on the bottom. switch (moveData[0]) { @@ -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) { @@ -4170,13 +4192,13 @@ static void InitBlackWipe(s16 *data, s16 startX, s16 startY, s16 endX, s16 endY, static bool8 UpdateBlackWipe(s16 *data, bool8 xExact, bool8 yExact) { u8 numFinished; - + if (tWipeXDist > tWipeYDist) { // X has further to move, move it first tWipeCurrX += tWipeXMove; - // If it has been far enough since Y's + // If it has been far enough since Y's // last move then move it too tWipeTemp += tWipeYDist; if (tWipeTemp > tWipeXDist) @@ -4190,7 +4212,7 @@ static bool8 UpdateBlackWipe(s16 *data, bool8 xExact, bool8 yExact) // Y has further to move, move it first tWipeCurrY += tWipeYMove; - // If it has been far enough since X's + // If it has been far enough since X's // last move then move it too tWipeTemp += tWipeXDist; if (tWipeTemp > tWipeYDist) @@ -4201,9 +4223,9 @@ static bool8 UpdateBlackWipe(s16 *data, bool8 xExact, bool8 yExact) } numFinished = 0; - + // Has X coord reached end? - if ((tWipeXMove > 0 && tWipeCurrX >= tWipeEndX) + if ((tWipeXMove > 0 && tWipeCurrX >= tWipeEndX) || (tWipeXMove < 0 && tWipeCurrX <= tWipeEndX)) { numFinished++; @@ -4212,7 +4234,7 @@ static bool8 UpdateBlackWipe(s16 *data, bool8 xExact, bool8 yExact) } // Has Y coord reached end? - if ((tWipeYMove > 0 && tWipeCurrY >= tWipeEndY) + if ((tWipeYMove > 0 && tWipeCurrY >= tWipeEndY) || (tWipeYMove < 0 && tWipeCurrY <= tWipeEndY)) { numFinished++; @@ -4306,6 +4328,7 @@ static bool8 FrontierLogoWave_Init(struct Task *task) LZ77UnCompVram(sFrontierLogo_Tileset, tileset); LoadPalette(sFrontierLogo_Palette, 0xF0, sizeof(sFrontierLogo_Palette)); sTransitionData->cameraY = 0; + UpdateShadowColor(0x3DEF); // force shadows to gray task->tState++; return FALSE; diff --git a/src/field_weather_effect.c b/src/field_weather_effect.c index eafb68239..5889dd79f 100644 --- a/src/field_weather_effect.c +++ b/src/field_weather_effect.c @@ -1377,7 +1377,7 @@ static void DestroyFogHorizontalSprites(void); #define SHADOW_COLOR_INDEX 9 // Updates just the color of shadows to match special weather blending -static u8 UpdateShadowColor(u16 color) { +u8 UpdateShadowColor(u16 color) { u8 paletteNum = IndexOfSpritePaletteTag(TAG_WEATHER_START); u16 tempBuffer[16]; u16 blendedColor; From eeaefee12d6d80124aa26240ba5990bd71776b86 Mon Sep 17 00:00:00 2001 From: Ariel A <24759293+aarant@users.noreply.github.com> Date: Wed, 20 Apr 2022 20:22:55 -0400 Subject: [PATCH 158/241] Updated / genericized remote_build.sh. --- remote_build.sh | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/remote_build.sh b/remote_build.sh index 1d603ddc8..a6c8d51f0 100644 --- a/remote_build.sh +++ b/remote_build.sh @@ -1,5 +1,6 @@ #!/bin/bash +# Git REmote Make # Push to SSH machine; build and scp build products back set -e @@ -7,9 +8,10 @@ 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 -# `nproc` must be escaped so that it executes on the remote machine -ssh $remote_host "cd $remote_path && git reset --hard && git checkout $git_branch && \ - echo \"Using \`nproc\` job(s)\" && make DDEBUG=1 -j\`nproc\`" -scp "$remote_host:$remote_path/pokeemerald.gba" romhack.gba +ssh $remote_host "cd $remote_path && git reset --hard && git checkout $git_branch && $make_cmd" +scp "$remote_host:$remote_path/$make_product" $make_dest From 30c366eec32135d3debaf9cc52d60a417b1b424d Mon Sep 17 00:00:00 2001 From: Ariel A <24759293+aarant@users.noreply.github.com> Date: Sun, 24 Apr 2022 02:14:27 -0400 Subject: [PATCH 159/241] Added support for setting overworld species via GFX script vars. Fixed minor graphical bug in LoadWhiteFlashPalette. --- src/event_object_movement.c | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/src/event_object_movement.c b/src/event_object_movement.c index 6235c1577..9a4318ada 100644 --- a/src/event_object_movement.c +++ b/src/event_object_movement.c @@ -34,6 +34,7 @@ #include "constants/items.h" #include "constants/map_types.h" #include "constants/mauville_old_man.h" +#include "constants/rgb.h" #include "constants/species.h" #include "constants/trainer_types.h" #include "constants/union_room.h" @@ -1484,7 +1485,13 @@ TrySpawnObjectEventTemplate(struct ObjectEventTemplate *objectEventTemplate, shiny = gObjectEvents[objectEventId].extra.mon.shiny; FollowerSetGraphics(&gObjectEvents[objectEventId], species, form, shiny); } - + // Set runtime species based on VAR_TEMP_4, if template has a dynamic graphics ID + } else if (objectEventTemplate->graphicsId >= OBJ_EVENT_GFX_VARS && VarGetObjectEventGraphicsId(objectEventTemplate->graphicsId - OBJ_EVENT_GFX_VARS) == OBJ_EVENT_GFX_OW_MON) { + gObjectEvents[objectEventId].extra.asU16 = VarGet(VAR_TEMP_4); + FollowerSetGraphics(&gObjectEvents[objectEventId], + gObjectEvents[objectEventId].extra.mon.species, + gObjectEvents[objectEventId].extra.mon.form, + gObjectEvents[objectEventId].extra.mon.form); } return objectEventId; @@ -6336,7 +6343,7 @@ bool8 MovementAction_WalkInPlaceSlowDown_Step0(struct ObjectEvent *objectEvent, 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(0xFFFF, &paletteData[1], 30); + CpuFill16(RGB_WHITE, paletteData, 32); return UpdateSpritePalette(&dynamicPalette, sprite); } From 483d4b34484a26a2b87ca68cef02a663cbfadefe Mon Sep 17 00:00:00 2001 From: Ariel A <24759293+aarant@users.noreply.github.com> Date: Wed, 27 Apr 2022 18:51:25 -0400 Subject: [PATCH 160/241] Fixed all field effects with gendered palette tags (warp arrow, surf blob, bird) --- include/constants/field_effects.h | 5 +++++ include/event_object_movement.h | 1 + src/event_object_movement.c | 15 +++++++-------- src/field_effect.c | 2 ++ src/field_effect_helpers.c | 4 ++++ 5 files changed, 19 insertions(+), 8 deletions(-) diff --git a/include/constants/field_effects.h b/include/constants/field_effects.h index 65ccc3ec7..92d3e6cbf 100644 --- a/include/constants/field_effects.h +++ b/include/constants/field_effects.h @@ -128,4 +128,9 @@ #define FLDEFF_PAL_TAG_HOF_MONITOR 0x1010 #define FLDEFF_PAL_TAG_UNKNOWN 0x1011 + +// 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 + #endif // GUARD_FIELD_EFFECT_CONSTANTS_H diff --git a/include/event_object_movement.h b/include/event_object_movement.h index b6d7addfc..4d35dcfa6 100644 --- a/include/event_object_movement.h +++ b/include/event_object_movement.h @@ -114,6 +114,7 @@ void ObjectEventTurnByLocalIdAndMap(u8, u8, u8, u8); const struct ObjectEventGraphicsInfo *GetObjectEventGraphicsInfo(u8 graphicsId); void SetObjectInvisibility(u8, u8, u8, bool8); void FreeAndReserveObjectSpritePalettes(void); +u8 LoadObjectEventPalette(u16 paletteTag); void SetObjectEventSpritePosByLocalIdAndMap(u8 localId, u8 mapNum, u8 mapGroup, s16 x, s16 y); void ResetObjectSubpriority(u8, u8, u8); void SetObjectSubpriority(u8, u8, u8, u8); diff --git a/src/event_object_movement.c b/src/event_object_movement.c index 9a4318ada..67f0762a1 100644 --- a/src/event_object_movement.c +++ b/src/event_object_movement.c @@ -147,7 +147,6 @@ static void UpdateObjectEventVisibility(struct ObjectEvent *, struct Sprite *); static void MakeSpriteTemplateFromObjectEventTemplate(struct ObjectEventTemplate *, struct SpriteTemplate *, const struct SubspriteTable **); static void GetObjectEventMovingCameraOffset(s16 *, s16 *); static 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); @@ -2364,12 +2363,12 @@ void FreeAndReserveObjectSpritePalettes(void) gReservedSpritePaletteCount = 12; } -static void LoadObjectEventPalette(u16 paletteTag) +u8 LoadObjectEventPalette(u16 paletteTag) { u16 i = FindObjectEventPaletteIndexByTag(paletteTag); - - if (i != OBJ_EVENT_PAL_TAG_NONE) // always true - LoadSpritePaletteIfTagExists(&sObjectEventSpritePalettes[i]); + if (i == 0xFF) + return i; + return LoadSpritePaletteIfTagExists(&sObjectEventSpritePalettes[i]); } // Unused @@ -2383,9 +2382,9 @@ static void LoadObjectEventPaletteSet(u16 *paletteTags) static u8 LoadSpritePaletteIfTagExists(const struct SpritePalette *spritePalette) { - u8 paletteNum; - if (IndexOfSpritePaletteTag(spritePalette->tag) != 0xFF) - return 0xFF; + u8 paletteNum = IndexOfSpritePaletteTag(spritePalette->tag); + if (paletteNum != 0xFF) // don't load twice; return + return paletteNum; paletteNum = LoadSpritePalette(spritePalette); return paletteNum; } diff --git a/src/field_effect.c b/src/field_effect.c index 35902b455..021aca6df 100644 --- a/src/field_effect.c +++ b/src/field_effect.c @@ -3123,6 +3123,7 @@ u8 FldEff_NPCFlyOut(void) 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; } @@ -3303,6 +3304,7 @@ static u8 CreateFlyBirdSprite(void) sprite = &gSprites[spriteId]; sprite->oam.priority = 1; sprite->callback = SpriteCB_FlyBirdLeaveBall; + sprite->oam.paletteNum = LoadObjectEventPalette(gSaveBlock2Ptr->playerGender ? FLDEFF_PAL_TAG_MAY : FLDEFF_PAL_TAG_BRENDAN); return spriteId; } diff --git a/src/field_effect_helpers.c b/src/field_effect_helpers.c index d47c40262..323cdbe4d 100755 --- a/src/field_effect_helpers.c +++ b/src/field_effect_helpers.c @@ -259,6 +259,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; @@ -1153,6 +1155,8 @@ u32 FldEff_SurfBlob(void) sprite = &gSprites[spriteId]; sprite->coordOffsetEnabled = TRUE; 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; From 13565fc02323d9c74d47b67f5c43c29d59a19668 Mon Sep 17 00:00:00 2001 From: Ariel A <24759293+aarant@users.noreply.github.com> Date: Wed, 27 Apr 2022 20:00:02 -0400 Subject: [PATCH 161/241] Fixed `removeobject` clearing the palettes of unloaded dummy sprites. --- src/event_object_movement.c | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/src/event_object_movement.c b/src/event_object_movement.c index 67f0762a1..733c2a7b2 100644 --- a/src/event_object_movement.c +++ b/src/event_object_movement.c @@ -1389,8 +1389,16 @@ static void RemoveObjectEventInternal(struct ObjectEvent *objectEvent) image.size = GetObjectEventGraphicsInfo(objectEvent->graphicsId)->size; gSprites[objectEvent->spriteId].images = ℑ paletteNum = gSprites[objectEvent->spriteId].oam.paletteNum; - DestroySprite(&gSprites[objectEvent->spriteId]); - FieldEffectFreePaletteIfUnused(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) From 2bc5da3f2ffbeb7a92eb6b06ad5c05ee6da4658d Mon Sep 17 00:00:00 2001 From: Ariel A <24759293+aarant@users.noreply.github.com> Date: Thu, 28 Apr 2022 15:39:17 -0400 Subject: [PATCH 162/241] Fixed sprite palette gamma types. --- src/field_weather.c | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/src/field_weather.c b/src/field_weather.c index 698b079ec..c12d1883f 100644 --- a/src/field_weather.c +++ b/src/field_weather.c @@ -138,15 +138,15 @@ static const u8 sBasePaletteGammaTypes[32] = // sprite palettes GAMMA_ALT, GAMMA_NORMAL, - GAMMA_ALT, - GAMMA_ALT, - GAMMA_ALT, - GAMMA_ALT, GAMMA_NORMAL, GAMMA_NORMAL, GAMMA_NORMAL, GAMMA_NORMAL, - GAMMA_ALT, + GAMMA_NORMAL, + GAMMA_NORMAL, + GAMMA_NORMAL, + GAMMA_NORMAL, + GAMMA_NORMAL, GAMMA_NORMAL, GAMMA_NORMAL, GAMMA_NORMAL, From 5e1c6e0f2520864a4c5dbb0d9439c7dd2f3fc576 Mon Sep 17 00:00:00 2001 From: Ariel A <24759293+aarant@users.noreply.github.com> Date: Sat, 30 Apr 2022 14:54:47 -0400 Subject: [PATCH 163/241] Fixed `GetFollowerObject` being able to sometimes return removed/inactive objects. --- src/event_object_movement.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/event_object_movement.c b/src/event_object_movement.c index 733c2a7b2..d421da560 100644 --- a/src/event_object_movement.c +++ b/src/event_object_movement.c @@ -1680,7 +1680,7 @@ struct Pokemon * GetFirstLiveMon(void) { // Return address of first conscious pa 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) + if (gObjectEvents[i].localId == OBJ_EVENT_ID_FOLLOWER && gObjectEvents[i].active) return &gObjectEvents[i]; } return NULL; From 7d4015dc5f2ee5526686f941421f05c10a8fbd17 Mon Sep 17 00:00:00 2001 From: Ariel A <24759293+aarant@users.noreply.github.com> Date: Sat, 30 Apr 2022 16:48:18 -0400 Subject: [PATCH 164/241] Changed default follower elevation to player's current elevation. --- src/event_object_movement.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/event_object_movement.c b/src/event_object_movement.c index d421da560..9c7fc5698 100644 --- a/src/event_object_movement.c +++ b/src/event_object_movement.c @@ -1762,7 +1762,8 @@ void UpdateFollowingPokemon(void) { // Update following pokemon if any .graphicsId = OBJ_EVENT_GFX_OW_MON, .x = gSaveBlock1Ptr->pos.x, .y = gSaveBlock1Ptr->pos.y, - .elevation = 3, + // If player active, copy player elevation + .elevation = gObjectEvents[gPlayerAvatar.objectEventId].active ? gObjectEvents[gPlayerAvatar.objectEventId].currentElevation : 3, .movementType = MOVEMENT_TYPE_FOLLOW_PLAYER, }; objEvent = &gObjectEvents[SpawnSpecialObjectEvent(&template)]; From 9993f7218687d530846e48306af7f18d164cc8b5 Mon Sep 17 00:00:00 2001 From: Ariel A <24759293+aarant@users.noreply.github.com> Date: Sun, 1 May 2022 14:23:45 -0400 Subject: [PATCH 165/241] Updated remote_build to use `--force-with-lease` instead of `--force`. --- remote_build.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/remote_build.sh b/remote_build.sh index a6c8d51f0..03e3e54b1 100644 --- a/remote_build.sh +++ b/remote_build.sh @@ -12,6 +12,6 @@ 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 +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 From 831c73c18cc32e81d3597732b923fd85843c0e59 Mon Sep 17 00:00:00 2001 From: Ariel A <24759293+aarant@users.noreply.github.com> Date: Sun, 1 May 2022 17:56:39 -0400 Subject: [PATCH 166/241] Added system for conditional follower messages. --- data/scripts/follower.inc | 53 +++++- emotions.txt | 115 ++++++------- follower_emotions.py | 6 +- include/battle_script_commands.h | 1 + include/event_scripts.h | 2 + include/follower_helper.h | 71 ++++++++ ld_script.txt | 2 + src/battle_script_commands.c | 58 ++++++- src/data/text/follower_messages.h | 47 +++--- src/event_object_movement.c | 237 ++++++++++++++++++-------- src/follower_helper.c | 269 ++++++++++++++++++++++++++++++ 11 files changed, 688 insertions(+), 173 deletions(-) create mode 100644 include/follower_helper.h create mode 100644 src/follower_helper.c diff --git a/data/scripts/follower.inc b/data/scripts/follower.inc index f2e8c4ac7..3e9dc45e6 100644 --- a/data/scripts/follower.inc +++ b/data/scripts/follower.inc @@ -27,7 +27,6 @@ callfunc ScrFunc_emote EventScript_Follower:: lock - faceplayer bufferlivemonspeciesname 0 playfirstmoncry callfunc ScrFunc_getfolloweraction @@ -56,6 +55,8 @@ EventScript_FollowerLovesYou:: @ Message address must be loaded into bank 0 EventScript_FollowerGeneric:: @ similar to Std_MsgboxDefault + faceplayer +EventScript_FollowerGenericSkipFace: waitfieldeffect FLDEFF_EMOTE message 0x0 waitmessage @@ -63,6 +64,7 @@ EventScript_FollowerGeneric:: @ similar to Std_MsgboxDefault return EventScript_FollowerJump:: + faceplayer applymovement 0xFE FollowerSplashMovement waitmovement 0xFE waitfieldeffect FLDEFF_EMOTE @@ -403,6 +405,7 @@ FollowerDance: @ Movement scripts EventScript_FollowerIsShivering:: + faceplayer compare VAR_FACING, DIR_NORTH call_if_eq ShiverVertical compare VAR_FACING, DIR_SOUTH @@ -429,6 +432,7 @@ EventScript_FollowerNostalgia:: goto EventScript_FollowerGeneric EventScript_FollowerHopping:: + faceplayer applymovement 0xFE FollowerSkippingMovement waitmovement 0xFE goto EventScript_FollowerGeneric @@ -454,6 +458,7 @@ JumpOnW: return EventScript_FollowerJumpOnPlayer:: + faceplayer compare VAR_FACING, DIR_NORTH call_if_eq JumpOnS compare VAR_FACING, DIR_SOUTH @@ -485,6 +490,7 @@ CuddleW: return EventScript_FollowerCuddling:: @ similar to Std_MsgboxDefault + faceplayer compare VAR_FACING, DIR_NORTH call_if_eq CuddleS compare VAR_FACING, DIR_SOUTH @@ -524,6 +530,7 @@ ShCuddleW: return EventScript_FollowerShiverCuddling:: + faceplayer compare VAR_FACING, DIR_NORTH call_if_eq ShCuddleS compare VAR_FACING, DIR_SOUTH @@ -555,6 +562,7 @@ CreepCloserW: return EventScript_FollowerGetCloser:: + faceplayer compare VAR_FACING, DIR_NORTH call_if_eq CreepCloserS compare VAR_FACING, DIR_SOUTH @@ -586,6 +594,7 @@ PokePlayerW: return EventScript_FollowerPokingPlayer:: + faceplayer compare VAR_FACING, DIR_NORTH call_if_eq PokePlayerS compare VAR_FACING, DIR_SOUTH @@ -604,19 +613,20 @@ EventScript_FollowerLookAround:: EventScript_FollowerLookAway:: applymovement 0xFE FollowerLookAway waitmovement 0xFE - goto EventScript_FollowerGeneric + goto EventScript_FollowerGenericSkipFace EventScript_FollowerLookAwayBark:: applymovement 0xFE FollowerLookAwayBark waitmovement 0xFE - goto EventScript_FollowerGeneric + goto EventScript_FollowerGenericSkipFace EventScript_FollowerLookAwayPoke:: applymovement 0xFE FollowerLookAwayPokeG waitmovement 0xFE - goto EventScript_FollowerGeneric + goto EventScript_FollowerGenericSkipFace EventScript_FollowerPokeGround:: + faceplayer applymovement 0xFE FollowerPokeGround waitmovement 0xFE goto EventScript_FollowerGeneric @@ -624,17 +634,17 @@ EventScript_FollowerPokeGround:: EventScript_FollowerStartled:: applymovement 0xFE FollowerStartled waitmovement 0xFE - goto EventScript_FollowerGeneric + goto EventScript_FollowerGenericSkipFace EventScript_FollowerFastHopping:: applymovement 0xFE FollowerHopFast waitmovement 0xFE - goto EventScript_FollowerGeneric + goto EventScript_FollowerGenericSkipFace EventScript_FollowerDizzy:: applymovement 0xFE FollowerDizzy waitmovement 0 - goto EventScript_FollowerGeneric + goto EventScript_FollowerGenericSkipFace EventScript_FollowerLookAroundScared:: applymovement 0xFE FollowerLookAroundScared @@ -642,6 +652,35 @@ EventScript_FollowerLookAroundScared:: 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/emotions.txt b/emotions.txt index 42beb1d59..590be9353 100644 --- a/emotions.txt +++ b/emotions.txt @@ -1,102 +1,94 @@ Happy (Special): +Specific map: {STR_VAR_1} greeted your mom. -Your pokemon is staring intently at the mountain peak. -{STR_VAR_1} is staring straight at the pokemon league. -{STR_VAR_1} is staring at the sea. + +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} is very composed and sure of itself (in a gym with a type advantage). {STR_VAR_1} greeted Amphy! + Neutral (Special): -(CELEBI) danced happily ( Pokemon Exclusive ). -(CELEBI) danced beautiful ( Pokemon Exclusive ). -Sniff sniff, something smells good! ( Day care center ). -{STR_VAR_1} seems dazzled after seeing the sky. -Your pokemon is surveying the shelves restlessly ( In pokemart ). -Your pokemon is smelling the scent of the flowers. (When next to flowers in Cherrygrove City). -Your pokemon is staring intently at the sea! (On the beach). +Specific map: Why is it doing warm-up exercises? (Cerulean Gym). {STR_VAR_1} is running along the side of the pool! (Cerulean Gym). -{STR_VAR_1} is vigorously producing fire (must be a fire type). -{STR_VAR_1} spat fire (must be a fire type). -{STR_VAR_1} is staring intently at the shelves. -(TYPHLOSION) emitted fire and shouted ( Pokemon Exclusive ). -{STR_VAR_1} is vigorously breathing fire ( must be fire type). -(MAGIKARP) is leaping around more than usual (lake of rage, During team rockets broadcast) ( Pokemon Exclusive ). + +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} seems happy to have taken a shower! (Celadon gym) (Grass,Water type). -{STR_VAR_1} is fidgeting in front of everyone (maybe baby pokemon). -{STR_VAR_1} roared! -Your pokemon is staring intently at the sea! -{STR_VAR_1} is looking at the surging sea. {STR_VAR_1} is playing on the sand. {STR_VAR_1} is staring fixedly at the sea. -{STR_VAR_1} Cried out, looking at the tall mountain! {STR_VAR_1} is stomping on the grass! -{STR_VAR_1} seems highly interested in the tree. {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): -{STR_VAR_1}'s burn looks painful! (when burnt). +Pokemon feature: + Upset (Special): -{STR_VAR_1} is taking shelter in the grass from the rain. -{STR_VAR_1} is splashing around in the wet grass. +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 ). -{STR_VAR_1} seems to feel a little claustrophobic. -{STR_VAR_1} is a bit nervous about the narrow space! -{STR_VAR_1} is splashing around in the grass (must be fire type). + +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). -{STR_VAR_1} seems very cold (when frozen). +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). -{STR_VAR_1} is trembling with fear (Cemetery). -{STR_VAR_1} seems somehow sad... (Cemetery). -{STR_VAR_1} is growling softly (Dragon type in Dragons Den). + 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): -{STR_VAR_1} is staring intently at the goods on display! -{STR_VAR_1} is staring at its reflection in the water. -{STR_VAR_1} is staring intently at the reflection of its face. -{STR_VAR_1} is gnawing at the ice. -{STR_VAR_1} seems interested in Amphy... -{STR_VAR_1} has a sleepy look on its face... (Near Jigglypuff in Radio Tower.). -{STR_VAR_1} seems to relax as it hears the sound of rustling leaves... +Specific map(s): {STR_VAR_1} seems to be listening to the sound of rustling leaves. -Your pokemon turned to face the other way, showing a defiant expression. {STR_VAR_1} is preoccupied by the ceiling, which seems like it may collapse (burnt tower). -{STR_VAR_1} focused with a sharp gaze! (On the way to Victory Road.). -{STR_VAR_1} emitted fire and shouted! (must be a fire type). {STR_VAR_1} is concerned about the swaying pillar (sprout tower). Your pokemon is drooling a little (Olivine Cafe). -{STR_VAR_1} seems very interested in the bicycles (bike shop). {STR_VAR_1} is preoccupied by the floor, which seems like it may collapse (burnt tower). -{STR_VAR_1} is nervous ( in a gym before beating gym leader ) ( must have type disadvantage ). + +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. -Waah! your pokemon suddenly splashed water! (on a shore). {STR_VAR_1} is happy to see what's out doors! -{STR_VAR_1} seems to want to touch the machine! (Power plant). {STR_VAR_1} is listening intently to the sound of the waves. -{STR_VAR_1} is swaying with the boat! -{STR_VAR_1} is dancing along with the rolling of the ship. -{STR_VAR_1} doesn't want to get off the boat yet! -{STR_VAR_1} is listening to the sound of the machine. -{STR_VAR_1} seems happy at the sight of water on the window! -Your pokemon is blowing sand in the air! Your pokemon is staring spellbound at the night sky! Your pokemon seems to be enjoying sliding around! -{STR_VAR_1} is touching the ice. {STR_VAR_1} is steadily observing the flow of the river. {STR_VAR_1} is noticing the scent of the grass. -{STR_VAR_1} is playing around, plucking bits of 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. @@ -104,25 +96,20 @@ Your pokemon seems to be enjoying sliding around! {STR_VAR_1} is playing around with a leaf. {STR_VAR_1} is playing around, touching the leaves. Your pokemon is happily gazing at the beautiful, starry sky! -{STR_VAR_1} is pulling out the grass. {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 listening to the sound of the waterfall ( Mt. Mortar). {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 happily looking at (Player)'s footprints! (Sandy area). Your Pokemon is playing around and splashing in the water! (Water's edge). -Your Pokemon is blowing sand in the air! (Sandy area). {STR_VAR_1} is looking up at the sky. {STR_VAR_1} is poking at garbage (Goldenrods underground path). Your pokemon is rolling a screw from a bicycle around. {STR_VAR_1} is looking up at the sky. -{STR_VAR_1} seems to be happy about the rain! ( during rain, must not have type disadvantage to water). {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. @@ -136,7 +123,6 @@ Your pokemon is rolling a screw from a bicycle around. {STR_VAR_1} is gazing restlessly at the building ( in goldenrod). Surprised (Special): -Your pokemon has a flower petal on its face! (Newbark Town). {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 ). @@ -144,19 +130,14 @@ 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} is cautious about the confined area! {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} is feeling nervous and a touch claustrophobic. (while inside an elevator). {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). -Your pokemon almost slipped and fell over! (on ice). -A cold wind suddenly blew by! -Your pokemon seems surprised to touch ice. (TODO: Regice) {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! diff --git a/follower_emotions.py b/follower_emotions.py index b16409c10..522634803 100644 --- a/follower_emotions.py +++ b/follower_emotions.py @@ -34,17 +34,17 @@ def prepare_string(s): # Exports up to n messages in C format to outfile -def export_messages(infile, outfile, n=None, indent=2): +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'(const char []) _("{prepare_string(s)}"),' for s in lines] + 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=15) + export_messages('emotions.txt', 'emotions.h', n=1, start=7) diff --git a/include/battle_script_commands.h b/include/battle_script_commands.h index cb81ad812..ed6e01484 100644 --- a/include/battle_script_commands.h +++ b/include/battle_script_commands.h @@ -9,6 +9,7 @@ #define WINDOW_BG1 (1 << 7) 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/event_scripts.h b/include/event_scripts.h index 911afa91d..d6bc45120 100644 --- a/include/event_scripts.h +++ b/include/event_scripts.h @@ -24,6 +24,8 @@ 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[]; diff --git a/include/follower_helper.h b/include/follower_helper.h new file mode 100644 index 000000000..54b4d4d16 --- /dev/null +++ b/include/follower_helper.h @@ -0,0 +1,71 @@ +#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, +}; + +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; + u16 textSpread:1; // if set, `text` is an array of texts instead + + union __attribute__((packed)) { + struct __attribute__((packed)) { + u16 behavior:8; + u16 distance:6; + } mb; + } near; + u16 nearFlags:2; // 1 = mb within '+' shape distance away +}; + +extern const struct FollowerMsgInfoExtended gFollowerConditionalMessages[]; + +#endif //GUARD_FOLLOWER_HELPER_H diff --git a/ld_script.txt b/ld_script.txt index 75b95a570..9417312e5 100644 --- a/ld_script.txt +++ b/ld_script.txt @@ -114,6 +114,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); @@ -498,6 +499,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); diff --git a/src/battle_script_commands.c b/src/battle_script_commands.c index 391e82850..8d99b4c37 100644 --- a/src/battle_script_commands.c +++ b/src/battle_script_commands.c @@ -1350,6 +1350,62 @@ static void ModulateDmgByType(u8 multiplier) } } +s32 GetTypeEffectiveness(struct Pokemon *mon, u8 moveType) { + u16 species = GetMonData(mon, MON_DATA_SPECIES); + u8 type1 = gBaseStats[species].type1; + u8 type2 = gBaseStats[species].type2; + 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; @@ -9466,7 +9522,7 @@ static void Cmd_switchoutabilities(void) { case ABILITY_NATURAL_CURE: gBattleMons[gActiveBattler].status1 = 0; - BtlController_EmitSetMonData(BUFFER_A, REQUEST_STATUS_BATTLE, + BtlController_EmitSetMonData(BUFFER_A, REQUEST_STATUS_BATTLE, gBitTable[*(gBattleStruct->battlerPartyIndexes + gActiveBattler)], sizeof(gBattleMons[gActiveBattler].status1), &gBattleMons[gActiveBattler].status1); diff --git a/src/data/text/follower_messages.h b/src/data/text/follower_messages.h index 7dc9a67df..3fbec109c 100644 --- a/src/data/text/follower_messages.h +++ b/src/data/text/follower_messages.h @@ -16,6 +16,7 @@ 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."); @@ -29,9 +30,9 @@ 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 pokemon has caught the scent of\nsmoke."); +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 pokemon stretched out its body\nand is relaxing."); +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!"); @@ -45,12 +46,13 @@ 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 pokemon is smelling the scent\nof flowers."); +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 pokemon seems happy about the\ngreat weather."); +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}, @@ -66,7 +68,7 @@ const struct FollowerMsgInfo gFollowerHappyMessages[] = { {sHappyMsg19, EventScript_FollowerFastHopping}, {sHappyMsg20}, {sHappyMsg21}, {sHappyMsg22}, {sHappyMsg23}, {sHappyMsg24}, {sHappyMsg25}, {sHappyMsg26}, {sHappyMsg27}, {sHappyMsg28}, {sHappyMsg29}, {sHappyMsg30, EventScript_FollowerCuddling}, - {sHappyMsg31}, + {sHappyMsg31}, {sHappyMsg32}, }; // Unconditional neutral messages @@ -74,8 +76,8 @@ static const u8 sNeutralMsg00[] = _("{STR_VAR_1} is steadily poking at\nthe grou 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 pokemon yawned loudly!"); -static const u8 sNeutralMsg05[] = _("Your pokemon is looking around\nrestlessly."); +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."); @@ -108,18 +110,19 @@ static const u8 sSadMsg02[] = _("{STR_VAR_1} seems a little tired."); 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 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}, + {sSadMsg03}, {sSadMsg04}, {sSadMsg05}, {sSadMsg06}, {sSadMsg07}, }; // Unconditional upset messages -static const u8 sUpsetMsg00[] = _("{STR_VAR_1} seems unhappy somehow..."); +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 pokemon seems a little\ncold."); +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."); @@ -133,7 +136,7 @@ const struct FollowerMsgInfo gFollowerUpsetMessages[] = { 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 pokemon turned to face the\nother way, showing a defiant\pexpression."); +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[] = { @@ -146,7 +149,7 @@ const struct FollowerMsgInfo gFollowerAngryMessages[] = { 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 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!"); @@ -156,11 +159,11 @@ static const u8 sPensiveMsg09[] = _("{STR_VAR_1} is staring intently at\nyour fa 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 pokemon is staring intently at\nnothing."); +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 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."); @@ -206,12 +209,12 @@ 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 pokemon stumbled and nearly\nfell!"); +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 pokemon was surprised that you\nsuddenly spoke to it!"); +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."); @@ -220,7 +223,7 @@ 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 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!"); @@ -241,13 +244,13 @@ const struct FollowerMsgInfo gFollowerSurpriseMessages[] = { }; // Unconditional curious messages -static const u8 sCuriousMsg00[] = _("Your pokemon is looking around\nrestlessly for something."); -static const u8 sCuriousMsg01[] = _("Your pokemon wasn't watching where\nit was going and ran into you!"); +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..."); +static const u8 sCuriousMsg06[] = _("{STR_VAR_1} seems to be a little\nhesitant…"); const struct FollowerMsgInfo gFollowerCuriousMessages[] = { {sCuriousMsg00, EventScript_FollowerLookAround}, @@ -271,7 +274,7 @@ static const u8 sMusicMsg09[] = _("{STR_VAR_1} is working hard to show\noff its 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 pokemon seems to be smelling a\nnostalgically familiar scent..."); +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."); diff --git a/src/event_object_movement.c b/src/event_object_movement.c index 9c7fc5698..431c4a164 100644 --- a/src/event_object_movement.c +++ b/src/event_object_movement.c @@ -1,6 +1,7 @@ #include "global.h" #include "malloc.h" #include "battle_pyramid.h" +#include "battle_script_commands.h" #include "berry.h" #include "data.h" #include "decoration.h" @@ -15,6 +16,7 @@ #include "field_player_avatar.h" #include "field_weather.h" #include "fieldmap.h" +#include "follower_helper.h" #include "mauville_old_man.h" #include "metatile_behavior.h" #include "overworld.h" @@ -23,18 +25,22 @@ #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 "constants/event_object_movement.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" @@ -1823,21 +1829,6 @@ static u8 RandomWeightedIndex(u8 *weights, u8 length) { } } -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, -}; - // 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}, @@ -1877,19 +1868,47 @@ struct SpecialEmote { // Used for storing conditional emotes 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; - s16 health_percent; - u8 friendship; + s32 multi, multi2; struct SpecialEmote cond_emotes[16] = {0}; - u8 n_choices = 0; + u8 emotion, n_choices = 0; struct ObjectEvent *objEvent = GetFollowerObject(); struct Pokemon *mon = GetFirstLiveMon(); - u8 emotion; - u8 emotion_weight[FOLLOWER_EMOTION_LENGTH] = {0}; + 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; @@ -1897,77 +1916,149 @@ bool8 ScrFunc_getfolloweraction(struct ScriptContext *ctx) // Essentially a big // 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); - multi = MapGridGetMetatileBehaviorAt(objEvent->currentCoords.x, objEvent->currentCoords.y); species = GetMonData(mon, MON_DATA_SPECIES); - friendship = GetMonData(mon, MON_DATA_FRIENDSHIP); - // Happy weights - emotion_weight[FOLLOWER_EMOTION_HAPPY] = 10; - if (friendship > 170) - emotion_weight[FOLLOWER_EMOTION_HAPPY] = 30; - else if (friendship > 80) + multi = GetMonData(mon, MON_DATA_FRIENDSHIP); + if (multi > 80) { emotion_weight[FOLLOWER_EMOTION_HAPPY] = 20; - // Neutral weights - emotion_weight[FOLLOWER_EMOTION_NEUTRAL] = 15; - // Sad weights - emotion_weight[FOLLOWER_EMOTION_SAD] = 5; - // Upset weights - emotion_weight[FOLLOWER_EMOTION_UPSET] = friendship < 80 ? 15 : 5; - // Angry weights - emotion_weight[FOLLOWER_EMOTION_ANGRY] = friendship < 80 ? 15 : 5; - // Pensive weights - emotion_weight[FOLLOWER_EMOTION_PENSIVE] = 15; - // Love weights - if (friendship > 170) - emotion_weight[FOLLOWER_EMOTION_LOVE] = 30; - else if (friendship > 80) + emotion_weight[FOLLOWER_EMOTION_UPSET] = 5; + emotion_weight[FOLLOWER_EMOTION_ANGRY] = 5; emotion_weight[FOLLOWER_EMOTION_LOVE] = 20; - // Surprise weights TODO: Scale this with how long the follower has been out - emotion_weight[FOLLOWER_EMOTION_SURPRISE] = 10; - // Curious weights TODO: Increase this if there is an item nearby, or if the pokemon has pickup - emotion_weight[FOLLOWER_EMOTION_CURIOUS] = 10; - // Music weights TODO: Change this depending on music ? - emotion_weight[FOLLOWER_EMOTION_MUSIC] = friendship > 80 ? 20 : 15; - + emotion_weight[FOLLOWER_EMOTION_MUSIC] = 20; + } + if (multi > 170) { + emotion_weight[FOLLOWER_EMOTION_HAPPY] = 30; + emotion_weight[FOLLOWER_EMOTION_LOVE] = 30; + } // Conditional messages follow // Weather-related - if (GetCurrentWeather() == WEATHER_SUNNY || GetCurrentWeather() == WEATHER_SUNNY_CLOUDS) + if (GetCurrentWeather() == WEATHER_SUNNY_CLOUDS) cond_emotes[n_choices++] = (struct SpecialEmote) {.emotion=FOLLOWER_EMOTION_HAPPY, .index=31}; - else if (GetCurrentWeather() == WEATHER_RAIN || GetCurrentWeather() == WEATHER_RAIN_THUNDERSTORM) { - if (SpeciesHasType(species, TYPE_FIRE)) { - emotion_weight[FOLLOWER_EMOTION_SAD] = 30; - cond_emotes[n_choices++] = (struct SpecialEmote) {.emotion=FOLLOWER_EMOTION_SAD, .index=3}; - cond_emotes[n_choices++] = (struct SpecialEmote) {.emotion=FOLLOWER_EMOTION_UPSET, .index=3}; - } else - cond_emotes[n_choices++] = (struct SpecialEmote) {.emotion = FOLLOWER_EMOTION_MUSIC, .index=14}; - cond_emotes[n_choices++] = (struct SpecialEmote) {.emotion=FOLLOWER_EMOTION_SURPRISE, .index=20}; - } // Health & status-related - health_percent = mon->hp * 100 / mon->maxHP; - if (health_percent < 20) { + 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 (health_percent < 50 || mon->status & 0x40) { // STATUS1_PARALYSIS + 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); - if (mon->status & 0x8) // STATUS1_POISON + #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; - ObjectEventEmote(objEvent, emotion); multi = Random() % followerBasicMessages[emotion].length; - if (Random() & 1) { // With 50% chance, select special message using reservoir sampling - u8 i, j = 1; - struct SpecialEmote *choice = 0; - for (i = 0; i < n_choices; i++) { - if (cond_emotes[i].emotion == emotion && (Random() < 0x10000 / (j++))) // Replace item with 1/j chance - choice = &cond_emotes[i]; - } - if (choice) - multi = choice->index; + // 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) ? 28 : 0, j = 1; i < 28; 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->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); diff --git a/src/follower_helper.c b/src/follower_helper.c new file mode 100644 index 000000000..b477f1d1e --- /dev/null +++ b/src/follower_helper.c @@ -0,0 +1,269 @@ +#include "global.h" +#include "data.h" +#include "event_scripts.h" +#include "follower_helper.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!"); + +// Note that the size of this array must also be correct in event_object_movement +const struct FollowerMsgInfoExtended gFollowerConditionalMessages[28] = { + { + .text = (u8*)sCelebiTexts, + .textSpread = 1, + .script = EventScript_FollowerDance, + .st = {.species = SPECIES_CELEBI}, + .stFlags = 1, // MATCH_SPECIES + .emotion = FOLLOWER_EMOTION_NEUTRAL, + }, + { + .text = (u8*)sFireTexts, + .st = {.types = {.type1 = TYPE_FIRE, .type2 = TYPE_FIRE}}, + .stFlags = 2, // MATCH_TYPES + .emotion = FOLLOWER_EMOTION_NEUTRAL, + .textSpread = 1, + }, + { + .text = sCondMsg06, + .script = EventScript_FollowerFaceUp, + .mm = {.map = {.mapNum = MAP_NUM(EVER_GRANDE_CITY), .mapGroup = MAP_GROUP(EVER_GRANDE_CITY)}}, + .mmFlags = 2, // MATCH_MAP + .emotion = FOLLOWER_EMOTION_HAPPY, + }, + { + .text = sCondMsg07, + .mm = {.map = {.mapNum = MAP_NUM(ROUTE112), .mapGroup = MAP_GROUP(ROUTE112)}}, + .mmFlags = 2, // MATCH_MAP + .emotion = FOLLOWER_EMOTION_HAPPY, + }, + { + .text = sCondMsg08, + .script = EventScript_FollowerNostalgia, + .mm = {.map = {.mapNum = MAP_NUM(ROUTE117_POKEMON_DAY_CARE), .mapGroup = MAP_GROUP(ROUTE117_POKEMON_DAY_CARE)}}, + .mmFlags = 2, // MATCH_MAP + .emotion = FOLLOWER_EMOTION_NEUTRAL, + }, + { + .text = (u8*)sShopTexts, + .textSpread = 1, + .script = EventScript_FollowerLookAround, + .wt = {.song = MUS_POKE_MART}, + .wtFlags = 2, // MATCH_SONG + .emotion = FOLLOWER_EMOTION_NEUTRAL, + }, + { + .text = sCondMsg11, + .wt = {.song = MUS_VICTORY_ROAD}, + .wtFlags = 2, // MATCH_SONG + .emotion = FOLLOWER_EMOTION_PENSIVE, + }, + { + .text = sCondMsg12, + .mm = {.map = {.mapNum = MAP_NUM(MAUVILLE_CITY_BIKE_SHOP), .mapGroup = MAP_GROUP(MAUVILLE_CITY_BIKE_SHOP)}}, + .mmFlags = 2, // MATCH_MAP + .emotion = FOLLOWER_EMOTION_PENSIVE, + }, + { + .text = (u8*)sMachineTexts, + .mm = {.map = {.mapNum = MAP_NUM(NEW_MAUVILLE_INSIDE), .mapGroup = MAP_GROUP(NEW_MAUVILLE_INSIDE)}}, + .mmFlags = 2, // MAP + .emotion = FOLLOWER_EMOTION_MUSIC, + .textSpread = 1, + }, + { + .text = (u8*)sBoatTexts, + .script = EventScript_FollowerLookAround, + .wt = {.song = MUS_SAILING}, + .wtFlags = 2, // MATCH_SONG + .emotion = FOLLOWER_EMOTION_MUSIC, + .textSpread = 1, + }, + { + .text = sCondMsg18, + .script = EventScript_FollowerHopping, + .mm = {.mb = {.behavior1 = MB_SHALLOW_WATER, .behavior2 = MB_PUDDLE}}, + .mmFlags = 3, // MB + .emotion = FOLLOWER_EMOTION_MUSIC, + }, + { + .text = sCondMsg19, + .mm = {.mb = {.behavior1 = MB_SAND, .behavior2 = MB_DEEP_SAND}}, + .mmFlags = 3, // MB + .emotion = FOLLOWER_EMOTION_MUSIC, + }, + { + .text = sCondMsg20, + .mm = {.mb = {.behavior1 = MB_TALL_GRASS, .behavior2 = MB_LONG_GRASS}}, + .mmFlags = 3, // MB + .emotion = FOLLOWER_EMOTION_MUSIC, + }, + { + .text = sCondMsg21, + .mm = {.mb = {.behavior1 = MB_SAND, .behavior2 = MB_FOOTPRINTS}}, + .mmFlags = 3, // MB + .emotion = FOLLOWER_EMOTION_MUSIC, + }, + { + .text = (u8*)sElevatorTexts, + .textSpread = 1, + .mm = {.map = {.mapNum = MAP_NUM(LILYCOVE_CITY_DEPARTMENT_STORE_ELEVATOR), .mapGroup = MAP_GROUP(LILYCOVE_CITY_DEPARTMENT_STORE_ELEVATOR)}}, + .mmFlags = 2, // MAP + .emotion = FOLLOWER_EMOTION_SURPRISE, + }, + { + .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 = 2, // MAP + .emotion = FOLLOWER_EMOTION_SURPRISE, + }, + { + .text = sCondMsg27, + .mm = {.map = {.mapNum = MAP_NUM(ROUTE117), .mapGroup = MAP_GROUP(ROUTE117)}}, + .mmFlags = 2, // MAP + .emotion = FOLLOWER_EMOTION_SURPRISE, + }, + { + .text = sCondMsg28, + .st = {.types = {.type1 = TYPE_DRAGON, .type2 = TYPE_DRAGON}}, + .stFlags = 2, // MATCH_TYPES + .mm = {.mapSec = {.mapSec = MAPSEC_SKY_PILLAR}}, + .mmFlags = 1, // MAP_SEC + .emotion = FOLLOWER_EMOTION_UPSET, + }, + { + .text = (u8*)sFearTexts, + .textSpread = 1, + .st = {.types = {.type1 = TYPE_GHOST, .type2 = TYPE_NOT_TYPE1}}, + .stFlags = 2, // TYPE + .mm = {.mapSec = {.mapSec = MAPSEC_MT_PYRE}}, + .mmFlags = 1, // MAP_SEC + .wt = {.song = MUS_MT_PYRE}, + .wtFlags = 2, // SONG + .emotion = FOLLOWER_EMOTION_UPSET, + }, + { + .text = sCondMsg31, + .st = {.types = {.type1 = TYPE_FIRE, .type2 = TYPE_FIRE}}, + .stFlags = 2, // TYPE + .wt = {.weather = {.weather1 = WEATHER_RAIN, .weather2 = WEATHER_RAIN_THUNDERSTORM}}, + .wtFlags = 1, // WEATHER + .emotion = FOLLOWER_EMOTION_UPSET, + }, + { + .text = sCondMsg32, + .st = {.status = STATUS1_FREEZE}, + .stFlags = 3, // STATUS + .emotion = FOLLOWER_EMOTION_UPSET, + }, + { + .text = (u8*)sSeaTexts, + .textSpread = 1, + .script = EventScript_FollowerFaceResult, + .near = {.mb = {.behavior = MB_OCEAN_WATER, .distance = 5}}, + .nearFlags = 1, // mb + .emotion = FOLLOWER_EMOTION_MUSIC, + }, + { + .text = sCondMsg36, + .script = EventScript_FollowerFaceResult, + .near = {.mb = {.behavior = MB_WATERFALL, .distance = 5}}, + .nearFlags = 1, // mb + .emotion = FOLLOWER_EMOTION_MUSIC, + }, + { + .text = sCondMsg37, + .st = {.types = {.type1 = TYPE_FIRE, .type2 = TYPE_NOT_TYPE1}}, + .stFlags = 2, // TYPE + .wt = {.weather = {.weather1 = WEATHER_RAIN, .weather2 = WEATHER_RAIN_THUNDERSTORM}}, + .wtFlags = 1, // WEATHER + .emotion = FOLLOWER_EMOTION_MUSIC, + }, + { + .text = sCondMsg38, + .script = EventScript_FollowerFaceResult, + .near = {.mb = {.behavior = MB_POND_WATER, .distance = 1}}, + .nearFlags = 1, // mb + .emotion = FOLLOWER_EMOTION_PENSIVE, + }, + { + .text = sCondMsg39, + .mm = {.mapSec = {.mapSec = MAPSEC_PETALBURG_WOODS}}, + .mmFlags = 1, // MAP_SEC + .emotion = FOLLOWER_EMOTION_PENSIVE, + }, + { + .text = (u8*)sIceTexts, + .textSpread = 1, + .script = EventScript_FollowerFaceResult, + .near = {.mb = {.behavior = MB_ICE, .distance = 1}}, + .nearFlags = 1, // mb + .emotion = FOLLOWER_EMOTION_PENSIVE, + }, + { + .text = sCondMsg42, + .st = {.status STATUS1_BURN}, + .stFlags 3, // STATUS + .emotion = FOLLOWER_EMOTION_SAD, + }, +}; From b46a8b16cabff0d0f44e026879b31592100147fc Mon Sep 17 00:00:00 2001 From: Ariel A <24759293+aarant@users.noreply.github.com> Date: Tue, 3 May 2022 23:14:00 -0400 Subject: [PATCH 167/241] Added time-of-day related follower messages. --- emotions.txt | 5 ----- follower_emotions.py | 2 +- src/event_object_movement.c | 7 +++---- src/follower_helper.c | 23 ++++++++++++++++++++++- 4 files changed, 26 insertions(+), 11 deletions(-) diff --git a/emotions.txt b/emotions.txt index 590be9353..39857a7cd 100644 --- a/emotions.txt +++ b/emotions.txt @@ -81,9 +81,7 @@ 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 happy to see what's out doors! {STR_VAR_1} is listening intently to the sound of the waves. -Your pokemon is staring spellbound at the night sky! 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. @@ -95,7 +93,6 @@ Misc: {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. -Your pokemon is happily gazing at the beautiful, starry sky! {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. @@ -106,10 +103,8 @@ Your pokemon is staring at the various items. {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 looking up at the sky. {STR_VAR_1} is poking at garbage (Goldenrods underground path). Your pokemon is rolling a screw from a bicycle around. -{STR_VAR_1} is looking up at the sky. {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. diff --git a/follower_emotions.py b/follower_emotions.py index 522634803..ff04b048a 100644 --- a/follower_emotions.py +++ b/follower_emotions.py @@ -47,4 +47,4 @@ def export_messages(infile, outfile, n=None, indent=0, start=0): if __name__ == '__main__': - export_messages('emotions.txt', 'emotions.h', n=1, start=7) + export_messages('emotions.txt', 'emotions.h', n=4, start=42) diff --git a/src/event_object_movement.c b/src/event_object_movement.c index 0750e20e5..b48835117 100644 --- a/src/event_object_movement.c +++ b/src/event_object_movement.c @@ -1944,9 +1944,6 @@ bool8 ScrFunc_getfolloweraction(struct ScriptContext *ctx) // Essentially a big emotion_weight[FOLLOWER_EMOTION_LOVE] = 30; } // Conditional messages follow - // Weather-related - if (GetCurrentWeather() == WEATHER_SUNNY_CLOUDS) - cond_emotes[n_choices++] = (struct SpecialEmote) {.emotion=FOLLOWER_EMOTION_HAPPY, .index=31}; // Health & status-related multi = mon->hp * 100 / mon->maxHP; if (multi < 20) { @@ -2027,7 +2024,7 @@ bool8 ScrFunc_getfolloweraction(struct ScriptContext *ctx) // Essentially a big } // Match scripted conditional messages // With 50% chance, try to match scripted conditional messages - for (i = (Random() & 1) ? 28 : 0, j = 1; i < 28; i++) { + for (i = (Random() & 1) ? 30 : 0, j = 1; i < 30; i++) { const struct FollowerMsgInfoExtended *info = &gFollowerConditionalMessages[i]; if (info->stFlags == 1 && species != info->st.species) continue; @@ -2045,6 +2042,8 @@ bool8 ScrFunc_getfolloweraction(struct ScriptContext *ctx) // Essentially a big 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; diff --git a/src/follower_helper.c b/src/follower_helper.c index b477f1d1e..9b0350e0c 100644 --- a/src/follower_helper.c +++ b/src/follower_helper.c @@ -2,6 +2,7 @@ #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" @@ -65,9 +66,15 @@ 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}; // Note that the size of this array must also be correct in event_object_movement -const struct FollowerMsgInfoExtended gFollowerConditionalMessages[28] = { +const struct FollowerMsgInfoExtended gFollowerConditionalMessages[30] = { { .text = (u8*)sCelebiTexts, .textSpread = 1, @@ -266,4 +273,18 @@ const struct FollowerMsgInfoExtended gFollowerConditionalMessages[28] = { .stFlags 3, // STATUS .emotion = FOLLOWER_EMOTION_SAD, }, + { + .text = (u8*)sDayTexts, + .textSpread = 1, + .wt = {.timeOfDay = TIME_OF_DAY_DAY}, + .wtFlags = 3, // time + .emotion = FOLLOWER_EMOTION_MUSIC, + }, + { + .text = (u8*)sNightTexts, + .textSpread = 1, + .wt = {.timeOfDay = TIME_OF_DAY_NIGHT}, + .wtFlags = 3, // time + .emotion = FOLLOWER_EMOTION_MUSIC, + }, }; From c82510e22bffb98fd9c63dc246c332dd1da602cd Mon Sep 17 00:00:00 2001 From: Ariel A <24759293+aarant@users.noreply.github.com> Date: Tue, 3 May 2022 23:46:07 -0400 Subject: [PATCH 168/241] Gamma shift now ignores special sprite palette tags (lights, emotes). --- src/field_weather.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/field_weather.c b/src/field_weather.c index 7a45e4ebc..721660add 100644 --- a/src/field_weather.c +++ b/src/field_weather.c @@ -494,7 +494,10 @@ static void ApplyGammaShift(u8 startPalIndex, u8 numPalettes, s8 gammaIndex) { u8 r, g, b; - if (sPaletteGammaTypes[curPalIndex] == GAMMA_ALT || curPalIndex - 16 == gWeatherPtr->altGammaSpritePalIndex) + // don't blend special sprite palette tags + if (sPaletteGammaTypes[curPalIndex] == GAMMA_ALT || + (curPalIndex >= 16 && (curPalIndex - 16 == gWeatherPtr->altGammaSpritePalIndex || + GetSpritePaletteTagByPaletteNum(curPalIndex - 16) >> 15))) gammaTable = gWeatherPtr->altGammaShifts[gammaIndex]; else gammaTable = gWeatherPtr->gammaShifts[gammaIndex]; From e8f3dcaa79fdc5fea226fbe8f118d9a121632ef0 Mon Sep 17 00:00:00 2001 From: Ariel A <24759293+aarant@users.noreply.github.com> Date: Tue, 15 Mar 2022 19:58:48 -0400 Subject: [PATCH 169/241] Fixed OrbEffect hanging when follower pokemon is out. --- src/field_screen_effect.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/field_screen_effect.c b/src/field_screen_effect.c index 676bebf0d..dc792f2dd 100644 --- a/src/field_screen_effect.c +++ b/src/field_screen_effect.c @@ -1174,6 +1174,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 + EnableBothScriptContexts(); if (--tShakeDelay == 0) { s32 panning; From 40d610e29a420c0b28b6fda66b21b7e4d9b322ed Mon Sep 17 00:00:00 2001 From: Ariel A <24759293+aarant@users.noreply.github.com> Date: Sun, 8 May 2022 01:32:17 -0400 Subject: [PATCH 170/241] Removed old debugPtr. --- src/overworld.c | 1 - 1 file changed, 1 deletion(-) diff --git a/src/overworld.c b/src/overworld.c index 697fd444d..2e377ccf2 100644 --- a/src/overworld.c +++ b/src/overworld.c @@ -1501,7 +1501,6 @@ void CB2_OverworldBasic(void) void CB2_Overworld(void) { - u32 *debugPtr = (u32*) 0x0203de00; bool32 fading = (gPaletteFade.active != 0); if (fading) SetVBlankCallback(NULL); From b5cf90a931e8ba282d6311a56df3480f54cac683 Mon Sep 17 00:00:00 2001 From: Ariel A <24759293+aarant@users.noreply.github.com> Date: Sun, 8 May 2022 00:14:15 -0400 Subject: [PATCH 171/241] Fixed shadow brightness during orb effect. --- src/field_screen_effect.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/field_screen_effect.c b/src/field_screen_effect.c index 676bebf0d..c5714cbf5 100644 --- a/src/field_screen_effect.c +++ b/src/field_screen_effect.c @@ -1144,6 +1144,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, 0x1E, 0x14, 0xF); @@ -1208,6 +1209,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); EnableBothScriptContexts(); From 28ec60a776643e574f21d771c1a8f4f72030873d Mon Sep 17 00:00:00 2001 From: Ariel A <24759293+aarant@users.noreply.github.com> Date: Tue, 10 May 2022 22:03:40 -0400 Subject: [PATCH 172/241] Fixed some field effect palettes. Removed leftover CacheLightMetatiles. --- include/constants/field_effects.h | 2 ++ include/overworld.h | 1 - src/data/field_effects/field_effect_objects.h | 2 +- src/event_object_movement.c | 2 +- src/field_effect_helpers.c | 2 +- src/fldeff_misc.c | 2 +- src/overworld.c | 21 ------------------- src/trainer_see.c | 4 ++-- 8 files changed, 8 insertions(+), 28 deletions(-) diff --git a/include/constants/field_effects.h b/include/constants/field_effects.h index 92d3e6cbf..e6a0b8058 100644 --- a/include/constants/field_effects.h +++ b/include/constants/field_effects.h @@ -132,5 +132,7 @@ // 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/overworld.h b/include/overworld.h index 0c573eec2..422d692eb 100644 --- a/include/overworld.h +++ b/include/overworld.h @@ -47,7 +47,6 @@ struct LinkPlayerObjectEvent // Exported RAM declarations extern struct WarpData gLastUsedWarp; extern struct LinkPlayerObjectEvent gLinkPlayerObjectEvents[4]; -extern struct Coords16 gLightMetatiles[32]; extern u16 *gBGTilemapBuffers1; extern u16 *gBGTilemapBuffers2; diff --git a/src/data/field_effects/field_effect_objects.h b/src/data/field_effects/field_effect_objects.h index 00b95340e..7a0f1266d 100755 --- a/src/data/field_effects/field_effect_objects.h +++ b/src/data/field_effects/field_effect_objects.h @@ -948,7 +948,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, diff --git a/src/event_object_movement.c b/src/event_object_movement.c index 431c4a164..84ce2f235 100644 --- a/src/event_object_movement.c +++ b/src/event_object_movement.c @@ -511,7 +511,7 @@ static const struct SpritePalette sObjectEventSpritePalettes[] = { {gObjectEventPal_RubySapphireMay, OBJ_EVENT_PAL_TAG_RS_MAY}, {gObjectEventPal_Npc1, OBJ_EVENT_PAL_TAG_DYNAMIC}, {gObjectEventPaletteEmotes, OBJ_EVENT_PAL_TAG_EMOTES}, - {NULL, 0x0000}, + {NULL, OBJ_EVENT_PAL_TAG_NONE}, }; static const u16 sReflectionPaletteTags_Brendan[] = { diff --git a/src/field_effect_helpers.c b/src/field_effect_helpers.c index 323cdbe4d..d1e785a74 100755 --- a/src/field_effect_helpers.c +++ b/src/field_effect_helpers.c @@ -1438,7 +1438,7 @@ u32 FldEff_BerryTreeGrowthSparkle(void) sprite = &gSprites[spriteId]; sprite->coordOffsetEnabled = TRUE; sprite->oam.priority = gFieldEffectArguments[3]; - sprite->oam.paletteNum = 5; // TODO: What paletteTag does this use? + UpdateSpritePaletteByTemplate(gFieldEffectObjectTemplatePointers[FLDEFFOBJ_SPARKLE], sprite); sprite->data[0] = FLDEFF_BERRY_TREE_GROWTH_SPARKLE; } return 0; diff --git a/src/fldeff_misc.c b/src/fldeff_misc.c index bb2cdf82c..36d64b3fc 100644 --- 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; // TODO: What palette should this use? + UpdateSpritePaletteByTemplate(gFieldEffectObjectTemplatePointers[FLDEFFOBJ_SPARKLE], &gSprites[spriteId]); gSprites[spriteId].callback = SpriteCB_GlitterMatSparkle; gSprites[spriteId].data[0] = 0; } diff --git a/src/overworld.c b/src/overworld.c index 2e377ccf2..b1bf8c185 100644 --- a/src/overworld.c +++ b/src/overworld.c @@ -207,7 +207,6 @@ EWRAM_DATA static struct InitialPlayerAvatarState sInitialPlayerAvatarState = {0 EWRAM_DATA static u16 sAmbientCrySpecies = 0; EWRAM_DATA static bool8 sIsAmbientCryWaterMon = FALSE; EWRAM_DATA struct LinkPlayerObjectEvent gLinkPlayerObjectEvents[4] = {0}; -EWRAM_DATA struct Coords16 gLightMetatiles[32] = {0}; static const struct WarpData sDummyWarpData = @@ -596,23 +595,6 @@ struct MapHeader const *const GetDestinationWarpMapHeader(void) return Overworld_GetMapHeaderByGroupAndId(sWarpDestination.mapGroup, sWarpDestination.mapNum); } -// Caches light metatile coordinates -static void CacheLightMetatiles(void) { // TODO: Better way to dynamically generate lights - u8 i = 0; - s16 x, y; - for (x = 0; x < gBackupMapLayout.width; x++) { - for (y = 0; y < gBackupMapLayout.height; y++) { - if (MapGridGetMetatileBehaviorAt(x, y) == 0x04) { - gLightMetatiles[i].x = x; - gLightMetatiles[i].y = y; - i++; - } - } - } - gLightMetatiles[i].x = -1; - gLightMetatiles[i].y = -1; -} - static void LoadCurrentMapData(void) { sLastMapSectionId = gMapHeader.regionMapSectionId; @@ -833,7 +815,6 @@ void LoadMapFromCameraTransition(u8 mapGroup, u8 mapNum) Overworld_ClearSavedMusic(); RunOnTransitionMapScript(); InitMap(); - CacheLightMetatiles(); CopySecondaryTilesetToVramUsingHeap(gMapHeader.mapLayout); LoadSecondaryTilesetPalette(gMapHeader.mapLayout); @@ -1766,7 +1747,6 @@ void CB2_ContinueSavedGame(void) } else { - CacheLightMetatiles(); TryPutTodaysRivalTrainerOnAir(); gFieldCallback = FieldCB_FadeTryShowMapPopup; SetMainCallback1(CB1_Overworld); @@ -1926,7 +1906,6 @@ static bool32 LoadMapInStepsLocal(u8 *state, bool32 a2) (*state)++; break; case 3: - CacheLightMetatiles(); InitObjectEventsLocal(); SetCameraToTrackPlayer(); (*state)++; diff --git a/src/trainer_see.c b/src/trainer_see.c index 3bf4e0c2f..93b21ac7b 100644 --- a/src/trainer_see.c +++ b/src/trainer_see.c @@ -303,7 +303,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, @@ -870,7 +870,7 @@ u8 FldEff_HeartIcon(void) struct Sprite *sprite = &gSprites[spriteId]; SetIconSpriteData(sprite, FLDEFF_HEART_ICON, 0); - sprite->oam.paletteNum = 2; // TODO: What palette should this use? + UpdateSpritePaletteByTemplate(&sSpriteTemplate_HeartIcon, sprite); } return 0; From f623406731d3e3c409218c4baf7163e19a5ee641 Mon Sep 17 00:00:00 2001 From: Ariel A <24759293+aarant@users.noreply.github.com> Date: Wed, 11 May 2022 00:12:33 -0400 Subject: [PATCH 173/241] Fixed palette weather shading (again). --- src/event_object_movement.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/event_object_movement.c b/src/event_object_movement.c index 84ce2f235..446034d29 100644 --- a/src/event_object_movement.c +++ b/src/event_object_movement.c @@ -1716,6 +1716,8 @@ static u8 LoadDynamicFollowerPalette(u16 species, u8 form, bool8 shiny) { if ((paletteNum = IndexOfSpritePaletteTag(spritePalette->tag)) == 0xFF) { // Load compressed palette LoadCompressedSpritePalette(spritePalette); paletteNum = IndexOfSpritePaletteTag(spritePalette->tag); // Tag is always present + if (gWeatherPtr->currWeather != WEATHER_FOG_HORIZONTAL) // don't want to weather blend in fog + UpdateSpritePaletteWithWeather(paletteNum); } return paletteNum; } From 21d8c8e9c5059507767d0ca5c130795e82cb4f04 Mon Sep 17 00:00:00 2001 From: Eduardo Quezada Date: Fri, 13 May 2022 21:03:03 -0400 Subject: [PATCH 174/241] Using follower's nickname instead of ther species name. --- data/scripts/follower.inc | 8 ++++---- src/scrcmd.c | 7 +++---- 2 files changed, 7 insertions(+), 8 deletions(-) diff --git a/data/scripts/follower.inc b/data/scripts/follower.inc index 3e9dc45e6..a8303e5ba 100644 --- a/data/scripts/follower.inc +++ b/data/scripts/follower.inc @@ -14,8 +14,8 @@ gText_WantsToFly:: callfunc ScrFunc_playfirstmoncry .endm -.macro bufferlivemonspeciesname out:req -callfunc ScrFunc_bufferlivemonspeciesname +.macro bufferlivemonnickname out:req +callfunc ScrFunc_bufferlivemonnickname .byte \out .endm @@ -27,13 +27,13 @@ callfunc ScrFunc_emote EventScript_Follower:: lock - bufferlivemonspeciesname 0 + bufferlivemonnickname 0 playfirstmoncry callfunc ScrFunc_getfolloweraction checkpartymove MOVE_FLY compare VAR_RESULT 6 goto_if_eq EventScript_FollowerEnd - bufferlivemonspeciesname 0 + bufferlivemonnickname 0 msgbox gText_WantsToFly, MSGBOX_YESNO switch VAR_RESULT case NO, EventScript_FollowerEnd diff --git a/src/scrcmd.c b/src/scrcmd.c index b53ae95b9..2461b0d96 100644 --- a/src/scrcmd.c +++ b/src/scrcmd.c @@ -1606,13 +1606,12 @@ bool8 ScrCmd_bufferleadmonspeciesname(struct ScriptContext *ctx) return FALSE; } -bool8 ScrFunc_bufferlivemonspeciesname(struct ScriptContext *ctx) +bool8 ScrFunc_bufferlivemonnickname(struct ScriptContext *ctx) { u8 stringVarIndex = ScriptReadByte(ctx); - u8 *dest = sScriptStringVars[stringVarIndex]; - u32 species = GetMonData(GetFirstLiveMon(), MON_DATA_SPECIES); - StringCopy(dest, gSpeciesNames[species]); + GetMonData(GetFirstLiveMon(), MON_DATA_NICKNAME, sScriptStringVars[stringVarIndex]); + StringGet_Nickname(sScriptStringVars[stringVarIndex]); return FALSE; } From 8672530f10486e3398acb9defa7940a18c11041e Mon Sep 17 00:00:00 2001 From: Ariel A <24759293+aarant@users.noreply.github.com> Date: Fri, 13 May 2022 22:15:08 -0400 Subject: [PATCH 175/241] Fixed missing include in event_object_movement. Fixed Lombre follower palette. Credit: Jaizu --- graphics/object_events/pics/pokemon/lombre.png | Bin 554 -> 7876 bytes src/event_object_movement.c | 1 + 2 files changed, 1 insertion(+) diff --git a/graphics/object_events/pics/pokemon/lombre.png b/graphics/object_events/pics/pokemon/lombre.png index 0cedb8d1e53be3cc4fb4d8bf4bcbdc607a215df8..5543070f67ddd44c324db7a79369756ce9913821 100644 GIT binary patch literal 7876 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 delta 473 zcmV;~0Ve*$J*otdBa>+yJbwYTNkl14#K|JzEN=jYh8rS$&A%*c-i)8&# z1S*I^#?0(8R^mkzwzg?Nhs`Olm5>k%_LgExf`P7>h)M??ClnX#Jb&_LA`X=`2AKm> zX$4vB<9KBL?8q&Dz~sivsnyK_q1TL znB^uL<5!8lEb$w?=y_#hk>vpKUao(sUau1=h4nV;MQZ(je0%&+;=hewy~L)0;K_mv P00000NkvXXu0mjfTMz5D diff --git a/src/event_object_movement.c b/src/event_object_movement.c index 446034d29..eee5f2011 100644 --- a/src/event_object_movement.c +++ b/src/event_object_movement.c @@ -32,6 +32,7 @@ #include "trainer_hill.h" #include "util.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" From ec756d3d12c59ed82aa12a7d7155752a69184292 Mon Sep 17 00:00:00 2001 From: Ariel A <24759293+aarant@users.noreply.github.com> Date: Mon, 16 May 2022 22:02:04 -0400 Subject: [PATCH 176/241] Fixed object events not being unfrozen after using Flash. --- data/scripts/flash.inc | 1 + 1 file changed, 1 insertion(+) diff --git a/data/scripts/flash.inc b/data/scripts/flash.inc index dbfec2314..7444dcd5e 100644 --- a/data/scripts/flash.inc +++ b/data/scripts/flash.inc @@ -1,4 +1,5 @@ EventScript_UseFlash:: animateflash 1 setflashlevel 1 + releaseall end From 01f73f54e1567e4045ed8664306eddb82f3aa0b0 Mon Sep 17 00:00:00 2001 From: Ariel A <24759293+aarant@users.noreply.github.com> Date: Tue, 17 May 2022 00:54:08 -0400 Subject: [PATCH 177/241] Added follower transform effect and Castform forms. Credit: larryturbo Castform forms from https://www.deviantart.com/larryturbo/art/351-Castform-Froms-830190053 --- .../pics/pokemon/castform_rainy.png | Bin 0 -> 8049 bytes .../pics/pokemon/castform_snowy.png | Bin 0 -> 8615 bytes .../pics/pokemon/castform_sunny.png | Bin 0 -> 8332 bytes .../castform/anim_front_sunny_form.png | Bin 656 -> 11155 bytes .../pokemon/castform/normal_sunny_form.pal | 2 +- include/event_object_movement.h | 7 + spritesheet_rules.mk | 9 + .../object_events/object_event_graphics.h | 6 + .../object_event_graphics_info_followers.h | 8 + .../object_events/object_event_pic_tables.h | 24 +++ src/event_object_movement.c | 156 ++++++++++++++++-- src/field_effect.c | 6 +- src/field_screen_effect.c | 6 +- 13 files changed, 202 insertions(+), 22 deletions(-) create mode 100644 graphics/object_events/pics/pokemon/castform_rainy.png create mode 100644 graphics/object_events/pics/pokemon/castform_snowy.png create mode 100644 graphics/object_events/pics/pokemon/castform_sunny.png diff --git a/graphics/object_events/pics/pokemon/castform_rainy.png b/graphics/object_events/pics/pokemon/castform_rainy.png new file mode 100644 index 0000000000000000000000000000000000000000..b2d279c212019346f1fb668152aa9b3c87506e4c GIT binary patch literal 8049 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 literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/castform_snowy.png b/graphics/object_events/pics/pokemon/castform_snowy.png new file mode 100644 index 0000000000000000000000000000000000000000..9cf4ca0026a998fe7aaf0a0733a1cb4cb82fddde GIT binary patch literal 8615 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 literal 0 HcmV?d00001 diff --git a/graphics/pokemon/castform/anim_front_sunny_form.png b/graphics/pokemon/castform/anim_front_sunny_form.png index 7e14f9892e79d668cfb1f273db8ebe363c6c69a1..399e6eeb8698be276778e05ba55f140ccdaedde4 100644 GIT binary patch literal 11155 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 delta 607 zcmV-l0-*hqSC9peBNzZMP)t-s#l@6jF)7VjO743~|C~Vp005IADIR|WSg|4i0004W zQchCmVCE7JqQGckM)_sVeO z$w5pP7xlFthOc=A7y@8|_tED_^nBBpge#dC@P7a?DxZlw5BVVH{g)(wJ1BC_^Mbz( zdPGPZlz5Nzi{jlS0>mtzGjVnq@WIbv5cJ?hbCxU?=Rt5b99ls5<^AC#*%)R&g2MVi zhR54jr#pq&c@ck9%GjoPQl7sPwT%(*w35a?-5t#K1*(&2F1!O`UjSn2VjO1&%KG@f z8T;~q06LH;rM}4t+;vLAcTRrET2y(f^=(Z|A8G%@nA;Nl^0)rp25fa%mRc`vNMdbn zkg&pE6tOmIW3|;QqvuqMxwRJtUA=715ywyii-lg2zT-PQ+Shu!rQh2gHsBn;7Toam.paletteNum); sprite->inUse = TRUE; sprite->oam.paletteNum = LoadDynamicFollowerPalette(species, form, shiny); - } + } else if (gWeatherPtr->currWeather != WEATHER_FOG_HORIZONTAL) // don't want to weather blend in fog + UpdateSpritePaletteWithWeather(gSprites[objEvent->spriteId].oam.paletteNum); +} + +// 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 = objEvent->extra.mon.species; + u8 form = objEvent->extra.mon.form; + u8 shiny = objEvent->extra.mon.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); + if (gWeatherPtr->currWeather != WEATHER_FOG_HORIZONTAL) // don't want to weather blend in fog + UpdateSpritePaletteWithWeather(sprite->oam.paletteNum); + } +} + +// 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; } // Retrieve graphic information about the following pokemon, if any @@ -1753,7 +1813,16 @@ static bool8 GetFollowerInfo(u16 *species, u8 *form, u8 *shiny) { } *species = GetMonData(mon, MON_DATA_SPECIES); *shiny = IsMonShiny(mon); - *form = *species == SPECIES_UNOWN ? GET_UNOWN_LETTER(mon->box.personality) : 0; + *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; } @@ -1764,7 +1833,7 @@ void UpdateFollowingPokemon(void) { // Update following pokemon if any bool8 shiny; u8 form; // Avoid spawning large (64x64) follower pokemon inside buildings - if (GetFollowerInfo(&species, &form, &shiny) && !(gMapHeader.mapType == MAP_TYPE_INDOOR && SpeciesToGraphicsInfo(species, 0)->width == 64)) { + if (GetFollowerInfo(&species, &form, &shiny) && !(gMapHeader.mapType == MAP_TYPE_INDOOR && SpeciesToGraphicsInfo(species, 0)->height == 64)) { if (objEvent == NULL) { // Spawn follower struct ObjectEventTemplate template = { .localId = OBJ_EVENT_ID_FOLLOWER, @@ -2242,13 +2311,7 @@ static u8 UpdateSpritePalette(const struct SpritePalette * spritePalette, struct sprite->inUse = FALSE; FieldEffectFreePaletteIfUnused(sprite->oam.paletteNum); sprite->inUse = TRUE; - if (IndexOfSpritePaletteTag(spritePalette->tag) == 0xFF) { - sprite->oam.paletteNum = LoadSpritePalette(spritePalette); - } else { - sprite->oam.paletteNum = LoadSpritePalette(spritePalette); - } - - return sprite->oam.paletteNum; + return sprite->oam.paletteNum = LoadSpritePalette(spritePalette); } // Find and update based on template's paletteTag @@ -4803,6 +4866,73 @@ 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 (objectEvent->extra.mon.species == SPECIES_CASTFORM && objectEvent->extra.mon.form != (multi = GetOverworldCastformForm())) { + sprite->data[7] = TRANSFORM_TYPE_PERMANENT << 8; + objectEvent->extra.mon.form = multi; + return TRUE; + } else if ((gRngValue >> 16) < 18 && GetLocalWildMon(FALSE) + && (objectEvent->extra.mon.species == SPECIES_MEW || objectEvent->extra.mon.species == 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->extra.asU16; + objectEvent->extra.mon.species = GetLocalWildMon(FALSE); + if (!objectEvent->extra.mon.species) { + objectEvent->extra.asU16 = multi; + break; + } + objectEvent->extra.mon.form = 0; + RefreshFollowerGraphics(objectEvent); + objectEvent->extra.asU16 = 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) @@ -4859,6 +4989,8 @@ bool8 MovementType_FollowPlayer_Moving(struct ObjectEvent *objectEvent, struct S if (sprite->data[1]) { // restore nonzero state sprite->data[1] = 1; } + } else if (objectEvent->movementActionId != MOVEMENT_ACTION_EXIT_POKEBALL) { + UpdateFollowerTransformEffect(objectEvent, sprite); } return FALSE; } @@ -4874,6 +5006,7 @@ bool8 FollowablePlayerMovement_Idle(struct ObjectEvent *objectEvent, struct Spri } else if (ObjectEventExecSingleMovementAction(objectEvent, sprite)) { // finish movement action objectEvent->singleMovementActive = 0; } + UpdateFollowerTransformEffect(objectEvent, sprite); return FALSE; } @@ -6542,6 +6675,7 @@ bool8 MovementAction_EnterPokeball_Step0(struct ObjectEvent *objectEvent, struct u8 direction = objectEvent->facingDirection; InitMoveInPlace(objectEvent, sprite, direction, GetMoveDirectionFasterAnimNum(direction), 16); sprite->data[6] = direction == DIR_EAST ? 3 : 2; // affine animation number + EndFollowerTransformEffect(objectEvent, sprite); return MovementAction_EnterPokeball_Step1(objectEvent, sprite); } diff --git a/src/field_effect.c b/src/field_effect.c index 021aca6df..46491db26 100644 --- a/src/field_effect.c +++ b/src/field_effect.c @@ -2998,12 +2998,8 @@ static void SurfFieldEffect_Init(struct Task *task) FreezeObjectEvents(); // Put follower into pokeball before using Surf if (followerObject && !followerObject->invisible) { - // TODO: ClearObjectEventMovement ( - followerObject->singleMovementActive = 0; - ObjectEventClearHeldMovement(followerObject); - gSprites[followerObject->spriteId].data[1] = 0; + ClearObjectEventMovement(followerObject, &gSprites[followerObject->spriteId]); gSprites[followerObject->spriteId].animCmdIndex = 0; // Needed because of weird animCmdIndex stuff - // ) ObjectEventSetHeldMovement(followerObject, MOVEMENT_ACTION_ENTER_POKEBALL); } gPlayerAvatar.preventStep = TRUE; diff --git a/src/field_screen_effect.c b/src/field_screen_effect.c index dc792f2dd..4eb861c8c 100644 --- a/src/field_screen_effect.c +++ b/src/field_screen_effect.c @@ -688,12 +688,8 @@ static void Task_DoDoorWarp(u8 taskId) PlayerGetDestCoords(x, y); PlaySE(GetDoorSoundEffect(*x, *y - 1)); if (followerObject) { // Put follower into pokeball - // TODO: ClearObjectEventMovement ( - followerObject->singleMovementActive = 0; - ObjectEventClearHeldMovement(followerObject); - gSprites[followerObject->spriteId].data[1] = 0; + ClearObjectEventMovement(followerObject, &gSprites[followerObject->spriteId]); gSprites[followerObject->spriteId].animCmdIndex = 0; // Needed because of weird animCmdIndex stuff - // ) ObjectEventSetHeldMovement(followerObject, MOVEMENT_ACTION_ENTER_POKEBALL); } task->data[1] = FieldAnimateDoorOpen(*x, *y - 1); From 5727a467c4a13cea02b885140e1922154f97b45c Mon Sep 17 00:00:00 2001 From: Ariel A <24759293+aarant@users.noreply.github.com> Date: Wed, 18 May 2022 19:45:55 -0400 Subject: [PATCH 178/241] Updated Chansey, Espeon, Gyarados and Magikarp sprites. Credit: Jaizu --- .../object_events/pics/pokemon/chansey.png | Bin 627 -> 7614 bytes .../object_events/pics/pokemon/espeon.png | Bin 751 -> 8553 bytes .../object_events/pics/pokemon/gyarados.png | Bin 1310 -> 11806 bytes .../object_events/pics/pokemon/magikarp.png | Bin 685 -> 8491 bytes 4 files changed, 0 insertions(+), 0 deletions(-) diff --git a/graphics/object_events/pics/pokemon/chansey.png b/graphics/object_events/pics/pokemon/chansey.png index a2915ad0a62faa14958702846909939d9490250a..b8237d18c7365b61fca6f80c08b024ae3ac70ace 100644 GIT binary patch literal 7614 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 Ik;nP}0bG(S8vpUt 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 Us;#iE__Z-=tKU?sR<(`zADdQ^5C8xG delta 1251 zcmV<91RVRGT%HP$BMAU7P)t-s)z#IL(CS z(0PWQGb72e?@dZ6RFK7IX@1|)nLkPt{V$jM2lf}M;Ynus^Mc#@F!Y#1$awq|=L;8q z)p0$zcO<;kIgFoS8Ui53PcVbD(O+Kd1;;|I#@U68o@B~UNvgyX%oZ}4jL!P1kA-n| zGD@7tS*;IvC~&$-1g}5Ln3rVJz5ZBeCTEMpn4D#c`hZ&@D&f}ZCgu4Dnaw2jOYNup zSf~=U;F*kifpg7}G2)X8Y4xlha>y)yg#-(lcJFsAj8h7n*@(StY)&1TCDL;c*f?kA zOi0c979H{;Nu=Xi+x$@2aT{oA_R=UE5}R4Vjb{?ZlO|V=tHhen5)>YAthh4@Y<|%O zcEY=^qdqXhau#P)6XQvf3gjRpfj$#SicRr(L#AKutvls{OEC&B)CoIo1LeklMv4bP zmZef4laT4`G&c^CnbbhDPJ)(|rL}xteS0#?z-4@#(+2B=$ekbrKIV+m0O#43k2wir zAy0EGV3CGEFYK5)8nG+j+I-w(Qzz($UO07;pXdY+4&r3*ZK1m8HL1(Lo^61YefZsQCC;r zD_fLa7_k-gTokqqB%x=2CEDZkzFI1APFa3mAhWqBaDjop-v{1Ac!J`-7Tf!l3=g@LfL{w&SopRcN|L4NQ9aE%KNMcoCW&@pqvUUVNxoOI8k9YYmgQ=slguFue?DCL(k6^j7^`2J; zOl8^i%`w})fZ7f3y~nr^*BTG2!4qqDz?672=9r(q;`eI!cjN!V^*4%tsVc8x&{Y5c N002ovPDHLkV1iV@U3~xm diff --git a/graphics/object_events/pics/pokemon/magikarp.png b/graphics/object_events/pics/pokemon/magikarp.png index 4d4a2be6c6eea640fb6b1d264b22c16ba96b158b..9442339d107ff10a1d478779c012529d1fc6051a 100644 GIT binary patch literal 8491 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 From 4236f18f2d8336b009cdebafe413b6c7b91fbf8c Mon Sep 17 00:00:00 2001 From: Ariel A <24759293+aarant@users.noreply.github.com> Date: Thu, 19 May 2022 19:59:23 -0400 Subject: [PATCH 179/241] Fixed follower bugs when returning from a battle facility challenge. --- data/maps/BattleFrontier_BattleArenaLobby/scripts.inc | 3 +++ data/maps/BattleFrontier_BattleDomeLobby/scripts.inc | 4 ++++ data/maps/BattleFrontier_BattleFactoryLobby/scripts.inc | 3 +++ data/maps/BattleFrontier_BattlePalaceLobby/scripts.inc | 4 +++- data/maps/BattleFrontier_BattlePikeLobby/scripts.inc | 5 ++++- data/maps/BattleFrontier_BattlePyramidLobby/scripts.inc | 5 ++++- data/maps/BattleFrontier_BattleTowerLobby/scripts.inc | 7 +++++++ data/scripts/battle_pike.inc | 3 +++ 8 files changed, 31 insertions(+), 3 deletions(-) diff --git a/data/maps/BattleFrontier_BattleArenaLobby/scripts.inc b/data/maps/BattleFrontier_BattleArenaLobby/scripts.inc index 9467f3419..1a9b8756c 100644 --- 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_BattleDomeLobby/scripts.inc b/data/maps/BattleFrontier_BattleDomeLobby/scripts.inc index b972a0814..46f92ab1c 100644 --- 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_BattleFactoryLobby/scripts.inc b/data/maps/BattleFrontier_BattleFactoryLobby/scripts.inc index 682b2c91d..8e598c7d2 100644 --- 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_BattlePalaceLobby/scripts.inc b/data/maps/BattleFrontier_BattlePalaceLobby/scripts.inc index 481f7000d..418687f08 100644 --- 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_BattlePikeLobby/scripts.inc b/data/maps/BattleFrontier_BattlePikeLobby/scripts.inc index fb91ee752..fecd1cafd 100644 --- 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:: @@ -429,4 +433,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_BattlePyramidLobby/scripts.inc b/data/maps/BattleFrontier_BattlePyramidLobby/scripts.inc index 550644511..5f3cdb54a 100644 --- 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_BattleTowerLobby/scripts.inc b/data/maps/BattleFrontier_BattleTowerLobby/scripts.inc index 40936936a..61c2b000b 100644 --- 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 @@ -571,6 +577,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/scripts/battle_pike.inc b/data/scripts/battle_pike.inc index 8ca7f5b1a..e0a8c3feb 100644 --- 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:: From 326cb5d1b306c2572829ba4b714fb4d89877b125 Mon Sep 17 00:00:00 2001 From: Ariel A <24759293+aarant@users.noreply.github.com> Date: Thu, 26 May 2022 19:42:11 -0400 Subject: [PATCH 180/241] Updated Combusken follower sprite. Credit: Jaizu --- .../object_events/pics/pokemon/combusken.png | Bin 546 -> 7331 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/graphics/object_events/pics/pokemon/combusken.png b/graphics/object_events/pics/pokemon/combusken.png index dded375fe9014ee6a8bf6b9e99141e163271fd64..b95ae2af8babc39cea21a91cbb873e43cbc5db2a 100644 GIT binary patch literal 7331 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 J9bMOm{{SP7B2EAR delta 465 zcmV;?0WSWdIiduRBa>A~5@ z-22KF;UQLS zEDp6zAyuol_mwbt<4d8QFlP%R?V>_ zwfYBU94g%IcbsS4JkPuTmb63tj;w?FHoJxP4CKQHe|EkB(3p0>R-A4_00000NkvXX Hu0mjf1P9;| From 11a7aa1ec8e2bbba14d08cf2800f56ad29092211 Mon Sep 17 00:00:00 2001 From: Ariel A <24759293+aarant@users.noreply.github.com> Date: Sun, 29 May 2022 00:54:44 -0400 Subject: [PATCH 181/241] Made cutting trees follower-safe. --- data/scripts/field_move_scripts.inc | 1 + 1 file changed, 1 insertion(+) diff --git a/data/scripts/field_move_scripts.inc b/data/scripts/field_move_scripts.inc index 3e99fc08e..a9ba2355c 100644 --- a/data/scripts/field_move_scripts.inc +++ b/data/scripts/field_move_scripts.inc @@ -25,6 +25,7 @@ EventScript_UseCut:: end EventScript_CutTreeDown:: + setflag FLAG_SAFE_FOLLOWER_MOVEMENT applymovement VAR_LAST_TALKED, Movement_CutTreeDown waitmovement 0 removeobject VAR_LAST_TALKED From d731485a1f0e06fc3e57d048dd75ec43ccef213d Mon Sep 17 00:00:00 2001 From: Ariel A <24759293+aarant@users.noreply.github.com> Date: Sun, 29 May 2022 01:16:19 -0400 Subject: [PATCH 182/241] Fixed shadows appearing above freshly spawned object events. Removed shadows from cuttable trees. --- src/data/object_events/object_event_graphics_info.h | 2 +- src/field_effect_helpers.c | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/data/object_events/object_event_graphics_info.h b/src/data/object_events/object_event_graphics_info.h index 16677f9bb..71d98268b 100755 --- a/src/data/object_events/object_event_graphics_info.h +++ b/src/data/object_events/object_event_graphics_info.h @@ -80,7 +80,7 @@ const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_UnusedSquirtleDoll 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_S, TRUE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_16x16, sOamTables_16x16, sAnimTable_CuttableTree, sPicTable_CuttableTree, 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}; diff --git a/src/field_effect_helpers.c b/src/field_effect_helpers.c index 5fe15936e..f3d434b11 100755 --- a/src/field_effect_helpers.c +++ b/src/field_effect_helpers.c @@ -325,7 +325,7 @@ u32 FldEff_Shadow(void) 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); + 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)); From 9fe3a50f2a03fb4781039fbe7947f3bdba65eb25 Mon Sep 17 00:00:00 2001 From: Ariel A <24759293+aarant@users.noreply.github.com> Date: Sat, 4 Jun 2022 17:50:29 -0400 Subject: [PATCH 183/241] Optimized time of day update. --- src/overworld.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/overworld.c b/src/overworld.c index c78a409c2..5177fab19 100644 --- a/src/overworld.c +++ b/src/overworld.c @@ -1595,7 +1595,7 @@ static void OverworldBasic(void) UpdateTilesetAnimations(); DoScheduledBgTilemapCopiesToVram(); // Every minute if no palette fade is active, update TOD blending as needed - if (!(gPaletteFade.active || (++gTimeUpdateCounter % 3600))) { + if (!(gPaletteFade.active || (++gTimeUpdateCounter >= 3600))) { struct TimeBlendSettings cachedBlend = { .time0 = currentTimeBlend.time0, .time1 = currentTimeBlend.time1, From e5885c1284edcf1cea632490bc6a0da1bdc28483 Mon Sep 17 00:00:00 2001 From: Ariel A <24759293+aarant@users.noreply.github.com> Date: Tue, 21 Jun 2022 19:44:30 -0400 Subject: [PATCH 184/241] Fixed Registeel graphics to use OW sprite. --- data/maps/AncientTomb/map.json | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/data/maps/AncientTomb/map.json b/data/maps/AncientTomb/map.json index 06254e1f9..8614b6430 100644 --- a/data/maps/AncientTomb/map.json +++ b/data/maps/AncientTomb/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_REGISTEEL", + "graphics_id": "OBJ_EVENT_GFX_OW_MON", "x": 8, "y": 7, "elevation": 3, @@ -51,7 +51,9 @@ "dest_warp_id": 1 } ], - "coord_events": [], + "coord_events": [ + + ], "bg_events": [ { "type": "sign", From 3a1be34d246a9f3f557c876453f331515bf332d7 Mon Sep 17 00:00:00 2001 From: Ariel A <24759293+aarant@users.noreply.github.com> Date: Tue, 21 Jun 2022 19:58:35 -0400 Subject: [PATCH 185/241] Updated Skiploom & Shuppet OW sprites. Credit: Jaizu --- .../object_events/pics/pokemon/shuppet.png | Bin 418 -> 6750 bytes .../object_events/pics/pokemon/skiploom.png | Bin 488 -> 7233 bytes 2 files changed, 0 insertions(+), 0 deletions(-) diff --git a/graphics/object_events/pics/pokemon/shuppet.png b/graphics/object_events/pics/pokemon/shuppet.png index b79ede1d07031eccc0c6e4360792e27ceff0e712..533e6ae55b6646edce9d6f4cfd0bdc2e989d747e 100644 GIT binary patch literal 6750 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 IzU%4#0H34iPyhe` delta 407 zcmV;I0cifgIOqeABa3%FM#2j=CoUrnkr)%nPwYLmmh0utDY=YqWih z=b=GO>3a3uV4BaL`G3LmNr-!FhIvn$!SCt5Lag#d<~3EI*Ix}A+d2abb7IpP>+{+M zyju884J$mSY38$tHtBYgz6D%hllv{&N5A#bYhjyoX>I{y--n#EeZFj$UekYTE&GjM zoZ!7T0n@A5ZISsc3K4O>*ox#9GVN4^J;&e0CjuXFdRAe>rwjl9002ovPDHLkV1fzC B#aRFV From 87140b935262d0fd6c1266791bf22c9db9037655 Mon Sep 17 00:00:00 2001 From: Ariel A <24759293+aarant@users.noreply.github.com> Date: Tue, 21 Jun 2022 20:03:27 -0400 Subject: [PATCH 186/241] Fixed Regirock & Registeel puzzle freezing follower pokemon. --- src/braille_puzzles.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/braille_puzzles.c b/src/braille_puzzles.c index 26caa830d..d7a28e47a 100644 --- 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" @@ -214,6 +215,7 @@ static void DoBrailleRegirockEffect(void) PlaySE(SE_BANG); FlagSet(FLAG_SYS_REGIROCK_PUZZLE_COMPLETED); ScriptContext2_Disable(); + UnfreezeObjectEvents(); } bool8 ShouldDoBrailleRegisteelEffect(void) @@ -253,6 +255,7 @@ static void DoBrailleRegisteelEffect(void) PlaySE(SE_BANG); FlagSet(FLAG_SYS_REGISTEEL_PUZZLE_COMPLETED); ScriptContext2_Disable(); + UnfreezeObjectEvents(); } // theory: another commented out DoBrailleWait and Task_BrailleWait. From e60a0b161ce79f31dc4e469da308b43dfb4eca4c Mon Sep 17 00:00:00 2001 From: Ariel A <24759293+aarant@users.noreply.github.com> Date: Tue, 21 Jun 2022 22:03:37 -0400 Subject: [PATCH 187/241] Updated FOLLOWER_SAFE_MOVEMENT logic. --- src/scrcmd.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/scrcmd.c b/src/scrcmd.c index 2461b0d96..58be7085f 100644 --- a/src/scrcmd.c +++ b/src/scrcmd.c @@ -105,6 +105,7 @@ bool8 ScrCmd_nop1(struct ScriptContext *ctx) bool8 ScrCmd_end(struct ScriptContext *ctx) { + FlagClear(FLAG_SAFE_FOLLOWER_MOVEMENT); StopScript(ctx); return FALSE; } @@ -295,6 +296,7 @@ bool8 ScrCmd_returnram(struct ScriptContext *ctx) bool8 ScrCmd_endram(struct ScriptContext *ctx) { + FlagClear(FLAG_SAFE_FOLLOWER_MOVEMENT); ClearRamScript(); StopScript(ctx); return TRUE; @@ -1270,7 +1272,6 @@ bool8 ScrCmd_releaseall(struct ScriptContext *ctx) { u8 playerObjectId; struct ObjectEvent *followerObject = GetFollowerObject(); - FlagClear(FLAG_SAFE_FOLLOWER_MOVEMENT); // 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]); @@ -1287,7 +1288,6 @@ bool8 ScrCmd_release(struct ScriptContext *ctx) { u8 playerObjectId; struct ObjectEvent *followerObject = GetFollowerObject(); - FlagClear(FLAG_SAFE_FOLLOWER_MOVEMENT); // 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]); From 7fca787f1dfdf1c00e8a039d06e25c06b9b75a2d Mon Sep 17 00:00:00 2001 From: Ariel A <24759293+aarant@users.noreply.github.com> Date: Tue, 28 Jun 2022 18:57:27 -0400 Subject: [PATCH 188/241] Fixed time of day optimization. --- src/overworld.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/overworld.c b/src/overworld.c index 5177fab19..8cfeab4b6 100644 --- a/src/overworld.c +++ b/src/overworld.c @@ -1595,7 +1595,7 @@ static void OverworldBasic(void) UpdateTilesetAnimations(); DoScheduledBgTilemapCopiesToVram(); // Every minute if no palette fade is active, update TOD blending as needed - if (!(gPaletteFade.active || (++gTimeUpdateCounter >= 3600))) { + if (!gPaletteFade.active && ++gTimeUpdateCounter >= 3600) { struct TimeBlendSettings cachedBlend = { .time0 = currentTimeBlend.time0, .time1 = currentTimeBlend.time1, From 53a4708e726475e8aa409c80e2cf6fceffc35c4a Mon Sep 17 00:00:00 2001 From: Ariel A <24759293+aarant@users.noreply.github.com> Date: Mon, 4 Jul 2022 02:01:10 -0400 Subject: [PATCH 189/241] Updated Snubbull follower sprite. --- .../object_events/pics/pokemon/snubbull.png | Bin 620 -> 7722 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/graphics/object_events/pics/pokemon/snubbull.png b/graphics/object_events/pics/pokemon/snubbull.png index 596a4c43c218c9ba3098751199b0ef19869a7aad..3e717b856d13e303a7e47d7c6cf9e4eab5130f54 100644 GIT binary patch literal 7722 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 delta 556 zcmV+{0@MAfJnRIJBMAU7P)t-s-rnAmr5i1ONlv$s0005^NklRnf~$6_q(&P*9wy=L{nO726qJ_7dB;o zADVkpm8TMIf~<{GX#->J+y+Ji*XD!Ya-xj}Xcz91t=;Wcd8-l4!;M^p7G~7-Bt?l!1kxH z4@^KEnwXipE0jC|QK`FP13Tl=1)3v&^E)#3_duPofT{=$uHPPaLR8f?vjNuj%!g*& zkXs;)?K40~3_G>rNEQrs0NPn8fN9WUrX1Ly)msL33^NQ>MQd`-rc9KpPFX zJ2#yDUN+4y=cmij56HCrKoVb6p@B>r4ZM3k%ja&jXquJBtiwm3?FSN8c4gRC#xJYv z2p4>2S@Jb7jZgRa-aFF9M{v*i3HP Date: Mon, 4 Jul 2022 03:56:02 -0400 Subject: [PATCH 190/241] Fixed fadescreen interaction with weather on outdoor maps. --- asm/macros/event.inc | 12 +++++++----- data/event_scripts.s | 6 ++++-- data/maps/MtChimney/scripts.inc | 4 ++-- data/maps/MtPyre_Summit/scripts.inc | 5 ++--- src/field_weather.c | 6 ++++-- src/scrcmd.c | 9 +++++++++ 6 files changed, 28 insertions(+), 14 deletions(-) diff --git a/asm/macros/event.inc b/asm/macros/event.inc index 643d78561..046fa1765 100644 --- a/asm/macros/event.inc +++ b/asm/macros/event.inc @@ -276,7 +276,7 @@ .2byte SPECIAL_\function .endm - @ Blocks script execution until a command or C code manually unblocks it. Generally used with specific + @ Blocks script execution until a command or C code manually unblocks it. Generally used with specific @ commands and specials. Calling EnableBothScriptContexts for instance will allow execution to continue. .macro waitstate .byte 0x27 @@ -998,7 +998,7 @@ .endm @ Gives the player an Egg of the specified species. - @ VAR_RESULT will be set to MON_GIVEN_TO_PARTY, MON_GIVEN_TO_PC, or MON_CANT_GIVE depending on the outcome. + @ VAR_RESULT will be set to MON_GIVEN_TO_PARTY, MON_GIVEN_TO_PC, or MON_CANT_GIVE depending on the outcome. .macro giveegg species:req .byte 0x7a .2byte \species @@ -1416,7 +1416,7 @@ .2byte \out .endm - @ Gives 'count' coins to the player, up to a total of MAX_COINS. + @ Gives 'count' coins to the player, up to a total of MAX_COINS. @ If the player already has MAX_COINS then VAR_RESULT is set to TRUE, otherwise it is set to FALSE. .macro addcoins count:req .byte 0xb4 @@ -1677,9 +1677,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. @@ -1893,7 +1895,7 @@ @ Gives 'amount' of the specified 'item' to the player and prints a message with fanfare. @ If the player doesn't have space for all the items then as many are added as possible, the - @ message indicates there is no room, and VAR_RESULT is set to FALSE. + @ message indicates there is no room, and VAR_RESULT is set to FALSE. @ Otherwise VAR_RESULT is set to TRUE, and the message indicates they have received the item(s). .macro giveitem item:req, amount=1 setorcopyvar VAR_0x8000, \item diff --git a/data/event_scripts.s b/data/event_scripts.s index 4318ca2eb..19e187684 100644 --- a/data/event_scripts.s +++ b/data/event_scripts.s @@ -716,12 +716,14 @@ Common_EventScript_PlayGymBadgeFanfare:: return Common_EventScript_OutOfCenterPartyHeal:: - fadescreen FADE_TO_BLACK + fadescreenswapbuffers FADE_TO_BLACK playfanfare MUS_HEAL waitfanfare special HealPlayerParty + @ start fade then immediately load following pokemon, and wait for fade + fadescreenswapbuffers FADE_FROM_BLACK, 1 callnative UpdateFollowingPokemon - fadescreen FADE_FROM_BLACK + callfunc ScrFunc_WaitPaletteNotActive return EventScript_RegionMap:: diff --git a/data/maps/MtChimney/scripts.inc b/data/maps/MtChimney/scripts.inc index 193163325..6e8df8882 100644 --- 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/MtPyre_Summit/scripts.inc b/data/maps/MtPyre_Summit/scripts.inc index 3de60df3f..5a6d23797 100644 --- 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/src/field_weather.c b/src/field_weather.c index 721660add..2d1f2a809 100644 --- a/src/field_weather.c +++ b/src/field_weather.c @@ -811,8 +811,10 @@ void FadeScreen(u8 mode, s8 delay) if (fadeOut) { - if (TRUE || useWeatherPal) // TODO: Can copying Faded to Unfaded before fadeout cause problems ? - 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; diff --git a/src/scrcmd.c b/src/scrcmd.c index 58be7085f..1cef351d8 100644 --- a/src/scrcmd.c +++ b/src/scrcmd.c @@ -632,6 +632,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); @@ -652,6 +658,7 @@ bool8 ScrCmd_fadescreenspeed(struct ScriptContext *ctx) bool8 ScrCmd_fadescreenswapbuffers(struct ScriptContext *ctx) { u8 mode = ScriptReadByte(ctx); + u8 nowait = ScriptReadByte(ctx); switch (mode) { @@ -668,6 +675,8 @@ bool8 ScrCmd_fadescreenswapbuffers(struct ScriptContext *ctx) break; } + if (nowait) + return FALSE; SetupNativeScript(ctx, IsPaletteNotActive); return TRUE; } From b4cc3ca7b72f42fd54e4eaea67489dd2c510ef7c Mon Sep 17 00:00:00 2001 From: Ariel A <24759293+aarant@users.noreply.github.com> Date: Fri, 15 Jul 2022 19:02:34 -0400 Subject: [PATCH 191/241] Tileset swapPalettes can now use palette 12 for swapping. Fixed Slateport Fan Club lights. --- data/tilesets/headers.inc | 18 +++++++++--------- include/global.fieldmap.h | 4 ++-- 2 files changed, 11 insertions(+), 11 deletions(-) diff --git a/data/tilesets/headers.inc b/data/tilesets/headers.inc index 8a1e8f444..8be4c7965 100644 --- a/data/tilesets/headers.inc +++ b/data/tilesets/headers.inc @@ -1,6 +1,6 @@ .align 2 gTileset_General:: - .byte 0x41 @ is compressed, swapPalettes 4 + .byte 0x21 @ is compressed, swapPalettes 4 .byte FALSE @ is secondary tileset .2byte 0x10 @ lightPalettes 4 .4byte gTilesetTiles_General @@ -11,7 +11,7 @@ gTileset_General:: .align 2 gTileset_Petalburg:: - .byte 0x21 @ is compressed, swapPalettes 9 + .byte 0x11 @ is compressed, swapPalettes 9 .byte TRUE @ is secondary tileset .2byte 0x00B @ lightPalettes 6,7,9, custom 9 .4byte gTilesetTiles_Petalburg @@ -44,9 +44,9 @@ gTileset_Dewford:: .align 2 gTileset_Slateport:: - .byte 5 @ is compressed, swapPalettes 6 + .byte 3 @ is compressed, swapPalettes 6 .byte TRUE @ is secondary tileset - .2byte 0x1 @ lightPalettes 6 + .2byte 0x41 @ lightPalettes 6,12 .4byte gTilesetTiles_Slateport .4byte gTilesetPalettes_Slateport .4byte gMetatiles_Slateport @@ -77,7 +77,7 @@ gTileset_Lavaridge:: .align 2 gTileset_Fallarbor:: - .byte 9 @ is compressed, swapPalettes 7 + .byte 5 @ is compressed, swapPalettes 7 .byte TRUE @ is secondary tileset .2byte 2 @ lightPalettes 7 .4byte gTilesetTiles_Fallarbor @@ -99,7 +99,7 @@ gTileset_Fortree:: .align 2 gTileset_Lilycove:: - .byte 5 @ is compressed, swapPalettes 6 + .byte 3 @ is compressed, swapPalettes 6 .byte TRUE @ is secondary tileset .2byte 0x01 @ lightPalettes 6 .4byte gTilesetTiles_Lilycove @@ -111,7 +111,7 @@ gTileset_Lilycove:: .align 2 gTileset_Mossdeep:: - .byte 0x11 @ is compressed, swapPalettes 8 + .byte 0x09 @ is compressed, swapPalettes 8 .byte TRUE @ is secondary tileset .2byte 0x4 @ lightPalettes 8 .4byte gTilesetTiles_Mossdeep @@ -134,7 +134,7 @@ gTileset_EverGrande:: .align 2 gTileset_Pacifidlog:: - .byte 0x21 @ is compressed, swapPalettes 9 + .byte 0x11 @ is compressed, swapPalettes 9 .byte TRUE @ is secondary tileset .2byte 8 @ lightPalettes 9 .4byte gTilesetTiles_Pacifidlog @@ -145,7 +145,7 @@ gTileset_Pacifidlog:: .align 2 gTileset_Sootopolis:: - .byte 5 @ is compressed, swapPalettes 6 + .byte 3 @ is compressed, swapPalettes 6 .byte TRUE @ is secondary tileset .2byte 0x101 @ lightPalettes 6, customLights 6 .4byte gTilesetTiles_Sootopolis diff --git a/include/global.fieldmap.h b/include/global.fieldmap.h index 9882428ce..ac8c6e3e6 100644 --- a/include/global.fieldmap.h +++ b/include/global.fieldmap.h @@ -32,8 +32,8 @@ typedef void (*TilesetCB)(void); struct Tileset { - /*0x00*/ u8 isCompressed:2; - /*0x00*/ u8 swapPalettes:6; // bitmask determining whether palette has an alternate, night-time palette + /*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) From 0aff5fc780404e24065f063ca32d72611e70a2cc Mon Sep 17 00:00:00 2001 From: Ariel A <24759293+aarant@users.noreply.github.com> Date: Fri, 15 Jul 2022 19:34:02 -0400 Subject: [PATCH 192/241] Updated Whismur follower sprite. --- .../object_events/pics/pokemon/whismur.png | Bin 449 -> 6959 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/graphics/object_events/pics/pokemon/whismur.png b/graphics/object_events/pics/pokemon/whismur.png index 9eaa1949ea42e6628eeb31e24e2e7fe55736a78c..714137dd4f91f131b9995f58e77fb75229e33fd1 100644 GIT binary patch literal 6959 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 delta 367 zcmV-#0g(Q$Ho*gsBa>7aJbwX9NklZjx1p9aGbacI%U@}>8O*z0Qndb9|GJin%kyibV1Fz#l zBIcnWjc3lqTSVD5EOuN1=`VE%g?fr8ud|TzNw=kJ&m`3bHR#* Date: Mon, 18 Jul 2022 00:43:39 -0400 Subject: [PATCH 193/241] Fixed old Dusclops OW sprite. --- src/data/object_events/object_event_pic_tables.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/data/object_events/object_event_pic_tables.h b/src/data/object_events/object_event_pic_tables.h index f9b26b166..975694de1 100755 --- a/src/data/object_events/object_event_pic_tables.h +++ b/src/data/object_events/object_event_pic_tables.h @@ -5352,7 +5352,7 @@ static const struct SpriteFrameImage sPicTable_DusclopsOld[] = { overworld_frame(gObjectEventPic_DusclopsOld, 2, 4, 5), overworld_frame(gObjectEventPic_DusclopsOld, 2, 4, 6), overworld_frame(gObjectEventPic_DusclopsOld, 2, 4, 7), - overworld_frame(gObjectEventPic_Dusclops, 2, 4, 8), + overworld_frame(gObjectEventPic_DusclopsOld, 2, 4, 8), }; static const struct SpriteFrameImage sPicTable_AzurillOld[] = { From 8aef50c7977b0daf79c7045de5876beefcfd7d73 Mon Sep 17 00:00:00 2001 From: Ariel A <24759293+aarant@users.noreply.github.com> Date: Thu, 21 Jul 2022 21:36:40 -0400 Subject: [PATCH 194/241] Fixed leftover Slateport light metatiles. --- .../secondary/slateport/metatiles.bin | Bin 6496 -> 6496 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/data/tilesets/secondary/slateport/metatiles.bin b/data/tilesets/secondary/slateport/metatiles.bin index 3ba541bfbd4a2a77a00b1a692ed22bf48377f019..81c28bc3c6104e5a8da3344bce8e14b65db96f88 100644 GIT binary patch delta 22 ccmaE0^uTDt9)2c?=E?i`tANyID*-i50Bb7;-~a#s delta 22 ccmaE0^uTDt9)2dt!;|;%R{^QbRsw3A0B`^ZVgLXD From 3cae0192535145ddd13f97ddc9e8a80c1e98f8bd Mon Sep 17 00:00:00 2001 From: Ariel A <24759293+aarant@users.noreply.github.com> Date: Wed, 27 Jul 2022 23:25:06 -0400 Subject: [PATCH 195/241] Fixed graphical glitch on Route 120 bridge introduced in 418cab092c. --- src/data/object_events/object_event_graphics_info.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/data/object_events/object_event_graphics_info.h b/src/data/object_events/object_event_graphics_info.h index 789fc7e17..323b12820 100755 --- a/src/data/object_events/object_event_graphics_info.h +++ b/src/data/object_events/object_event_graphics_info.h @@ -213,7 +213,7 @@ const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Zigzagoon = {TAG_N 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_Kecleon, 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}; From 1991f6595459bba1c0753290835521b35c2bfcc1 Mon Sep 17 00:00:00 2001 From: Ariel A <24759293+aarant@users.noreply.github.com> Date: Sun, 14 Aug 2022 15:16:26 -0400 Subject: [PATCH 196/241] Fixed Magnemite & Magneton OW sprite colors. --- .../object_events/pics/pokemon/magnemite.png | Bin 540 -> 6797 bytes .../object_events/pics/pokemon/magneton.png | Bin 931 -> 8871 bytes 2 files changed, 0 insertions(+), 0 deletions(-) diff --git a/graphics/object_events/pics/pokemon/magnemite.png b/graphics/object_events/pics/pokemon/magnemite.png index 8d18a7e34faeb99150d4355b1bab6857196ef531..b35e1fef566e062501e71653c25047ba60fd958b 100644 GIT binary patch literal 6797 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 delta 474 zcmV<00VV#8HJk*HBVzyubV*G`2jvJK1Oqlv$wD6h000+sMObuGZ)S9NVRB^vM@&Re zPDdbiWpW@hE;Mn4q~QPn00?w&PDe*fL^A*Y002sWDIWj;00d`2O+f$vv5yPglP`j>3j!#SHyqzX@7~+Zkp8^jk}zh=NPDn zW1w1H{q2NLg~!hD#*~$>zKl7QF>sBGh=3mASoxbEkKf4#y^VU?VGYLBT5~b90-mCp&DL!3W28Hz5&8)I&?#zN?cvbNMUWBtd!nPp0)r5}pWs zKir|Iu>F)YM}C;q*m-AR=ip**3%T(315hv>RAENj<-uul!bBGx|cHRgwqw|bXZWn4RIz8(B!(vEcT$-=$c7USDDO>Z|J zg0H|&WrTEgZN6=_KWQK19tu7P@MyjDQ+$3qYX4E@>z{#qt+xlipX{v%ozC9u_I?uV zD_Oy8bTU1*$3Az%s(~^f0Bg*Zo8SHA=hgTgf5lDyC5m2AE?GyRuq z-K?u*TjW_ubAG}|7wZ0x<_imVpZu_2N>&oe{=t4VjoYC7iC=_>;U z_mHIGZ2g;c66iO%u{t+uDx9iHOzV=Sm$_8?91{*N`w8u2)$eIEi5>OUaLol;dVIh_ zMty`|^pX0lH~EjsHX{z@d(?MiP>>nYp>{)vzGc0W$>*3yFZu`23_OEb&rx^UE@8Hc zzNB-C>930oO;p6csLKy3H@>`$WLYIEOA*)SC04~VD62c?K&%lncE!)mHTpix`e1fh z-=}=i<=sU8(AaS2cN>|_@)_-EdX8t4xAlZq(x-iWEqz10c*(W%kWKG?a3wQIb3Bkw zJ1D1f&N%o%KH#)qIqkB@kYay0eRG)C`_-faIBuO0LTr(mGf}tZ&u^vrZfbUi*b+E) zLFqcjE%+#IDJ1cpyKOrwV=-<~chG{^>*-P3D#`wgs7US;<@c438b`fISI&Q&P|fP4 z1(96$NbfYuU0sDf3i~b!A4*?wBVMt|uIi@*?BQLW2HKkUU%*CvmLBlCu~2fr99pN9 zF!*fOdYyLu)MV7yEq?13ie?md)C-^7$eUSs)n;v|!YPlpEbvYAU0C-PSmFMKV-FqA#MsAo@aBHBNyGx^@PoUC)6qI4N6F;VXx7ut^*UJ5_FywJeV-@YVs`EFZ} zy^N#|Wxea{biVkABiXHdLtmnhqjVmw>W%fPGSTtDhAQTeTHm#My~xt>*d%PH!RL{l ziM+{TrM54`?-ZEpZtI=bd9OFqF{OAHdie*OiDN~2|_H7l5Yz5s4e8N;oS(t zMpZIx!K7r6X=ctns`<@p7LKQe&&#fk8Q3{Z23C-WGQJ4e`TR&PKYD*>{yHN$857wt zlR7Y{;FeKnTSF0OmV7csNhCi=aLn|@H5(s@a%U~KdL7xtz+J7=?qkF&~Z== z)HJIRNq@X9+B7y3m1>R_$3^BpP@KpCP>g5kwTSmJ=Gcsl47G?2pp#xT|KJ(h=<0vE zq>@KY*5DK+`10~xXt8_82RXdktErXp2&hR>-otzp68`x5WCl`B6G1*F1w7jL@HSMhx7Y&D;!ZLk;LkYce)rlG0fIu(ndy` zUFa&AerxIWoR;-W-Q7qvGfn?>;jtb04>3E6a!2&aP=6~~O`HZIu1K~qT4FrPKzQV7 z!F2p%Wjx6>1B1wRU8=t3#q_@WTse}91e!&+_i-pi%Euzs@IX@6(gd zWq`(A8A_{`%)X}DQ*F|UJ)>tR%D8XziX+wYqUqM1{M?|EUARzKzjtA0r95Ys`f?9v zWodGdNP;qRRrp$hPse^c7pcfdDOgstD9V0xH1a3@Uc%um$2!l~me8kMJo7f5b~IZe zq>Jzf@%d&(8Or=7smra0YY__%FR@9j1lWOGRR=qG473nK5uB@$RKm>^Z6Zzc3PW|5 z4P!+)DnY`p!LfBz+D{aSOUgW-Rk{_O`@r z&lJF6_H{vKC*#~G*C?dxP`9+3qQ(?^T?WP5@UO7muS{^BmZzUf-&IHBS=jkG`tt2> zZ3-GQnciD&<9GwCY^)w%A!Fbazs&+xcPVZD`YJ3gR(Mup89*w}b~UD(YbyOm2>Ew< zP;OCYRw!TX*JK!utWCrscJ-BA{}nBjM>MO2$(2&z>G-TDo^P^VPc}LN$z29shxFsG zK{a?$wI%+NGIGKvb{vw=5Msn(^)=hO8G(7UR^PrGUS*}>oNZ*+rpbTb&DDX^ITrMC z^Ha%jkz$Ld1-CQ z)4A=FhNM4`x#~_jPSk?1nEPJLD4R7i`)K8Q#2R!S7UQJ1X^%|3t3Po|iB>iJg+gqU z!$LB>Bqmv&)HWs~T25%zLX=!6i_4``WgT;)ELG`}SrWY!&C7}-m0>24T6mz!mfc77 zhxsfW87>HM69gSu-tNMyt+mnehz)_lxUf1X(T`ekmWtxC0&v=O`y+&F`@tn+U0#Op zyXhQK)kRE}Z6RPP%1a+GMxv43SmvL`wlB2QNmC;GR#8M&G*}q@a`k8G(K&Da(^8O5 zg4n=FlSowP(>zLn4WjIbg$16i_vdgny(z|@G_Vh0Pxe_l_W<^STuA^?^;&B@SK<;= zFq8~b4Jm(_2@~P%XeZw!N3v0AFvPu0N0yP7#zn33>az%gBlYX%x$h^8KctuN<2(u z)*;1O@lA zP-IHD!78V{T_UO0=E0&rGdpFbaY*)VjQZt|sg?@J4lunj29HUr>o!ylCZo{PC;DL*LTc_*cnU*&euTO`1lYT4SQgeq?Iz9Cc1 z$F#L?kESH16%OCRl^MMkDL)pL6_T#re9LKJ0rsDYXI{-?qXS82L4Sg2%Lc8SC8{TV z3U6nARULH;NnJMOuAEWczXa=x4;N5sVcu2&gwPY0C2XW#qg_?@Ij{x$Lc3;^v$WG1uFR;^RJUvA`>^Lk^CDYus8Z#D-a@=;DSuYT_Qi8n;Fr=}5vKH|7hIAYNKAlg zmW77R(O2RXK~JC~io(#QXj98o{s&E~bu$f5#kZ^i$EbG2==%#^<`pqOkAHN$BJ&N% zCeJ0)#b)Jwq3ffhVQa~2SyLiTT)8#BrZ=kS)1hSVwY$b+XeM=dLo>mxD3PqmX6ijD zBa1E-IEnq@?jD0r@?hH!)loVh9huk|=FeV2TBJmBBh<#V4ICFERXwPHYO1x^7{eSl zdD^;9InnrMM@oDj;lku>AE?bP1e!6ME=BR3Kv^e8-yj0T1Xs#gjDzjSA{bujr*i1T zsWlzQ3wG8jmZ#lno(UN)mCShG6B)MpcxqCx=5;ap{7~VDoZhHQl)-hO^IeA@1;!O6 znMquUSeyB%Hci6g*#%0^r%y4*wqMo?@?yRCBp}(7gtl<+QEF+)7ZN}NxQ^^2K)-aXU3{1)+zj<9*Wp(jWjQEl!{*c3@ zM5?a4xLIQgahxD3oE-TolD@E;<2BaVpgRf>J*!3pBRyg?ZFUs2M9(GjJhrQ63g%z^ zun~(ZVPqD4W6tTS=`kFxQ}~Ac>T&0=7M*nkHObL(^gvgrajjyqP8Y}4!ig-;XO`fe zGNSNrFM}*7MsCE|$JSVIXiBQ_XuOp#XCis~oTmT^Ef0DT!glK;31GpqMY&Ip|I-!) zxaZYXujCYwLE&$A3P7`t26UYLZluBwyM20?EmCk0-M8De_alzVMX5U+005#$jEahZ zmWs+Bmk)$1hn!n?`i-bjvm^zQQFOEQ*N0N&h zq^KX0Q7Eui(2EW>$uv-h%~QlYNKGw@ySLw3{1!A3{^@q}i@k=M6qE_n#shg;isK@@ zY)P^2X3JM^MskN!7I7QKW(I;@W++X5^I>4H-2};195pKRgrrDbm}iPz$?!1iywoX{ zojw?lFV(4?q8y|rhkQ#G%iSpY;<&qUwYp7AMV((dbL8^X)XP`v-# zGtnzK^->jS7hT_{wnCF9O-HOAN#Bu5PgZ0Gp~ei<$=E@)F2xy|!?!Erf;+zn^zo%u z(5fernG`DHj^~57URc&Z*?dxoVFi0#bqd{pInlS3GrN0F-6iz_n_`|N&rin5p+{PQ zFRLPxLJHmI7n-X2ZniDaLywEEMJ;ODWGNQ{n)8PxmqO;jZ|j$LC#HMWNRkU5r(;9H zRqUEI-+i(Eu)g_qeNL?E=WReDG42^W$MYQFmgqc&a2sT%t0Uupbr(gVu=Z$Ce|Jy9 zZ4m$^dw@E+d3vq0bj z;*a!%z(k=CcX!BNExhq+z66lp1NyHP-X?@gHHZ<~8|#B}K&$zpJ@CALg+Mv{Y47QS zbNiJJ$^n9QL%S1Hy$N1ne{-p!rEBn~#Tf-o7QDi1pIFN4B5U{Er@Ud51T342Ki39zIX91TV| zNT9&>QerSLTncF~DTan3V3Oj0fztBu#v?r(&}UEta8V2aM*;>#ON)z%fe~UzdoV&u z(h)2rEruWrQI1GSM>tYU+VL+C`Zx@sE0J!0jp_^vMSy}K30Me8DA*o(1|=yb4Yn6U zz`%}D2&lLOR0<`Ivi}8za*$ES;@pvha$?+(PH2dyhtn^?8R0TY23qnUxG3~LGX`!* zyd%MYum&(5D6F6Ne?%r2ceF7cdB!J9LINrdMIg>xNlC;1VsDDZc@ui^3>5|yg(H5M zpA|-ikPd-bvB5=d}5&?m~8dnDC@S78Fq%Ruv%MrouH<5!g(!&W&SmD37)F1Ph|57do zv=mGdCV>Q_kWgtbp}zKDq?jWbj6@)%#l;bD6w3a$ivNl3jdjHPA#rFWCqkx#YzQs% zD;uET?_>)7JsLk}^cho7!up0vfnf*}n79lKAp?^DL4Hpba<-=b$W{*Wzxa^*rSO+c zfMECA9AR@I>{XCIH>=;UAD6;V|=wlT(&(5P}-$n5d19Pn@2fj*pL@#%XVy2N(_P z3WZnJ*4D2*|M-KoHzt&P!GSTc=PlLJ6D6;lo6W9yC zVw|rk9>IvM55<-5i}FcW)UxW-#Q1(mDPMz2mq)M(W=?Bhjwj7W#S$gbh{ zI9x_kN>m2z_6t|$PVs?(j$bkIRi~(f>dXryJA$GV*_j97tATeH^O z6-xK+`0H(IZGR5cE$1&J9@sc+8L?`yu~f*E=#pg)5z#7WwY6oBqXBIpEJN?B7n!{w zpPiWF39jFX&&`d4Unc5B7|=u%5WoFOYU3}|siyfEf{}ON_EXJF78}+fd8tV%D<=Hb zjf{&Sl73#);H@GndC{A3;Z#LdE3)<+YKuAzf2a+mSME!no!;WSTsQqV73L5fl9TY` z$qflcrOJa|t_x#E{n8;cs=lG|?g?lj)axv*0tR&R9!{0CY`LF$zv1rpM1i_I*TGQy zdbF(B8V<$WTM@JJYMRQTE;KJA55N&evrR9%VL8m*(O1n+1fJmxC@RgQpb=O#r%^8#7QJxJyOTAyfWL$Pp=wU9@XZBKk7-Z_;?yXAB>_Ra`#VscPZJHUFL_nhuPIf0sSXvL|lpVmBMcG>kfa{&ADa{THgzy7{&4xHFm*n}R`3K(nm&_~E%n+<>Ql&|1$o+%I}jDi>D-gQR~+}HA^%Ck z1MZs*yvJ}tS52zfbZL~!^}CFw=TYIY&-_^R{8yJBEeF`2X2U~_(g11im~b)MRPXN1 zUbg+_?GlV7?rR9zrp}EgUy$>PA@<46*~Q+u&sQd#`eq|p;C*xzRp-YJSa=oPakwHy vxliynhA+D0mY4P=!-B1^gzCGF9@0rLH2JiM9JmuY9iXMAr}|jgF6@5*aajXy delta 868 zcmV-q1DpJ(MWY9hBVzyubV*G`2jvJK1PT|-V(AC~000+sMObuGZ)S9NVRB^vM@&Re zPDdbiWpW@hE;Mn4q~QPn00?w&PDe*fL^A*Y002sWDIWj;00d`2O+f$vv5yP1%{udMUBdMVEr9FK&;$Br1eTT8Q-od59jHuy%8di&q;6kt2wvvny$L zY#P&&OAlFr;6vl@UrD1eW6$e({U!JX$}UHRXE}fUHPha8O^C%L^jlhMjeDc=8Rc9eRy zB`Lm9BY#xNvLM_)l%1Qawa#x@bb)CThWj;y;j3QY*a$=l3d}ocO3SyCLaCAkcq%^h zd;U~n=L_GMhWo21d~x$qn^PxnY)ft@S%JeD2Xtl`bXM3v$Pzcuj=wPF<67?LEAHqg z!yVzN6F5%VF5)XO($zStySC(Ap#PHjIGT#c&vj43i~fn>jsPlM0j#tPBqCnpzr~Q}0vn173lDQp Date: Sat, 6 Aug 2022 02:25:28 -0400 Subject: [PATCH 197/241] Added battle slide-in animation for Pokemon follower. --- include/battle_main.h | 1 + include/pokeball.h | 1 + src/battle_controller_player.c | 35 +++++++++++++++++----- src/battle_main.c | 23 ++++++++++++++ src/data/trainer_graphics/back_pic_anims.h | 28 +++++++++++++++++ src/pokeball.c | 11 +++++++ 6 files changed, 91 insertions(+), 8 deletions(-) diff --git a/include/battle_main.h b/include/battle_main.h index 449131e53..2a6e4bf3d 100644 --- a/include/battle_main.h +++ b/include/battle_main.h @@ -61,6 +61,7 @@ void SpriteCB_FaintSlideAnim(struct Sprite *sprite); void DoBounceEffect(u8 battlerId, u8 b, s8 c, s8 d); void EndBounceEffect(u8 battlerId, bool8 b); 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/pokeball.h b/include/pokeball.h index 1149791b8..3dbd80527 100644 --- 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/src/battle_controller_player.c b/src/battle_controller_player.c index 954192f0a..c0e2ff726 100644 --- 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" @@ -114,7 +115,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); @@ -2189,11 +2190,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; @@ -2221,7 +2240,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) @@ -2957,7 +2976,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, 0x100 + paletteNum * 16, 32); @@ -3004,16 +3023,16 @@ 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 { 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; } gBattlerControllerFuncs[gActiveBattler] = Intro_TryShinyAnimShowHealthbox; diff --git a/src/battle_main.c b/src/battle_main.c index f61d5eaae..6251fa3e8 100644 --- a/src/battle_main.c +++ b/src/battle_main.c @@ -2978,6 +2978,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/data/trainer_graphics/back_pic_anims.h b/src/data/trainer_graphics/back_pic_anims.h index ed12e0cb4..fa55ed719 100644 --- 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/pokeball.c b/src/pokeball.c index f203633a5..82ae0ee72 100644 --- 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; @@ -845,6 +850,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; From 37ca4a6cebbc08a2d3202a70e98872609b0fc3c8 Mon Sep 17 00:00:00 2001 From: Ariel A <24759293+aarant@users.noreply.github.com> Date: Sat, 6 Aug 2022 20:44:15 -0400 Subject: [PATCH 198/241] Made talking to defeated trainers follower-safe. --- data/scripts/trainer_battle.inc | 3 +++ 1 file changed, 3 insertions(+) diff --git a/data/scripts/trainer_battle.inc b/data/scripts/trainer_battle.inc index bbbcaf3ba..66d4d6d5c 100644 --- a/data/scripts/trainer_battle.inc +++ b/data/scripts/trainer_battle.inc @@ -10,6 +10,7 @@ EventScript_TrainerApproach:: EventScript_TryDoNormalTrainerBattle:: lock faceplayer + setflag FLAG_SAFE_FOLLOWER_MOVEMENT applymovement VAR_LAST_TALKED, Movement_RevealTrainer waitmovement 0 specialvar VAR_RESULT, GetTrainerFlag @@ -44,6 +45,7 @@ EventScript_NoDoubleTrainerBattle:: gotopostbattlescript EventScript_DoNoIntroTrainerBattle:: + setflag FLAG_SAFE_FOLLOWER_MOVEMENT applymovement VAR_LAST_TALKED, Movement_RevealTrainer waitmovement 0 special PlayTrainerEncounterMusic @@ -93,6 +95,7 @@ EventScript_NotEnoughMonsForDoubleRematchBattle:: end EventScript_RevealTrainer:: + setflag FLAG_SAFE_FOLLOWER_MOVEMENT applymovement VAR_LAST_TALKED, Movement_RevealTrainer waitmovement 0 return From 16babe87fc7fb102cc7fc9ff76b34b18b5338202 Mon Sep 17 00:00:00 2001 From: Ariel A <24759293+aarant@users.noreply.github.com> Date: Sun, 14 Aug 2022 14:36:49 -0400 Subject: [PATCH 199/241] Follower pokemon now disappears when teleporting. Fixed GF's incorrect GFX id on Route 123. --- data/maps/Route123/map.json | 2 +- include/party_menu.h | 1 + src/fldeff_teleport.c | 2 +- src/party_menu.c | 6 ++++++ 4 files changed, 9 insertions(+), 2 deletions(-) diff --git a/data/maps/Route123/map.json b/data/maps/Route123/map.json index 695b50acd..dd9a65201 100644 --- 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/include/party_menu.h b/include/party_menu.h index 7f51d08c9..8542b9ea4 100644 --- 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/src/fldeff_teleport.c b/src/fldeff_teleport.c index 3f087e5da..c17dc9360 100644 --- 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/party_menu.c b/src/party_menu.c index 016c359cb..357dce33d 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" @@ -3742,6 +3743,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) From d846b9c7819caaf1ca1865171870773dbd052f85 Mon Sep 17 00:00:00 2001 From: Ariel A <24759293+aarant@users.noreply.github.com> Date: Sun, 14 Aug 2022 14:48:16 -0400 Subject: [PATCH 200/241] Added dynamic palette support for virtual objects. Added flag to hide follower on certain maps. --- .../map.bin | 4 ++-- .../map.json | 14 ++++++++++---- .../scripts.inc | 1 + data/maps/FortreeCity_Gym/scripts.inc | 1 + data/maps/MossdeepCity_Gym/scripts.inc | 5 +++++ include/constants/flags.h | 2 +- src/event_object_movement.c | 18 ++++++++---------- 7 files changed, 28 insertions(+), 17 deletions(-) diff --git a/data/layouts/BattleFrontier_BattleDomeBattleRoom/map.bin b/data/layouts/BattleFrontier_BattleDomeBattleRoom/map.bin index ffb450f3c..e0f2dc82f 100644 --- 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/maps/BattleFrontier_BattleDomeBattleRoom/map.json b/data/maps/BattleFrontier_BattleDomeBattleRoom/map.json index c2b427cbe..f4c52ce05 100644 --- 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..31314b598 100644 --- 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 diff --git a/data/maps/FortreeCity_Gym/scripts.inc b/data/maps/FortreeCity_Gym/scripts.inc index 1c729bc44..d52102ebf 100644 --- 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/MossdeepCity_Gym/scripts.inc b/data/maps/MossdeepCity_Gym/scripts.inc index b47011d68..3b56513df 100644 --- 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/include/constants/flags.h b/include/constants/flags.h index 5a2a12bbe..708f4e893 100644 --- 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) diff --git a/src/event_object_movement.c b/src/event_object_movement.c index 6844afb38..7071e1baa 100644 --- a/src/event_object_movement.c +++ b/src/event_object_movement.c @@ -1650,10 +1650,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) { @@ -1661,17 +1663,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 == 10) - LoadSpecialObjectReflectionPalette(graphicsInfo->paletteTag, graphicsInfo->paletteSlot); - else if (graphicsInfo->paletteSlot >= 16) - _PatchObjectPalette(graphicsInfo->paletteTag, graphicsInfo->paletteSlot | 0xf0); if (subspriteTables != NULL) { @@ -1835,11 +1830,12 @@ void UpdateFollowingPokemon(void) { // Update following pokemon if any bool8 shiny; u8 form; // Avoid spawning large (64x64) follower pokemon inside buildings - if (GetFollowerInfo(&species, &form, &shiny) && !(gMapHeader.mapType == MAP_TYPE_INDOOR && SpeciesToGraphicsInfo(species, 0)->height == 64)) { + 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_OW_MON, + .flagId = 0, .x = gSaveBlock1Ptr->pos.x, .y = gSaveBlock1Ptr->pos.y, // If player active, copy player elevation @@ -9678,10 +9674,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) From 891b43266965081a92e423111ca9aeb898663f8a Mon Sep 17 00:00:00 2001 From: Ariel A <24759293+aarant@users.noreply.github.com> Date: Mon, 15 Aug 2022 23:18:11 -0400 Subject: [PATCH 201/241] Fixed shadow tile tag. --- include/constants/field_effects.h | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/include/constants/field_effects.h b/include/constants/field_effects.h index a29fd4e60..05d8d777d 100644 --- a/include/constants/field_effects.h +++ b/include/constants/field_effects.h @@ -129,10 +129,10 @@ #define FLDEFF_PAL_TAG_UNKNOWN 0x1011 // tile tags, for field effects that may have many copies on screen at once -#define FLDEFF_TILE_TAG_SHADOW_SMALL 0x1300 -#define FLDEFF_TILE_TAG_SHADOW_MEDIUM 0x1301 -#define FLDEFF_TILE_TAG_SHADOW_LARGE 0x1302 -#define FLDEFF_TILE_TAG_SHADOW_EXTRA_LARGE 0x1303 +#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 From 4654913cb694843b38800aa31b9d7a55a823a92d Mon Sep 17 00:00:00 2001 From: Ariel A <24759293+aarant@users.noreply.github.com> Date: Sun, 21 Aug 2022 16:44:17 -0400 Subject: [PATCH 202/241] Fixed gamma shift not blending the right palettes. Refactored/improved some lighting code. --- src/field_weather.c | 12 +++---- src/overworld.c | 83 +++++++++++++++++++++++---------------------- 2 files changed, 46 insertions(+), 49 deletions(-) diff --git a/src/field_weather.c b/src/field_weather.c index 3c8d82f81..1a337f52e 100644 --- a/src/field_weather.c +++ b/src/field_weather.c @@ -547,15 +547,11 @@ static void ApplyGammaShift(u8 startPalIndex, u8 numPalettes, s8 gammaIndex) else { if (MapHasNaturalLight(gMapHeader.mapType)) { // Time-blend - // Create the palette mask - u32 palettes = PALETTES_ALL; - numPalettes += startPalIndex; - palettes = (palettes >> startPalIndex) << startPalIndex; - palettes = (palettes << (32-numPalettes)) >> (32-numPalettes); - UpdateAltBgPalettes(palettes & PALETTES_BG); - UpdatePalettesWithTime(palettes); + 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)); + CpuFastCopy(gPlttBufferUnfaded + startPalIndex * 16, gPlttBufferFaded + startPalIndex * 16, numPalettes * 16 * sizeof(u16)); } } } diff --git a/src/overworld.c b/src/overworld.c index 8a3d2c57d..889b2e9f9 100644 --- a/src/overworld.c +++ b/src/overworld.c @@ -819,7 +819,7 @@ void LoadMapFromCameraTransition(u8 mapGroup, u8 mapNum) CopySecondaryTilesetToVramUsingHeap(gMapHeader.mapLayout); LoadSecondaryTilesetPalette(gMapHeader.mapLayout, TRUE); // skip copying to Faded, gamma shift will take care of it - ApplyWeatherGammaShiftToPals(6, 6); // palettes [6,12] + ApplyWeatherGammaShiftToPals(NUM_PALS_IN_PRIMARY, NUM_PALS_TOTAL - NUM_PALS_IN_PRIMARY); // palettes [6,12] InitSecondaryTilesetAnimation(); UpdateLocationHistoryForRoamer(); @@ -1468,46 +1468,47 @@ const struct BlendSettings gTimeOfDayBlend[] = }; u8 UpdateTimeOfDay(void) { - s32 hours, minutes; - RtcCalcLocalTime(); - hours = gLocalTime.hours; - minutes = gLocalTime.minutes; - if (hours < 4) { // night - currentTimeBlend.weight = 256; - currentTimeBlend.altWeight = 0; - return 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; - return 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; - return gTimeOfDay = TIME_OF_DAY_DAY; - } else if (hours < 18) { // day - currentTimeBlend.weight = currentTimeBlend.altWeight = 256; - return 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; - return 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; - return gTimeOfDay = TIME_OF_DAY_NIGHT; - } else { // 22-24, night - currentTimeBlend.weight = 256; - currentTimeBlend.altWeight = 0; - return gTimeOfDay = currentTimeBlend.time0 = currentTimeBlend.time1 = TIME_OF_DAY_NIGHT; - } + 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 From 237f9d3f73552938859e84a5e3a1394864e01528 Mon Sep 17 00:00:00 2001 From: Ariel A <24759293+aarant@users.noreply.github.com> Date: Mon, 22 Aug 2022 15:29:01 -0400 Subject: [PATCH 203/241] Fixed gitignore for icons & overworld. --- .gitignore | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.gitignore b/.gitignore index 94c424e69..244f3e561 100644 --- a/.gitignore +++ b/.gitignore @@ -36,7 +36,8 @@ porymap.project.cfg .fuse_hidden* .ccls-cache/* .ropeproject/ -overworld/ +/overworld/ +/icons/ *.sna *.diff *.sym From 8c6005055310ba044db7a1c0312f77e11dc8af0e Mon Sep 17 00:00:00 2001 From: Ariel A <24759293+aarant@users.noreply.github.com> Date: Wed, 24 Aug 2022 19:02:46 -0400 Subject: [PATCH 204/241] Added proper movement actions for exiting/entering pokeball. --- asm/macros/movement.inc | 2 ++ data/scripts/follower.inc | 2 +- 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/asm/macros/movement.inc b/asm/macros/movement.inc index 62618379b..8ce833037 100644 --- 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/data/scripts/follower.inc b/data/scripts/follower.inc index a8303e5ba..77e2da5cb 100644 --- a/data/scripts/follower.inc +++ b/data/scripts/follower.inc @@ -74,7 +74,7 @@ EventScript_FollowerJump:: return EnterPokeballMovement:: - .byte 0x9F @ EnterPokeball + enter_pokeball step_end @ Movement scripts below, movements are defined in movement.inc From 5c7ee40171843c009b453e7be8a6cc16f7a228a9 Mon Sep 17 00:00:00 2001 From: Ariel A <24759293+aarant@users.noreply.github.com> Date: Sun, 28 Aug 2022 02:16:49 -0400 Subject: [PATCH 205/241] Fixed follower ledge jumps. --- .../object_events/movement_type_func_tables.h | 22 +++---- src/event_object_movement.c | 64 +++++++++++++------ 2 files changed, 57 insertions(+), 29 deletions(-) diff --git a/src/data/object_events/movement_type_func_tables.h b/src/data/object_events/movement_type_func_tables.h index c8cce4d10..c30f7daaf 100755 --- a/src/data/object_events/movement_type_func_tables.h +++ b/src/data/object_events/movement_type_func_tables.h @@ -408,17 +408,17 @@ u8 (*const gMovementTypeFuncs_FollowPlayer[])(struct ObjectEvent *, struct Sprit }; bool8 (*const gFollowPlayerMovementFuncs[])(struct ObjectEvent *, struct Sprite *, u8, bool8(u8)) = { - FollowablePlayerMovement_Idle, - FollowablePlayerMovement_Idle, - FollowablePlayerMovement_Step, - FollowablePlayerMovement_GoSpeed1, - FollowablePlayerMovement_GoSpeed2, - FollowablePlayerMovement_Slide, - fph_IM_DIFFERENT, - FollowablePlayerMovement_GoSpeed4, - FollowablePlayerMovement_Jump, - FollowablePlayerMovement_Idle, - FollowablePlayerMovement_Idle, + [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 *) = { diff --git a/src/event_object_movement.c b/src/event_object_movement.c index 7071e1baa..9822d2ba2 100644 --- a/src/event_object_movement.c +++ b/src/event_object_movement.c @@ -4950,7 +4950,7 @@ bool8 MovementType_FollowPlayer_Shadow(struct ObjectEvent *objectEvent, struct S MoveObjectEventToMapCoords(objectEvent, gObjectEvents[gPlayerAvatar.objectEventId].currentCoords.x, gObjectEvents[gPlayerAvatar.objectEventId].currentCoords.y); objectEvent->triggerGroundEffectsOnMove = FALSE; // Stop endless reflection spawning } - sprite->data[1] = 1; // Enter active state; if the player moves the follower will appear + sprite->sTypeFuncId = 1; // Enter active state; if the player moves the follower will appear return TRUE; } @@ -4960,7 +4960,7 @@ bool8 MovementType_FollowPlayer_Active(struct ObjectEvent *objectEvent, struct S return FALSE; } else if (!IsFollowerVisible()) { if (objectEvent->invisible) { // Return to shadowing state - sprite->data[1] = 0; + sprite->sTypeFuncId = 0; return FALSE; } // Animate entering pokeball @@ -4968,7 +4968,7 @@ bool8 MovementType_FollowPlayer_Active(struct ObjectEvent *objectEvent, struct S ObjectEventSetSingleMovement(objectEvent, sprite, MOVEMENT_ACTION_ENTER_POKEBALL); objectEvent->singleMovementActive = 1; sprite->animCmdIndex = 0; // Needed for animCmdIndex weirdness - sprite->data[1] = 2; // movement action sets state to 0 + sprite->sTypeFuncId = 2; // movement action sets state to 0 return TRUE; } // TODO: Remove dependence on PlayerGetCopyableMovement @@ -4986,8 +4986,8 @@ bool8 MovementType_FollowPlayer_Moving(struct ObjectEvent *objectEvent, struct S if (ObjectEventExecSingleMovementAction(objectEvent, sprite)) { #endif objectEvent->singleMovementActive = 0; - if (sprite->data[1]) { // restore nonzero state - sprite->data[1] = 1; + if (sprite->sTypeFuncId) { // restore nonzero state + sprite->sTypeFuncId = 1; } } else if (objectEvent->movementActionId != MOVEMENT_ACTION_EXIT_POKEBALL) { UpdateFollowerTransformEffect(objectEvent, sprite); @@ -5000,7 +5000,7 @@ bool8 FollowablePlayerMovement_Idle(struct ObjectEvent *objectEvent, struct Spri u8 direction; if (!objectEvent->singleMovementActive) { // walk in place ObjectEventSetSingleMovement(objectEvent, sprite, GetWalkInPlaceNormalMovementAction(objectEvent->facingDirection)); - sprite->data[1] = 1; + sprite->sTypeFuncId = 1; objectEvent->singleMovementActive = 1; return TRUE; } else if (ObjectEventExecSingleMovementAction(objectEvent, sprite)) { // finish movement action @@ -5038,7 +5038,7 @@ bool8 FollowablePlayerMovement_Step(struct ObjectEvent *objectEvent, struct Spri ObjectEventSetSingleMovement(objectEvent, sprite, MOVEMENT_ACTION_EXIT_POKEBALL); objectEvent->singleMovementActive = 1; sprite->animCmdIndex = 0; // Needed because of weird animCmdIndex stuff - sprite->data[1] = 2; + sprite->sTypeFuncId = 2; return TRUE; } else if (x == targetX && y == targetY) { // don't move if already in the player's last position return FALSE; @@ -5046,14 +5046,19 @@ bool8 FollowablePlayerMovement_Step(struct ObjectEvent *objectEvent, struct Spri // Follow player direction = GetDirectionToFace(x, y, targetX, targetY); - #ifdef MB_SIDEWAYS_STAIRS_RIGHT_SIDE // https://github.com/ghoulslash/pokeemerald/tree/sideways_stairs 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 (TestPlayerAvatarFlags(PLAYER_AVATAR_FLAG_DASH)) { // Set follow speed according to player's speed + 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)); @@ -5062,13 +5067,18 @@ bool8 FollowablePlayerMovement_Step(struct ObjectEvent *objectEvent, struct Spri } sprite->sActionFuncId = 0; #else - if (TestPlayerAvatarFlags(PLAYER_AVATAR_FLAG_DASH)) // Set follow speed according to player's speed + 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->data[1] = 2; + sprite->sTypeFuncId = 2; return TRUE; } @@ -5087,7 +5097,7 @@ bool8 FollowablePlayerMovement_GoSpeed1(struct ObjectEvent *objectEvent, struct ObjectEventSetSingleMovement(objectEvent, sprite, GetFaceDirectionMovementAction(direction)); } objectEvent->singleMovementActive = TRUE; - sprite->data[1] = 2; + sprite->sTypeFuncId = 2; return TRUE; } @@ -5106,7 +5116,7 @@ bool8 FollowablePlayerMovement_GoSpeed2(struct ObjectEvent *objectEvent, struct ObjectEventSetSingleMovement(objectEvent, sprite, GetFaceDirectionMovementAction(direction)); } objectEvent->singleMovementActive = TRUE; - sprite->data[1] = 2; + sprite->sTypeFuncId = 2; return TRUE; } @@ -5125,7 +5135,7 @@ bool8 FollowablePlayerMovement_Slide(struct ObjectEvent *objectEvent, struct Spr ObjectEventSetSingleMovement(objectEvent, sprite, GetFaceDirectionMovementAction(direction)); } objectEvent->singleMovementActive = TRUE; - sprite->data[1] = 2; + sprite->sTypeFuncId = 2; return TRUE; } @@ -5137,7 +5147,7 @@ bool8 fph_IM_DIFFERENT(struct ObjectEvent *objectEvent, struct Sprite *sprite, u direction = GetCopyDirection(gInitialMovementTypeFacingDirections[objectEvent->movementType], objectEvent->directionSequenceIndex, direction); ObjectEventSetSingleMovement(objectEvent, sprite, GetJumpInPlaceMovementAction(direction)); objectEvent->singleMovementActive = TRUE; - sprite->data[1] = 2; + sprite->sTypeFuncId = 2; return TRUE; } @@ -5156,7 +5166,7 @@ bool8 FollowablePlayerMovement_GoSpeed4(struct ObjectEvent *objectEvent, struct ObjectEventSetSingleMovement(objectEvent, sprite, GetFaceDirectionMovementAction(direction)); } objectEvent->singleMovementActive = TRUE; - sprite->data[1] = 2; + sprite->sTypeFuncId = 2; return TRUE; } @@ -5172,7 +5182,7 @@ bool8 FollowablePlayerMovement_Jump(struct ObjectEvent *objectEvent, struct Spri MoveCoordsInDirection(direction, &x, &y, 2, 2); ObjectEventSetSingleMovement(objectEvent, sprite, GetJump2MovementAction(direction)); objectEvent->singleMovementActive = TRUE; - sprite->data[1] = 2; + sprite->sTypeFuncId = 2; return TRUE; } @@ -6261,6 +6271,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) @@ -6284,6 +6296,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); @@ -9512,7 +9531,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++; From 66acabe5c6439ea19592cc5ce00ca92f830a536c Mon Sep 17 00:00:00 2001 From: Ariel A <24759293+aarant@users.noreply.github.com> Date: Mon, 29 Aug 2022 00:38:23 -0400 Subject: [PATCH 206/241] Refactored follower messages. --- include/follower_helper.h | 64 ++++++++++++++++++++++-- src/event_object_movement.c | 2 +- src/follower_helper.c | 98 ++++++++++++++++++++++++------------- 3 files changed, 125 insertions(+), 39 deletions(-) diff --git a/include/follower_helper.h b/include/follower_helper.h index 54b4d4d16..115242fdb 100644 --- a/include/follower_helper.h +++ b/include/follower_helper.h @@ -16,9 +16,14 @@ enum { 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)) { @@ -55,7 +60,8 @@ struct __attribute__((packed)) FollowerMsgInfoExtended { } wt; u16 wtFlags:2; // 1 = weather matching, 2 = song, 3 = time u16 weight:3; - u16 textSpread:1; // if set, `text` is an array of texts instead + // if set, `text` is treated as an array of up to 4 texts instead + u16 textSpread:1; union __attribute__((packed)) { struct __attribute__((packed)) { @@ -63,9 +69,61 @@ struct __attribute__((packed)) FollowerMsgInfoExtended { u16 distance:6; } mb; } near; - u16 nearFlags:2; // 1 = mb within '+' shape distance away + u16 nearFlags:2; // 1 = mb within '+'-shaped distance away }; -extern const struct FollowerMsgInfoExtended gFollowerConditionalMessages[]; +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_COUNT, +}; + +extern const struct FollowerMsgInfoExtended gFollowerConditionalMessages[COND_MSG_COUNT]; #endif //GUARD_FOLLOWER_HELPER_H diff --git a/src/event_object_movement.c b/src/event_object_movement.c index 9822d2ba2..60e0b035d 100644 --- a/src/event_object_movement.c +++ b/src/event_object_movement.c @@ -2083,7 +2083,7 @@ bool8 ScrFunc_getfolloweraction(struct ScriptContext *ctx) // Essentially a big } // Match scripted conditional messages // With 50% chance, try to match scripted conditional messages - for (i = (Random() & 1) ? 28 : 0, j = 1; i < 28; i++) { + 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; diff --git a/src/follower_helper.c b/src/follower_helper.c index b477f1d1e..328bd8aab 100644 --- a/src/follower_helper.c +++ b/src/follower_helper.c @@ -66,204 +66,232 @@ 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!"); -// Note that the size of this array must also be correct in event_object_movement -const struct FollowerMsgInfoExtended gFollowerConditionalMessages[28] = { +// 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 = 1, // MATCH_SPECIES + .stFlags = ST_FLAGS_SPECIES, .emotion = FOLLOWER_EMOTION_NEUTRAL, }, + [COND_MSG_FIRE] = { .text = (u8*)sFireTexts, .st = {.types = {.type1 = TYPE_FIRE, .type2 = TYPE_FIRE}}, - .stFlags = 2, // MATCH_TYPES + .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 = 2, // MATCH_MAP + .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 = 2, // MATCH_MAP + .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 = 2, // MATCH_MAP + .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 = 2, // MATCH_SONG + .wtFlags = WT_FLAGS_MUSIC, .emotion = FOLLOWER_EMOTION_NEUTRAL, }, + [COND_MSG_VICTORY_ROAD] = { .text = sCondMsg11, .wt = {.song = MUS_VICTORY_ROAD}, - .wtFlags = 2, // MATCH_SONG + .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 = 2, // MATCH_MAP + .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 = 2, // MAP + .mmFlags = MM_FLAGS_MAP, .emotion = FOLLOWER_EMOTION_MUSIC, .textSpread = 1, }, + [COND_MSG_SAILING] = { .text = (u8*)sBoatTexts, .script = EventScript_FollowerLookAround, .wt = {.song = MUS_SAILING}, - .wtFlags = 2, // MATCH_SONG + .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 = 3, // MB + .mmFlags = MM_FLAGS_MB, .emotion = FOLLOWER_EMOTION_MUSIC, }, + [COND_MSG_SAND] = { .text = sCondMsg19, .mm = {.mb = {.behavior1 = MB_SAND, .behavior2 = MB_DEEP_SAND}}, - .mmFlags = 3, // MB + .mmFlags = MM_FLAGS_MB, .emotion = FOLLOWER_EMOTION_MUSIC, }, + [COND_MSG_GRASS] = { .text = sCondMsg20, .mm = {.mb = {.behavior1 = MB_TALL_GRASS, .behavior2 = MB_LONG_GRASS}}, - .mmFlags = 3, // MB + .mmFlags = MM_FLAGS_MB, .emotion = FOLLOWER_EMOTION_MUSIC, }, + [COND_MSG_FOOTPRINTS] = { .text = sCondMsg21, .mm = {.mb = {.behavior1 = MB_SAND, .behavior2 = MB_FOOTPRINTS}}, - .mmFlags = 3, // MB + .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 = 2, // MAP + .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 = 2, // MAP + .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 = 2, // MAP + .mmFlags = MM_FLAGS_MAP, .emotion = FOLLOWER_EMOTION_SURPRISE, }, + [COND_MSG_DRAGON_GROWL] = { .text = sCondMsg28, .st = {.types = {.type1 = TYPE_DRAGON, .type2 = TYPE_DRAGON}}, - .stFlags = 2, // MATCH_TYPES + .stFlags = ST_FLAGS_TYPE, .mm = {.mapSec = {.mapSec = MAPSEC_SKY_PILLAR}}, - .mmFlags = 1, // MAP_SEC + .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 = 2, // TYPE + .stFlags = ST_FLAGS_TYPE, .mm = {.mapSec = {.mapSec = MAPSEC_MT_PYRE}}, - .mmFlags = 1, // MAP_SEC + .mmFlags = MM_FLAGS_MAPSEC, .wt = {.song = MUS_MT_PYRE}, - .wtFlags = 2, // SONG + .wtFlags = WT_FLAGS_MUSIC, .emotion = FOLLOWER_EMOTION_UPSET, }, + [COND_MSG_FIRE_RAIN] = { .text = sCondMsg31, .st = {.types = {.type1 = TYPE_FIRE, .type2 = TYPE_FIRE}}, - .stFlags = 2, // TYPE + .stFlags = ST_FLAGS_TYPE, .wt = {.weather = {.weather1 = WEATHER_RAIN, .weather2 = WEATHER_RAIN_THUNDERSTORM}}, - .wtFlags = 1, // WEATHER + .wtFlags = WT_FLAGS_WEATHER, .emotion = FOLLOWER_EMOTION_UPSET, }, + [COND_MSG_FROZEN] = { .text = sCondMsg32, .st = {.status = STATUS1_FREEZE}, - .stFlags = 3, // STATUS + .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 = 1, // mb + .nearFlags = NEAR_FLAGS_MB, .emotion = FOLLOWER_EMOTION_MUSIC, }, + [COND_MSG_WATERFALL] = { .text = sCondMsg36, .script = EventScript_FollowerFaceResult, .near = {.mb = {.behavior = MB_WATERFALL, .distance = 5}}, - .nearFlags = 1, // mb + .nearFlags = NEAR_FLAGS_MB, .emotion = FOLLOWER_EMOTION_MUSIC, }, + [COND_MSG_RAIN] = { .text = sCondMsg37, .st = {.types = {.type1 = TYPE_FIRE, .type2 = TYPE_NOT_TYPE1}}, - .stFlags = 2, // TYPE + .stFlags = ST_FLAGS_TYPE, .wt = {.weather = {.weather1 = WEATHER_RAIN, .weather2 = WEATHER_RAIN_THUNDERSTORM}}, - .wtFlags = 1, // WEATHER + .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 = 1, // mb + .nearFlags = NEAR_FLAGS_MB, .emotion = FOLLOWER_EMOTION_PENSIVE, }, + [COND_MSG_LEAVES] = { .text = sCondMsg39, .mm = {.mapSec = {.mapSec = MAPSEC_PETALBURG_WOODS}}, - .mmFlags = 1, // MAP_SEC + .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 = 1, // mb + .nearFlags = NEAR_FLAGS_MB, .emotion = FOLLOWER_EMOTION_PENSIVE, }, + [COND_MSG_BURN] = { .text = sCondMsg42, .st = {.status STATUS1_BURN}, - .stFlags 3, // STATUS + .stFlags = ST_FLAGS_STATUS, .emotion = FOLLOWER_EMOTION_SAD, }, }; From c704591c8c769373f58736361c6f85f5e7b18c6a Mon Sep 17 00:00:00 2001 From: Ariel A <24759293+aarant@users.noreply.github.com> Date: Mon, 29 Aug 2022 01:04:26 -0400 Subject: [PATCH 207/241] Fixed field move mon palette at night. --- include/constants/field_effects.h | 1 + src/field_effect.c | 6 ++++-- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/include/constants/field_effects.h b/include/constants/field_effects.h index 05d8d777d..25edea1af 100644 --- a/include/constants/field_effects.h +++ b/include/constants/field_effects.h @@ -127,6 +127,7 @@ #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 diff --git a/src/field_effect.c b/src/field_effect.c index cbf1be0bb..6165d515e 100644 --- a/src/field_effect.c +++ b/src/field_effect.c @@ -914,8 +914,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, 1, 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, 1, x, y, paletteSlot, TAG_NONE); + PreservePaletteInWeather(IndexOfSpritePaletteTag(FLDEFF_PAL_TAG_FIELD_MOVE_MON) + 0x10); if (spriteId == 0xFFFF) return MAX_SPRITES; else From 8dc6da09fa6208ec63add8f8bbf17503787d4d20 Mon Sep 17 00:00:00 2001 From: Ariel A <24759293+aarant@users.noreply.github.com> Date: Sun, 28 Aug 2022 01:07:47 -0400 Subject: [PATCH 208/241] Fixed follower interaction with Lavaridge, Escalator, Escape warps. --- src/field_effect.c | 35 +++++++++++++++++++++++------------ 1 file changed, 23 insertions(+), 12 deletions(-) diff --git a/src/field_effect.c b/src/field_effect.c index 3ad52f20e..196eb44b3 100644 --- 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" @@ -1419,7 +1420,7 @@ void FieldCB_FallWarpExit(void) Overworld_PlaySpecialMapMusic(); WarpFadeInScreen(); ScriptContext2_Enable(); - FreezeObjectEvents(); // TODO: How does this interact with follower pokemon? + FreezeObjectEvents(); CreateTask(Task_FallWarpFieldEffect, 0); gFieldCallback = NULL; } @@ -1551,6 +1552,15 @@ 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]); + gSprites[followerObj->spriteId].animCmdIndex = 0; // Avoids a visual glitch with follower's animation frame + ObjectEventSetHeldMovement(followerObj, MOVEMENT_ACTION_ENTER_POKEBALL); +} + void StartEscalatorWarp(u8 metatileBehavior, u8 priority) { u8 taskId; @@ -1571,9 +1581,10 @@ static void Task_EscalatorWarpOut(u8 taskId) static bool8 EscalatorWarpOut_Init(struct Task *task) { - FreezeObjectEvents(); // TODO: Follower pokemon interaction + FreezeObjectEvents(); CameraObjectReset2(); StartEscalator(task->tGoingUp); + HideFollowerForFieldEffect(); // Hide follower before warping task->tState++; return FALSE; } @@ -1949,13 +1960,15 @@ static void Task_LavaridgeGymB1FWarp(u8 taskId) static bool8 LavaridgeGymB1FWarpEffect_Init(struct Task *task, struct ObjectEvent *objectEvent, struct Sprite *sprite) { - FreezeObjectEvents(); // TODO: Follower pokemon interaction + FreezeObjectEvents(); CameraObjectReset2(); SetCameraPanningCallback(NULL); gPlayerAvatar.preventStep = TRUE; objectEvent->fixedPriority = 1; task->data[1] = 1; task->data[0]++; + if (objectEvent->localId == OBJ_EVENT_ID_PLAYER) // Hide follower before warping + HideFollowerForFieldEffect(); return TRUE; } @@ -2066,7 +2079,7 @@ static void Task_LavaridgeGymB1FWarpExit(u8 taskId) static bool8 LavaridgeGymB1FWarpExitEffect_Init(struct Task *task, struct ObjectEvent *objectEvent, struct Sprite *sprite) { CameraObjectReset2(); - FreezeObjectEvents(); // TODO: Follower pokemon interaction + FreezeObjectEvents(); gPlayerAvatar.preventStep = TRUE; objectEvent->invisible = TRUE; task->data[0]++; @@ -2142,11 +2155,13 @@ static void Task_LavaridgeGym1FWarp(u8 taskId) static bool8 LavaridgeGym1FWarpEffect_Init(struct Task *task, struct ObjectEvent *objectEvent, struct Sprite *sprite) { - FreezeObjectEvents(); // TODO: Follower pokemon interaction + FreezeObjectEvents(); CameraObjectReset2(); gPlayerAvatar.preventStep = TRUE; objectEvent->fixedPriority = 1; task->data[0]++; + if (objectEvent->localId == OBJ_EVENT_ID_PLAYER) // Hide follower before warping + HideFollowerForFieldEffect(); return FALSE; } @@ -2231,7 +2246,8 @@ void SpriteCB_AshPuff(struct Sprite *sprite) void StartEscapeRopeFieldEffect(void) { ScriptContext2_Enable(); - FreezeObjectEvents(); // TODO: Follower pokemon interaction + FreezeObjectEvents(); + HideFollowerForFieldEffect(); // hide follower before warping CreateTask(Task_EscapeRopeWarpOut, 80); } @@ -2994,15 +3010,10 @@ static void Task_SurfFieldEffect(u8 taskId) static void SurfFieldEffect_Init(struct Task *task) { - struct ObjectEvent *followerObject = GetFollowerObject(); ScriptContext2_Enable(); FreezeObjectEvents(); // Put follower into pokeball before using Surf - if (followerObject && !followerObject->invisible) { - ClearObjectEventMovement(followerObject, &gSprites[followerObject->spriteId]); - gSprites[followerObject->spriteId].animCmdIndex = 0; // Needed because of weird animCmdIndex stuff - ObjectEventSetHeldMovement(followerObject, MOVEMENT_ACTION_ENTER_POKEBALL); - } + HideFollowerForFieldEffect(); gPlayerAvatar.preventStep = TRUE; SetPlayerAvatarStateMask(PLAYER_AVATAR_FLAG_SURFING); PlayerGetDestCoords(&task->tDestX, &task->tDestY); From 17758b7d66ade2003c5606aa61ad0d66a366a442 Mon Sep 17 00:00:00 2001 From: Ariel A <24759293+aarant@users.noreply.github.com> Date: Sat, 3 Sep 2022 14:41:09 -0400 Subject: [PATCH 209/241] Updated Github metadata & build script. --- .github/workflows/build.yml | 2 +- README.md | 12 ++++++------ 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 25e332491..dd145771e 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -2,7 +2,7 @@ name: Build ROM on: push: - branches: [ romhack ] + branches: [ followers ] pull_request: jobs: diff --git a/README.md b/README.md index c52414991..c3648a044 100644 --- a/README.md +++ b/README.md @@ -2,18 +2,18 @@ This is a fork of the [matching decompilation](https://github.com/pret/pokeemerald) at [PRET](https://github.com/pret). -The general philosophy of this fork is to maintain vanilla behavior & compatibility where possible, especially in terms of data structures. For that reason, this fork does not increase the size of the save data structure or the object event structure, nor does it add a `nature` field to the Pokémon structure. +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. -There are several branches, each with additional features compared to vanilla: +There are several branches, each with one main feature: -**romhack** branch: +**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. -* A way to change a pokemon's nature while mangling its PID as little as possible. +* Function to change a pokemon's nature while preserving most properties of its PID. * Function to detect newer emulators/new GBA hardware. **icons** branch: -* Everything from the **romhack** 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) @@ -22,7 +22,7 @@ There are several branches, each with additional features compared to vanilla: * Icons share palettes with front sprites, meaning that shiny pokemon will also have shiny icons! **lighting** branch: -* Everything from the **romhack** 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. From f7759760e0f319757d2e92aadb429c170fee205e Mon Sep 17 00:00:00 2001 From: Ariel A <24759293+aarant@users.noreply.github.com> Date: Sun, 28 Aug 2022 01:39:53 -0400 Subject: [PATCH 210/241] Improved shadows for Lavaridge, escalator, Escape warps. --- src/field_effect.c | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/field_effect.c b/src/field_effect.c index 6165d515e..bebf8e405 100644 --- a/src/field_effect.c +++ b/src/field_effect.c @@ -1587,6 +1587,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; @@ -1708,6 +1709,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); @@ -1804,6 +1806,7 @@ static bool8 EscalatorWarpIn_End(struct Task *task) { struct ObjectEvent *objectEvent; objectEvent = &gObjectEvents[gPlayerAvatar.objectEventId]; + objectEvent->noShadow = FALSE; if (ObjectEventClearHeldMovementIfFinished(objectEvent)) { CameraObjectReset1(); @@ -1956,6 +1959,7 @@ 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]++; return TRUE; @@ -2148,6 +2152,7 @@ static bool8 LavaridgeGym1FWarpEffect_Init(struct Task *task, struct ObjectEvent CameraObjectReset2(); gPlayerAvatar.preventStep = TRUE; objectEvent->fixedPriority = 1; + objectEvent->noShadow = TRUE; task->data[0]++; return FALSE; } From e322475aee9c083a948db478f7e33dc147cb81d0 Mon Sep 17 00:00:00 2001 From: Ariel A <24759293+aarant@users.noreply.github.com> Date: Sat, 3 Sep 2022 19:28:10 -0400 Subject: [PATCH 211/241] Fixed Rayquaza cutscene flicker. --- data/maps/SootopolisCity/scripts.inc | 1 + src/rayquaza_scene.c | 6 ++++++ 2 files changed, 7 insertions(+) diff --git a/data/maps/SootopolisCity/scripts.inc b/data/maps/SootopolisCity/scripts.inc index 69f74880e..af6f68555 100644 --- 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/src/rayquaza_scene.c b/src/rayquaza_scene.c index 5572ef833..df03bfaeb 100644 --- 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(); From 19ccc01da31d692ecdca807dac47fd38fcc8a30c Mon Sep 17 00:00:00 2001 From: Ariel A <24759293+aarant@users.noreply.github.com> Date: Sat, 10 Sep 2022 20:48:27 -0400 Subject: [PATCH 212/241] Added `clangd` compile flags & updated .gitignore. --- .gitignore | 2 ++ compile_flags.txt | 7 +++++++ 2 files changed, 9 insertions(+) create mode 100644 compile_flags.txt diff --git a/.gitignore b/.gitignore index 244f3e561..315e6c28d 100644 --- a/.gitignore +++ b/.gitignore @@ -42,3 +42,5 @@ porymap.project.cfg *.diff *.sym *.js +agbcc/ +/*.zip diff --git a/compile_flags.txt b/compile_flags.txt new file mode 100644 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 From d6bac9895d4681c0916541e1aac27c2dba955a53 Mon Sep 17 00:00:00 2001 From: Ariel A <24759293+aarant@users.noreply.github.com> Date: Sat, 3 Sep 2022 15:23:49 -0400 Subject: [PATCH 213/241] Fixed shadow palette during contests. --- src/contest_util.c | 18 ++++++++++++------ 1 file changed, 12 insertions(+), 6 deletions(-) diff --git a/src/contest_util.c b/src/contest_util.c index d8726d860..6289f2cdc 100644 --- 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, 0x160 + i * 0x10, 0x20); + sprite->oam.paletteNum = LoadObjectEventPalette(OBJ_EVENT_PAL_TAG_RS_BRENDAN); else - LoadPalette(gObjectEventPal_RubySapphireMay, 0x160 + i * 0x10, 0x20); + sprite->oam.paletteNum = LoadObjectEventPalette(OBJ_EVENT_PAL_TAG_RS_MAY); } else { if (gLinkPlayers[i].gender == MALE) - LoadPalette(gObjectEventPal_Brendan, 0x160 + i * 0x10, 0x20); + sprite->oam.paletteNum = LoadObjectEventPalette(OBJ_EVENT_PAL_TAG_BRENDAN); else - LoadPalette(gObjectEventPal_May, 0x160 + i * 0x10, 0x20); + sprite->oam.paletteNum = LoadObjectEventPalette(OBJ_EVENT_PAL_TAG_MAY); } } } From f970057930e54819efbcb0afa1ede40a393f8c90 Mon Sep 17 00:00:00 2001 From: Ariel A <24759293+aarant@users.noreply.github.com> Date: Sat, 15 Oct 2022 15:03:41 -0400 Subject: [PATCH 214/241] Fixed field_poison.c error from master merge. --- src/field_poison.c | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/src/field_poison.c b/src/field_poison.c index dbf6aef6d..e68270684 100644 --- a/src/field_poison.c +++ b/src/field_poison.c @@ -93,14 +93,16 @@ static void Task_TryFieldPoisonWhiteOut(u8 taskId) if (InBattlePyramid() | InBattlePike() || InTrainerHillChallenge()) gSpecialVar_Result = FLDPSN_FRONTIER_WHITEOUT; else - { - gSpecialVar_Result = FLDPSN_NO_WHITEOUT; - UpdateFollowingPokemon(); - } - ScriptContext_Enable(); - DestroyTask(taskId); - break; + gSpecialVar_Result = FLDPSN_WHITEOUT; } + else + { + gSpecialVar_Result = FLDPSN_NO_WHITEOUT; + UpdateFollowingPokemon(); + } + ScriptContext_Enable(); + DestroyTask(taskId); + break; } } From c46f12ed70b5919d58fffbf5cd83240b96dd7a1e Mon Sep 17 00:00:00 2001 From: Ariel A <24759293+aarant@users.noreply.github.com> Date: Tue, 18 Oct 2022 00:10:10 -0400 Subject: [PATCH 215/241] Made follower pokemon inactive on vanilla saves. --- src/event_object_movement.c | 1 + src/load_save.c | 15 +++++++++++++-- 2 files changed, 14 insertions(+), 2 deletions(-) diff --git a/src/event_object_movement.c b/src/event_object_movement.c index 960755c84..9468ecd37 100644 --- a/src/event_object_movement.c +++ b/src/event_object_movement.c @@ -1386,6 +1386,7 @@ static bool8 GetAvailableObjectEventId(u16 localId, u8 mapNum, u8 mapGroup, u8 * static void RemoveObjectEvent(struct ObjectEvent *objectEvent) { objectEvent->active = FALSE; + objectEvent->extra.asU16 = 0; // zero potential species info RemoveObjectEventInternal(objectEvent); } diff --git a/src/load_save.c b/src/load_save.c index 44e08b5e9..9c10b4b10 100644 --- a/src/load_save.c +++ b/src/load_save.c @@ -13,6 +13,7 @@ #include "gba/flash_internal.h" #include "decoration_inventory.h" #include "agb_flash.h" +#include "constants/event_objects.h" static void ApplyNewEncryptionKeyToAllEncryptedData(u32 encryptionKey); @@ -181,16 +182,26 @@ void SaveObjectEvents(void) { int i; - for (i = 0; i < OBJECT_EVENTS_COUNT; i++) + for (i = 0; i < OBJECT_EVENTS_COUNT; i++) { gSaveBlock1Ptr->objectEvents[i] = gObjectEvents[i]; + // 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; - for (i = 0; i < OBJECT_EVENTS_COUNT; i++) + for (i = 0; i < OBJECT_EVENTS_COUNT; i++) { gObjectEvents[i] = gSaveBlock1Ptr->objectEvents[i]; + // Try to restore saved inactive follower + if (gObjectEvents[i].localId == OBJ_EVENT_ID_FOLLOWER && + !gObjectEvents[i].active && + gObjectEvents[i].extra.asU16) + gObjectEvents[i].active = TRUE; + } } void CopyPartyAndObjectsToSave(void) From 5d9e9d3e0e3f6dc43678020f655889af50d2b2c4 Mon Sep 17 00:00:00 2001 From: Ariel A <24759293+aarant@users.noreply.github.com> Date: Sat, 22 Oct 2022 17:57:18 -0400 Subject: [PATCH 216/241] Fixed some follower movements. --- data/scripts/follower.inc | 28 ++++++++-------------------- 1 file changed, 8 insertions(+), 20 deletions(-) diff --git a/data/scripts/follower.inc b/data/scripts/follower.inc index 77e2da5cb..3a81e6fab 100644 --- a/data/scripts/follower.inc +++ b/data/scripts/follower.inc @@ -376,26 +376,14 @@ FollowerDance: lock_facing_direction jump_in_place_up unlock_facing_direction - walk_in_place_faster_up - walk_in_place_faster_left - walk_in_place_faster_down - walk_in_place_faster_right - walk_in_place_faster_up - walk_in_place_faster_left - walk_in_place_faster_down - walk_in_place_faster_right - walk_in_place_faster_up - walk_in_place_faster_left - walk_in_place_faster_down - walk_in_place_faster_right - walk_in_place_faster_up - walk_in_place_faster_left - walk_in_place_faster_down - walk_in_place_faster_right - walk_in_place_faster_up - walk_in_place_faster_left - walk_in_place_faster_down - walk_in_place_faster_right + 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 From 70d95eed695541520c9a79478f49ffe86e806035 Mon Sep 17 00:00:00 2001 From: Ariel A <24759293+aarant@users.noreply.github.com> Date: Thu, 27 Oct 2022 23:42:33 -0400 Subject: [PATCH 217/241] Fixed Mirage Tower falling fossil palette. --- src/mirage_tower.c | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/src/mirage_tower.c b/src/mirage_tower.c index 37096619d..6f6a8e8c1 100644 --- 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); From 782889d5334b4a7bf78449ce903fbb1f8c9ba2f7 Mon Sep 17 00:00:00 2001 From: Ariel A <24759293+aarant@users.noreply.github.com> Date: Fri, 25 Nov 2022 15:02:07 -0500 Subject: [PATCH 218/241] Fixed potentially unaligned tileset palettes. Credit to SBird --- src/data/tilesets/graphics.h | 148 +++++++++++++++++------------------ src/graphics.c | 2 +- src/palette.c | 2 + 3 files changed, 77 insertions(+), 75 deletions(-) diff --git a/src/data/tilesets/graphics.h b/src/data/tilesets/graphics.h index 2fdc28d21..a6ca2746b 100644 --- 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/graphics.c b/src/graphics.c index 8a6bbc88a..0913aeece 100644 --- a/src/graphics.c +++ b/src/graphics.c @@ -1437,7 +1437,7 @@ const u32 gUnionRoomChat_Border_Gfx[] = INCBIN_U32("graphics/union_room_chat/bor const u32 gUnionRoomChat_Border_Tilemap[] = INCBIN_U32("graphics/union_room_chat/border.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/palette.c b/src/palette.c index 60635a5d5..d2a8476dd 100644 --- a/src/palette.c +++ b/src/palette.c @@ -98,6 +98,8 @@ void LoadPalette(const void *src, u16 offset, u16 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); From beb282a35981b7caeb4cc11c2d434e80573d63a5 Mon Sep 17 00:00:00 2001 From: Ariel A <24759293+aarant@users.noreply.github.com> Date: Sun, 18 Dec 2022 18:02:07 -0500 Subject: [PATCH 219/241] Added movements/scripts for overworld follower field moves. --- data/scripts/field_move_scripts.inc | 160 +++++++++++++++++++++++----- src/event_object_movement.c | 35 ++++++ src/fldeff_rocksmash.c | 6 +- src/scrcmd.c | 9 +- 4 files changed, 180 insertions(+), 30 deletions(-) diff --git a/data/scripts/field_move_scripts.inc b/data/scripts/field_move_scripts.inc index a9ba2355c..ead669c6b 100644 --- a/data/scripts/field_move_scripts.inc +++ b/data/scripts/field_move_scripts.inc @@ -11,27 +11,26 @@ 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:: - setflag FLAG_SAFE_FOLLOWER_MOVEMENT +EventScript_CutTreeDown:: @ fallthrough + setflag FLAG_SAFE_FOLLOWER_MOVEMENT + call_if_eq VAR_0x8004, TRUE, EventScript_FollowerFieldMove applymovement VAR_LAST_TALKED, Movement_CutTreeDown waitmovement 0 removeobject VAR_LAST_TALKED releaseall end +@ Use cut from party menu +EventScript_UseCut:: + lockall + goto EventScript_CutTreeCommon + Movement_CutTreeDown: cut_tree step_end @@ -58,6 +57,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 +75,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 waitmovement 0 removeobject VAR_LAST_TALKED @@ -96,10 +96,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/src/event_object_movement.c b/src/event_object_movement.c index 59b669869..f29f7c10e 100644 --- a/src/event_object_movement.c +++ b/src/event_object_movement.c @@ -5492,6 +5492,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; diff --git a/src/fldeff_rocksmash.c b/src/fldeff_rocksmash.c index 27689b02e..71044aa30 100644 --- a/src/fldeff_rocksmash.c +++ b/src/fldeff_rocksmash.c @@ -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/scrcmd.c b/src/scrcmd.c index b15c3d18a..c7d881e21 100644 --- a/src/scrcmd.c +++ b/src/scrcmd.c @@ -53,7 +53,6 @@ typedef u16 (*SpecialFunc)(void); typedef void (*NativeFunc)(void); -typedef bool8 (*ScrFunc)(struct ScriptContext*); EWRAM_DATA const u8 *gRamScriptRetAddr = NULL; static EWRAM_DATA u32 sAddressOffset = 0; // For relative addressing in vgoto etc., used by saved scripts (e.g. Mystery Event) @@ -144,7 +143,7 @@ bool8 ScrCmd_callnative(struct ScriptContext *ctx) bool8 ScrCmd_callfunc(struct ScriptContext *ctx) { u32 func = ScriptReadWord(ctx); - return ((ScrFunc) func)(ctx); + return ((ScrCmdFunc) func)(ctx); } bool8 ScrCmd_waitstate(struct ScriptContext *ctx) @@ -1004,7 +1003,11 @@ bool8 ScrCmd_applymovement(struct ScriptContext *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 From a59564fc1ea11ed59d81c71ec654630e335bbb2c Mon Sep 17 00:00:00 2001 From: Ariel A <24759293+aarant@users.noreply.github.com> Date: Tue, 27 Dec 2022 15:28:52 -0500 Subject: [PATCH 220/241] Improved follower pokemon animation code. --- include/event_object_movement.h | 1 + src/event_object_movement.c | 15 ++++++++------- src/field_effect.c | 1 - src/field_screen_effect.c | 1 - src/scrcmd.c | 4 +--- 5 files changed, 10 insertions(+), 12 deletions(-) diff --git a/include/event_object_movement.h b/include/event_object_movement.h index 4cfff28cc..f2383272f 100644 --- a/include/event_object_movement.h +++ b/include/event_object_movement.h @@ -439,6 +439,7 @@ bool8 CopyablePlayerMovement_Jump(struct ObjectEvent *, struct Sprite *, u8, boo 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)); diff --git a/src/event_object_movement.c b/src/event_object_movement.c index f29f7c10e..265918d65 100644 --- a/src/event_object_movement.c +++ b/src/event_object_movement.c @@ -4981,7 +4981,6 @@ bool8 MovementType_FollowPlayer_Active(struct ObjectEvent *objectEvent, struct S ClearObjectEventMovement(objectEvent, sprite); ObjectEventSetSingleMovement(objectEvent, sprite, MOVEMENT_ACTION_ENTER_POKEBALL); objectEvent->singleMovementActive = 1; - sprite->animCmdIndex = 0; // Needed for animCmdIndex weirdness sprite->sTypeFuncId = 2; // movement action sets state to 0 return TRUE; } @@ -5051,7 +5050,6 @@ bool8 FollowablePlayerMovement_Step(struct ObjectEvent *objectEvent, struct Spri MoveObjectEventToMapCoords(objectEvent, targetX, targetY); ObjectEventSetSingleMovement(objectEvent, sprite, MOVEMENT_ACTION_EXIT_POKEBALL); objectEvent->singleMovementActive = 1; - sprite->animCmdIndex = 0; // Needed because of weird animCmdIndex stuff sprite->sTypeFuncId = 2; return TRUE; } else if (x == targetX && y == targetY) { // don't move if already in the player's last position @@ -6654,11 +6652,13 @@ bool8 MovementAction_ExitPokeball_Step0(struct ObjectEvent *objectEvent, struct u8 direction = gObjectEvents[gPlayerAvatar.objectEventId].facingDirection; objectEvent->invisible = FALSE; if (TestPlayerAvatarFlags(PLAYER_AVATAR_FLAG_DASH)) { // If player is dashing, the pokemon must come out faster - InitMoveInPlace(objectEvent, sprite, direction, GetMoveDirectionFastestAnimNum(direction) + 4, 8); - sprite->data[6] = 0; // fast speed + StartSpriteAnimInDirection(objectEvent, sprite, direction, GetMoveDirectionFastestAnimNum(direction) + 4); + sprite->data[3] = 8; // duration + sprite->data[6] = 0; // fast speed } else { - InitMoveInPlace(objectEvent, sprite, direction, GetMoveDirectionFastestAnimNum(direction), 16); - sprite->data[6] = 1; // slow speed + 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); @@ -6741,7 +6741,8 @@ bool8 MovementAction_ExitPokeball_Step1(struct ObjectEvent *objectEvent, struct bool8 MovementAction_EnterPokeball_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite) { u8 direction = objectEvent->facingDirection; - InitMoveInPlace(objectEvent, sprite, direction, GetMoveDirectionFasterAnimNum(direction), 16); + 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); diff --git a/src/field_effect.c b/src/field_effect.c index 4dfb98147..9980a0559 100644 --- a/src/field_effect.c +++ b/src/field_effect.c @@ -1567,7 +1567,6 @@ static void HideFollowerForFieldEffect(void) { if (!followerObj || followerObj->invisible) return; ClearObjectEventMovement(followerObj, &gSprites[followerObj->spriteId]); - gSprites[followerObj->spriteId].animCmdIndex = 0; // Avoids a visual glitch with follower's animation frame ObjectEventSetHeldMovement(followerObj, MOVEMENT_ACTION_ENTER_POKEBALL); } diff --git a/src/field_screen_effect.c b/src/field_screen_effect.c index a47ff7fd7..dd7ca7906 100644 --- a/src/field_screen_effect.c +++ b/src/field_screen_effect.c @@ -689,7 +689,6 @@ static void Task_DoDoorWarp(u8 taskId) PlaySE(GetDoorSoundEffect(*x, *y - 1)); if (followerObject) { // Put follower into pokeball ClearObjectEventMovement(followerObject, &gSprites[followerObject->spriteId]); - gSprites[followerObject->spriteId].animCmdIndex = 0; // Needed because of weird animCmdIndex stuff ObjectEventSetHeldMovement(followerObject, MOVEMENT_ACTION_ENTER_POKEBALL); } task->data[1] = FieldAnimateDoorOpen(*x, *y - 1); diff --git a/src/scrcmd.c b/src/scrcmd.c index c7d881e21..8e278bb15 100644 --- a/src/scrcmd.c +++ b/src/scrcmd.c @@ -1013,11 +1013,9 @@ bool8 ScrCmd_applymovement(struct ScriptContext *ctx) 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) { + if (objEvent == NULL || gSprites[objEvent->spriteId].data[1] == 0) return FALSE; - } ClearObjectEventMovement(objEvent, &gSprites[objEvent->spriteId]); - gSprites[objEvent->spriteId].animCmdIndex = 0; // Needed to set start frame of animation ScriptMovement_StartObjectMovementScript(OBJ_EVENT_ID_FOLLOWER, gSaveBlock1Ptr->location.mapNum, gSaveBlock1Ptr->location.mapGroup, EnterPokeballMovement); } return FALSE; From 72e723df6589d11a2feb39b8770b4a755bfff5ff Mon Sep 17 00:00:00 2001 From: Ariel A <24759293+aarant@users.noreply.github.com> Date: Sat, 7 Jan 2023 17:54:21 -0500 Subject: [PATCH 221/241] Expanded graphicsId field. --- asm/macros/map.inc | 6 +- include/constants/event_objects.h | 4 ++ include/global.fieldmap.h | 20 ++---- src/event_object_movement.c | 114 ++++++++++++++++-------------- src/field_player_avatar.c | 4 +- src/load_save.c | 2 +- src/shop.c | 2 +- 7 files changed, 78 insertions(+), 74 deletions(-) diff --git a/asm/macros/map.inc b/asm/macros/map.inc index 662257e41..c58896246 100644 --- a/asm/macros/map.inc +++ b/asm/macros/map.inc @@ -21,10 +21,8 @@ @ 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 \inConnection - .space 1 @ Padding + .byte \index, \inConnection + .2byte \gfx .2byte \x, \y .byte \elevation .byte \movement_type diff --git a/include/constants/event_objects.h b/include/constants/event_objects.h index 1d3d7a701..442d096cc 100644 --- a/include/constants/event_objects.h +++ b/include/constants/event_objects.h @@ -276,6 +276,10 @@ #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 OW_SPECIES(x) (x->graphicsId - OBJ_EVENT_GFX_MON_BASE) + #define SHADOW_SIZE_S 0 #define SHADOW_SIZE_M 1 #define SHADOW_SIZE_L 2 diff --git a/include/global.fieldmap.h b/include/global.fieldmap.h index 601656f89..9b5eb8900 100644 --- a/include/global.fieldmap.h +++ b/include/global.fieldmap.h @@ -66,8 +66,8 @@ struct BackupMapLayout struct ObjectEventTemplate { /*0x00*/ u8 localId; - /*0x01*/ u8 graphicsId; - /*0x02*/ u8 inConnection; // Leftover from FRLG + /*0x02*/ u16 graphicsId; + // /*0x02*/ u8 inConnection; // Leftover from FRLG /*0x04*/ s16 x; /*0x06*/ s16 y; /*0x08*/ u8 elevation; @@ -192,8 +192,9 @@ struct ObjectEvent u32 disableJumpLandingGroundEffect:1; u32 fixedPriority:1; u32 hideReflection:1; - /*0x04*/ u8 spriteId; - /*0x05*/ u8 graphicsId; + u32 shiny:1; // OW mon shininess + /*0x04*/ u16 graphicsId:11; // 11 bits; 2048 entries + /*0x05*/ u16 form:5; /*0x06*/ u8 movementType; /*0x07*/ u8 trainerType; /*0x08*/ u8 localId; @@ -216,15 +217,8 @@ struct ObjectEvent /*0x1F*/ u8 previousMetatileBehavior; /*0x20*/ u8 previousMovementDirection; /*0x21*/ u8 directionSequenceIndex; - /*0x22*/ union __attribute__((packed)) { - u8 playerCopyableMovement; // COPY_MOVE_* - struct __attribute__((packed)) { - u16 species:10; // 11 bits; 1024 species - u16 form:5; // Used for Deoxys, Unown, etc - u16 shiny:1; - } mon; - u16 asU16; - } extra; + /*0x22*/ u8 playerCopyableMovement; // COPY_MOVE_* + /*0x23*/ u8 spriteId; /*size = 0x24*/ }; diff --git a/src/event_object_movement.c b/src/event_object_movement.c index 265918d65..cf3cc5e71 100644 --- a/src/event_object_movement.c +++ b/src/event_object_movement.c @@ -1399,8 +1399,9 @@ static bool8 GetAvailableObjectEventId(u16 localId, u8 mapNum, u8 mapGroup, u8 * static void RemoveObjectEvent(struct ObjectEvent *objectEvent) { objectEvent->active = FALSE; - objectEvent->extra.asU16 = 0; // zero potential species info RemoveObjectEventInternal(objectEvent); + // zero potential species info + objectEvent->graphicsId = objectEvent->form = objectEvent->shiny = 0; } void RemoveObjectEventByLocalIdAndMap(u8 localId, u8 mapNum, u8 mapGroup) @@ -1497,6 +1498,9 @@ TrySpawnObjectEventTemplate(struct ObjectEventTemplate *objectEventTemplate, struct SpriteFrameImage spriteFrameImage; const struct ObjectEventGraphicsInfo *graphicsInfo; const struct SubspriteTable *subspriteTables = NULL; + u16 species; + u8 form; + bool8 shiny; graphicsInfo = GetObjectEventGraphicsInfo(objectEventTemplate->graphicsId); MakeSpriteTemplateFromObjectEventTemplate(objectEventTemplate, &spriteTemplate, &subspriteTables); @@ -1510,26 +1514,25 @@ TrySpawnObjectEventTemplate(struct ObjectEventTemplate *objectEventTemplate, if (subspriteTables) SetSubspriteTables(&gSprites[gObjectEvents[objectEventId].spriteId], subspriteTables); - // Set species based on script header - if (objectEventTemplate->graphicsId == OBJ_EVENT_GFX_OW_MON && objectEventTemplate->script) { + // Set form & shininess based on script header + if (objectEventTemplate->graphicsId >= OBJ_EVENT_GFX_MON_BASE && objectEventTemplate->script) { const u8 *script = objectEventTemplate->script; if (script[0] == 0x7d) { // bufferspeciesname - u16 species; - u8 form; - bool8 shiny; - gObjectEvents[objectEventId].extra.asU16 = script[2] | script[3] << 8; - species = gObjectEvents[objectEventId].extra.mon.species; - form = gObjectEvents[objectEventId].extra.mon.form; - shiny = gObjectEvents[objectEventId].extra.mon.shiny; + species = script[2] | script[3] << 8; + form = (species >> 10) & 0x1F; + shiny = species >> 15; + gObjectEvents[objectEventId].form = form; + gObjectEvents[objectEventId].shiny = shiny; + species = OW_SPECIES(objectEventTemplate); FollowerSetGraphics(&gObjectEvents[objectEventId], species, form, shiny); } // Set runtime species based on VAR_TEMP_4, if template has a dynamic graphics ID - } else if (objectEventTemplate->graphicsId >= OBJ_EVENT_GFX_VARS && VarGetObjectEventGraphicsId(objectEventTemplate->graphicsId - OBJ_EVENT_GFX_VARS) == OBJ_EVENT_GFX_OW_MON) { - gObjectEvents[objectEventId].extra.asU16 = VarGet(VAR_TEMP_4); - FollowerSetGraphics(&gObjectEvents[objectEventId], - gObjectEvents[objectEventId].extra.mon.species, - gObjectEvents[objectEventId].extra.mon.form, - gObjectEvents[objectEventId].extra.mon.form); + } else if (objectEventTemplate->graphicsId >= OBJ_EVENT_GFX_VARS && VarGetObjectEventGraphicsId(objectEventTemplate->graphicsId - OBJ_EVENT_GFX_VARS) >= OBJ_EVENT_GFX_MON_BASE) { + species = VarGet(VAR_TEMP_4); + gObjectEvents[objectEventId].form = form = (species >> 10) & 0x1F; + gObjectEvents[objectEventId].shiny = shiny = species >> 15; + species = OW_SPECIES(objectEventTemplate); + FollowerSetGraphics(&gObjectEvents[objectEventId], species, form, shiny); } return objectEventId; @@ -1552,7 +1555,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; @@ -1614,7 +1617,7 @@ u8 CreateObjectGraphicsSprite(u16 graphicsId, void (*callback)(struct Sprite *), u8 paletteNum; spriteTemplate = Alloc(sizeof(struct SpriteTemplate)); - if (graphicsId == OBJ_EVENT_GFX_OW_MON && GetFollowerInfo(&species, &form, &shiny)) { + if (graphicsId >= OBJ_EVENT_GFX_MON_BASE && GetFollowerInfo(&species, &form, &shiny)) { const struct ObjectEventGraphicsInfo *graphicsInfo = SpeciesToGraphicsInfo(species, form); spriteTemplate->tileTag = graphicsInfo->tileTag; spriteTemplate->paletteTag = graphicsInfo->paletteTag; @@ -1748,12 +1751,11 @@ static u8 LoadDynamicFollowerPalette(u16 species, u8 form, bool8 shiny) { // Set graphics & sprite for a follower object event by species & shininess. static void FollowerSetGraphics(struct ObjectEvent *objEvent, u16 species, u8 form, bool8 shiny) { const struct ObjectEventGraphicsInfo *graphicsInfo = SpeciesToGraphicsInfo(species, form); - objEvent->graphicsId = OBJ_EVENT_GFX_OW_MON; + objEvent->graphicsId = OBJ_EVENT_GFX_MON_BASE + species; ObjectEventSetGraphics(objEvent, graphicsInfo); - objEvent->graphicsId = OBJ_EVENT_GFX_OW_MON; - objEvent->extra.mon.species = species; - objEvent->extra.mon.form = form; - objEvent->extra.mon.shiny = shiny; + objEvent->graphicsId = OBJ_EVENT_GFX_MON_BASE + species; + objEvent->form = form; + objEvent->shiny = shiny; if (graphicsInfo->paletteTag == OBJ_EVENT_PAL_TAG_DYNAMIC) { // Use palette from species palette table struct Sprite *sprite = &gSprites[objEvent->spriteId]; // Free palette if otherwise unused @@ -1768,9 +1770,9 @@ static void FollowerSetGraphics(struct ObjectEvent *objEvent, u16 species, u8 fo // 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 = objEvent->extra.mon.species; - u8 form = objEvent->extra.mon.form; - u8 shiny = objEvent->extra.mon.shiny; + u16 species = OW_SPECIES(objEvent); + u8 form = objEvent->form; + u8 shiny = objEvent->shiny; const struct ObjectEventGraphicsInfo *graphicsInfo = SpeciesToGraphicsInfo(species, form); struct Sprite *sprite = &gSprites[objEvent->spriteId]; u8 i = FindObjectEventPaletteIndexByTag(graphicsInfo->paletteTag); @@ -1844,11 +1846,11 @@ void UpdateFollowingPokemon(void) { // Update following pokemon if any bool8 shiny; u8 form; // 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 (GetFollowerInfo(&species, &form, &shiny) && !(gMapHeader.mapType == MAP_TYPE_INDOOR && SpeciesToGraphicsInfo(species, 0)->height == 64) && !FlagGet(FLAG_TEMP_HIDE_FOLLOWER) && FALSE) { // TODO if (objEvent == NULL) { // Spawn follower struct ObjectEventTemplate template = { .localId = OBJ_EVENT_ID_FOLLOWER, - .graphicsId = OBJ_EVENT_GFX_OW_MON, + .graphicsId = OBJ_EVENT_GFX_MON_BASE + species, .flagId = 0, .x = gSaveBlock1Ptr->pos.x, .y = gSaveBlock1Ptr->pos.y, @@ -1861,15 +1863,12 @@ void UpdateFollowingPokemon(void) { // Update following pokemon if any } sprite = &gSprites[objEvent->spriteId]; // Follower appearance changed; move to player and set invisible - if (species != objEvent->extra.mon.species || shiny != objEvent->extra.mon.shiny || form != objEvent->extra.mon.form) { + if (species != OW_SPECIES(objEvent) || shiny != objEvent->shiny || form != objEvent->form) { MoveObjectEventToMapCoords(objEvent, gObjectEvents[gPlayerAvatar.objectEventId].currentCoords.x, gObjectEvents[gPlayerAvatar.objectEventId].currentCoords.y); objEvent->invisible = TRUE; } FollowerSetGraphics(objEvent, species, form, shiny); sprite->data[6] = 0; // set animation data - objEvent->extra.mon.species = species; - objEvent->extra.mon.shiny = shiny; - objEvent->extra.mon.form = form; } else { RemoveFollowingPokemon(); } @@ -2285,8 +2284,8 @@ static void SpawnObjectEventOnReturnToField(u8 objectEventId, s16 x, s16 y) sprite->coordOffsetEnabled = TRUE; sprite->sObjEventId = objectEventId; objectEvent->spriteId = i; - if (objectEvent->graphicsId == OBJ_EVENT_GFX_OW_MON) { // Set pokemon graphics - FollowerSetGraphics(objectEvent, objectEvent->extra.mon.species, objectEvent->extra.mon.form, objectEvent->extra.mon.shiny); + if (objectEvent->graphicsId >= OBJ_EVENT_GFX_MON_BASE) { // Set pokemon graphics + FollowerSetGraphics(objectEvent, OW_SPECIES(objectEvent), objectEvent->form, objectEvent->shiny); } if (!objectEvent->inanimate && objectEvent->movementType != MOVEMENT_TYPE_PLAYER) StartSpriteAnim(sprite, GetFaceDirectionAnimNum(objectEvent->facingDirection)); @@ -2445,15 +2444,17 @@ const struct ObjectEventGraphicsInfo *GetObjectEventGraphicsInfo(u8 graphicsId) { u8 bard; - 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) - { + if (graphicsId == OBJ_EVENT_GFX_BARD) { bard = GetCurrentMauvilleOldMan(); return gMauvilleOldManGraphicsInfoPointers[bard]; } + if (graphicsId >= OBJ_EVENT_GFX_MON_BASE) + return SpeciesToGraphicsInfo(graphicsId - OBJ_EVENT_GFX_MON_BASE, 0); + if (graphicsId >= NUM_OBJ_EVENT_GFX) graphicsId = OBJ_EVENT_GFX_NINJA_BOY; @@ -4893,12 +4894,12 @@ static bool8 EndFollowerTransformEffect(struct ObjectEvent *objectEvent, struct static bool8 TryStartFollowerTransformEffect(struct ObjectEvent *objectEvent, struct Sprite *sprite) { u32 multi; - if (objectEvent->extra.mon.species == SPECIES_CASTFORM && objectEvent->extra.mon.form != (multi = GetOverworldCastformForm())) { + if (OW_SPECIES(objectEvent) == SPECIES_CASTFORM && objectEvent->form != (multi = GetOverworldCastformForm())) { sprite->data[7] = TRANSFORM_TYPE_PERMANENT << 8; - objectEvent->extra.mon.form = multi; + objectEvent->form = multi; return TRUE; } else if ((gRngValue >> 16) < 18 && GetLocalWildMon(FALSE) - && (objectEvent->extra.mon.species == SPECIES_MEW || objectEvent->extra.mon.species == SPECIES_DITTO)) { + && (OW_SPECIES(objectEvent) == SPECIES_MEW || OW_SPECIES(objectEvent) == SPECIES_DITTO)) { sprite->data[7] = TRANSFORM_TYPE_RANDOM_WILD << 8; PlaySE(SE_M_MINIMIZE); return TRUE; @@ -4910,7 +4911,7 @@ static bool8 UpdateFollowerTransformEffect(struct ObjectEvent *objectEvent, stru u8 type = sprite->data[7] >> 8; u8 frames = sprite->data[7] & 0xFF; u8 stretch; - u32 multi; + u32 multi, multi2; if (!type) return TryStartFollowerTransformEffect(objectEvent, sprite); sprite->oam.mosaic = TRUE; @@ -4928,15 +4929,18 @@ static bool8 UpdateFollowerTransformEffect(struct ObjectEvent *objectEvent, stru RefreshFollowerGraphics(objectEvent); break; case TRANSFORM_TYPE_RANDOM_WILD: - multi = objectEvent->extra.asU16; - objectEvent->extra.mon.species = GetLocalWildMon(FALSE); - if (!objectEvent->extra.mon.species) { - objectEvent->extra.asU16 = multi; + multi = objectEvent->graphicsId; + objectEvent->graphicsId = GetLocalWildMon(FALSE); + if (!objectEvent->graphicsId) { + objectEvent->graphicsId = multi; break; } - objectEvent->extra.mon.form = 0; + objectEvent->graphicsId += OBJ_EVENT_GFX_MON_BASE; + multi2 = objectEvent->form; + objectEvent->form = 0; RefreshFollowerGraphics(objectEvent); - objectEvent->extra.asU16 = multi; + objectEvent->graphicsId = multi; + objectEvent->form = multi2; break; } } @@ -5529,7 +5533,7 @@ void SetTrainerMovementType(struct ObjectEvent *objectEvent, u8 movementType) { objectEvent->movementType = movementType; objectEvent->directionSequenceIndex = 0; - objectEvent->extra.playerCopyableMovement = 0; + objectEvent->playerCopyableMovement = 0; gSprites[objectEvent->spriteId].callback = sMovementTypeCallbacks[movementType]; gSprites[objectEvent->spriteId].sTypeFuncId = 0; } @@ -6650,6 +6654,7 @@ static u8 LoadWhiteFlashPalette(struct ObjectEvent *objectEvent, struct 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); @@ -6662,6 +6667,7 @@ bool8 MovementAction_ExitPokeball_Step0(struct ObjectEvent *objectEvent, struct } 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); } @@ -6722,7 +6728,7 @@ bool8 MovementAction_ExitPokeball_Step1(struct ObjectEvent *objectEvent, struct return TRUE; // Set graphics, palette, and affine animation } else if ((duration == 0 && sprite->data[3] == 3) || (duration == 1 && sprite->data[3] == 7)) { - FollowerSetGraphics(objectEvent, objectEvent->extra.mon.species, objectEvent->extra.mon.form, objectEvent->extra.mon.shiny); + FollowerSetGraphics(objectEvent, OW_SPECIES(objectEvent), objectEvent->form, objectEvent->shiny); LoadWhiteFlashPalette(objectEvent, sprite); // Initialize affine animation sprite->affineAnims = sAffineAnims_PokeballFollower; @@ -6734,7 +6740,7 @@ bool8 MovementAction_ExitPokeball_Step1(struct ObjectEvent *objectEvent, struct sprite->affineAnimEnded = TRUE; FreeSpriteOamMatrix(sprite); sprite->oam.affineMode = ST_OAM_AFFINE_OFF; - FollowerSetGraphics(objectEvent, objectEvent->extra.mon.species, objectEvent->extra.mon.form, objectEvent->extra.mon.shiny); + FollowerSetGraphics(objectEvent, OW_SPECIES(objectEvent), objectEvent->form, objectEvent->shiny); } return FALSE; } @@ -6750,6 +6756,7 @@ bool8 MovementAction_EnterPokeball_Step0(struct ObjectEvent *objectEvent, struct 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; @@ -6765,6 +6772,7 @@ bool8 MovementAction_EnterPokeball_Step1(struct ObjectEvent *objectEvent, struct FreeSpriteOamMatrix(sprite); sprite->oam.affineMode = ST_OAM_AFFINE_OFF; ObjectEventSetGraphicsId(objectEvent, OBJ_EVENT_GFX_ANIMATED_BALL); + objectEvent->graphicsId = graphicsId; objectEvent->inanimate = FALSE; } return FALSE; @@ -6772,7 +6780,7 @@ bool8 MovementAction_EnterPokeball_Step1(struct ObjectEvent *objectEvent, struct bool8 MovementAction_EnterPokeball_Step2(struct ObjectEvent *objectEvent, struct Sprite *sprite) { - FollowerSetGraphics(objectEvent, objectEvent->extra.mon.species, objectEvent->extra.mon.form, objectEvent->extra.mon.shiny); + FollowerSetGraphics(objectEvent, OW_SPECIES(objectEvent), objectEvent->form, objectEvent->shiny); objectEvent->invisible = TRUE; sprite->data[1] = 0; sprite->data[6] = 0; @@ -8923,13 +8931,13 @@ static void (*const sGroundEffectTracksFuncs[])(struct ObjectEvent *objEvent, st void GroundEffect_SandTracks(struct ObjectEvent *objEvent, struct Sprite *sprite) { - const struct ObjectEventGraphicsInfo *info = objEvent->graphicsId == OBJ_EVENT_GFX_OW_MON ? SpeciesToGraphicsInfo(objEvent->extra.mon.species, 0) : GetObjectEventGraphicsInfo(objEvent->graphicsId); + const struct ObjectEventGraphicsInfo *info = GetObjectEventGraphicsInfo(objEvent->graphicsId); sGroundEffectTracksFuncs[objEvent->invisible ? TRACKS_NONE : info->tracks](objEvent, sprite, FALSE); } void GroundEffect_DeepSandTracks(struct ObjectEvent *objEvent, struct Sprite *sprite) { - const struct ObjectEventGraphicsInfo *info = objEvent->graphicsId == OBJ_EVENT_GFX_OW_MON ? SpeciesToGraphicsInfo(objEvent->extra.mon.species, 0) : GetObjectEventGraphicsInfo(objEvent->graphicsId); + const struct ObjectEventGraphicsInfo *info = GetObjectEventGraphicsInfo(objEvent->graphicsId); sGroundEffectTracksFuncs[objEvent->invisible ? TRACKS_NONE : info->tracks](objEvent, sprite, TRUE); } diff --git a/src/field_player_avatar.c b/src/field_player_avatar.c index 0afe31ecb..5f4573c53 100644 --- a/src/field_player_avatar.c +++ b/src/field_player_avatar.c @@ -929,12 +929,12 @@ static bool8 PlayerCheckIfAnimFinishedOrInactive(void) static void PlayerSetCopyableMovement(u8 movement) { - gObjectEvents[gPlayerAvatar.objectEventId].extra.playerCopyableMovement = movement; + gObjectEvents[gPlayerAvatar.objectEventId].playerCopyableMovement = movement; } u8 PlayerGetCopyableMovement(void) { - return gObjectEvents[gPlayerAvatar.objectEventId].extra.playerCopyableMovement; + return gObjectEvents[gPlayerAvatar.objectEventId].playerCopyableMovement; } static void PlayerForceSetHeldMovement(u8 movementActionId) diff --git a/src/load_save.c b/src/load_save.c index 9c10b4b10..da6997de0 100644 --- a/src/load_save.c +++ b/src/load_save.c @@ -199,7 +199,7 @@ void LoadObjectEvents(void) // Try to restore saved inactive follower if (gObjectEvents[i].localId == OBJ_EVENT_ID_FOLLOWER && !gObjectEvents[i].active && - gObjectEvents[i].extra.asU16) + gObjectEvents[i].graphicsId >= OBJ_EVENT_GFX_MON_BASE) gObjectEvents[i].active = TRUE; } } diff --git a/src/shop.c b/src/shop.c index d246fea6f..3fcebd319 100644 --- a/src/shop.c +++ b/src/shop.c @@ -867,7 +867,7 @@ static void BuyMenuCollectObjectEventData(void) u8 objEventId = GetObjectEventIdByXY(facingX - 4 + x, facingY - 2 + y); // 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_OW_MON && gObjectEvents[objEventId].localId != OBJ_EVENT_ID_FOLLOWER)) + 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; From ac6e8cd54e716e2fdf77407a4e1ad29f3f83af62 Mon Sep 17 00:00:00 2001 From: Ariel A <24759293+aarant@users.noreply.github.com> Date: Thu, 12 Jan 2023 21:33:16 -0500 Subject: [PATCH 222/241] Updated Squirtle & evolutions OW graphics. Credit: andrian_timeswift --- .../object_events/pics/pokemon/blastoise.png | Bin 1028 -> 989 bytes .../object_events/pics/pokemon/squirtle.png | Bin 368 -> 434 bytes .../object_events/pics/pokemon/wartortle.png | Bin 609 -> 677 bytes 3 files changed, 0 insertions(+), 0 deletions(-) diff --git a/graphics/object_events/pics/pokemon/blastoise.png b/graphics/object_events/pics/pokemon/blastoise.png index e9dcb580c52a131c0176dfa17619ad5cbd25745f..1699c8d1698a3b8de4239661a83f1845d37f1a8d 100644 GIT binary patch delta 920 zcmV;J184k%2;B#e7zqdi0001UMu)eNdp~~=bW%=J0RR90|NsC0|NsC0|NsC0z)*`r z0009_Nkll)KyE z5Pd3eQz-gOpm+F?ZvpN#!tDgy@hyMDtP_i2CMrv;!y)qrup>R7ypm%CSpgsNBfyKm zMgrPA3rsHsaip1?D;4&*?1>4~gC>(ZPJzz7PI)?WT(||O3UilIeRTpJxK)T~^c<&& zW-lvT1@`!$$BfSla9M@V+!7!%ota2Ooq#8vbYnF!(=@WWhHHv@Ji8#i1x9~VoxaC` zSxVEJ5zVu_wJyVJe!;xiG=d2sNS)(1c-|w27$wX4bZeoo%SGR;64mU_GJr>(SS3!9 zUs$Dr$^drGYlCkBM?icgV02pR={$k_f97`q?2j4O@io7WPg31e%(o5QqN364Tzheg zt3V&k1M=e~)9x(5N#@VI3Q&Iz#ao*G$dL(W9%|0lA{-?>SQcv&qL5IeICFcQH@FF0 zrrnn0%M$SE%*y~pprb>ebct}jd8HIeehDy3jB(lpqJ9?`UvIbyOou?(@~YADnHK?O zf%$M+r8}geL`oj2tK}#Yle4$2w5dh_Z`|ZsTrp;OF)sCWGp)gwSowYMEaIvmR7ITT5!SI!&8gvDIRw#&uE_``LjS@UVD4od}L;LO{E9~^3C(g z6?2o@F_sRgHa2ej_BAkOj^YSsfvRwOQ;WVjfM;$#T0_=n*f;bmU$C8$nrowl=3ul- zODWI-6CEpVB%ixLj}9ZmQcV<=|~? zEj+n3`Fe8uT+ZLTwf;WOPTDA011Jx`&X?VzhWqWZDbNBeUCZ$~z`Fo)f^NniYqM{C u(e0~rJe~!9WGsJ delta 958 zcmV;v13~=V2ZRWa7-Iwj0002CwraKj000McNliru

@X8x*7JHGlvB02g#cSaefw zW^{L9a%BKVOhiylM<8}(av(DOV1ZP1_ zK>z@;j|==^1(6{?e*t1kM@0Xn2lB-L00SsVL_t(|obA=mOWR-=2k;y`C+Iwlm15V! zE;fvL^><1^CV|nOy$FL{c9BIq?68YP2L26$fl>zj2Rw}(#(dLKl2&EDq@f&311x&0~(l0v$d;+(MV8*<(-ragvsv=Trl}^P%3)J#uav0wosc@B!i$ zXdJdB!UGbPe;iKk)i6MBYJ7Y`zTgAIEh3|z(N>qqe~crfnXX*XhP(X1Pg)w3mvXs$ zam{14x&4M1YRgq$4AfN9UC&lsvwDsi>9#ACvZ53#6))A|3I3(kyOX4-Mr;J84IdLt zBcBZYW@OROnWF)f3N&=tag*B*v`X4r&-kj8)zAcmhKA2J3EBSOwpfFV$;<#NucEutSas4wAT8n@J84GT`X zVWn1=hq_GQ9qPMBjL@*lSJmo{5eDe{)#|Rl$8frpr~lbY{2iY(tY{kq>9ULX8Cuu>5C$;YLQt3MhJNhf;79KA4Lnw6m%Ep72{Z_fK5^gg+ifFC=?2X zLZ1;4eUlT}2A}ud4ac8z!F?QZE%99r6MFnt8aU?2;quYV5xHDGe8OJ_G8(Y?c>{lW zao*xmVDStCczh)s+q^#(2Mstp@tC|nfWhZu2T+dGEPKkErenkE4B#i_0U00000onet1MmWn7zqRe0002CwraMKAwPfnNklYf@bxw020_-4nl4L*quPBCu@nt#}_Y?FT; zL|;)c_6I0#JR!KUP0K3^n#bX+*<^&@n_?s&ImNrnvscUy>uk diff --git a/graphics/object_events/pics/pokemon/wartortle.png b/graphics/object_events/pics/pokemon/wartortle.png index 58bd014f69ecf4fdc9a0c6f2174d1f70e576c0c7..870d26c64c711f69ce059ca3cd9f6325a06c2f28 100644 GIT binary patch delta 606 zcmV-k0-^ok1f>O#7zqdi0001UMu)eNAwGWq5Oh*bQvm<}|NsC0|NsC0|NsC0|G-d- zLjV8*6iGxuR9J=WmVr*gFbqT+Yppbt*#G~x_?$9Y?VJvQKteHMLcA=ybIw_pW!9`& zvu4ejHS6D$>i76xmzFYAIN&F1#OD?Nk$A^GUVuCI1y2Wk#bXUAY!ZPgg@V@3gh`yM8$2H@=y%m3qNaX^L+=MCAV$onLhzl|B$*IA}c{oT6eBfpb z`{uWPz+B*&vwOhy1vi(-3>-K&h>I!|Qh}eC^TqZV_xvgoc;LbXSgY~F^)2Z2v;{p#niMU08&4*1$leFy|L&6di30Xbnl@4jgt6zV{`O^R{ z>1|!Hm)BI z2OQaj{`8jc{DWr+aBej&`ov0r2T+1%^16YV%75@wKs@UW><3Q;ILDGv1HcFRa957} sEufa3;Be>Hmkk>5{q0}WIP3T79br-})!Nu>5&!@I07*qoM6N<$f|@-pUjP6A delta 538 zcmV+#0_FXs1>ppc7zqRe0002CwraMKAwGWr>`6pHRCt{2ls#_aFc5`#0_qMdwpb|I zi{u{lDPB_JVV8DiUk%3;0HG!hkTD5(h}mP zn{K-4ze%>&`Jd&AYmBqdIe#sgn=33e3T&k_3moC}Ti`enm25d-2|0rC=g?2AOk{u5 z#RBhF7?rnTk-fG68)z3;>f8f(WfnLt00*@E0&4)!JYdEU1MM;&40+R!OqVFDXjqwI z#;jf=Y{@}Z=u?IYkPJ`UQxE-q#Hlu6Pjz&v+p;60Dk{bjdO$;lN6s`Ex&ff~I%O6p zwJLakS26J8j2YYm)MR*KAcG+e-1mPv<$>61T`SLolf2LiC%>81(dd?HWu|^Dxvk8$KWK+O&10k6oXLL=%T{E@3oTMKWuJDEVv!P3l c-&B7AV@|`|S5h7>00000Nks-uM6N<$f^sqYvH$=8 From 5d5d97b46a90af1bb74cf38b07cda2e4f48f89da Mon Sep 17 00:00:00 2001 From: Ariel A <24759293+aarant@users.noreply.github.com> Date: Sat, 7 Jan 2023 20:35:36 -0500 Subject: [PATCH 223/241] Fixed most functions that take/return graphicsIds to accept u16s. --- include/battle_tower.h | 4 ++-- include/event_data.h | 2 +- include/event_object_movement.h | 10 ++++----- include/field_player_avatar.h | 14 ++++++------- include/fldeff.h | 2 +- src/battle_tower.c | 6 +++--- src/cable_car.c | 5 ++--- src/event_data.c | 2 +- src/event_object_movement.c | 16 +++++++-------- src/field_player_avatar.c | 36 +++++++++------------------------ src/field_specials.c | 4 ++-- src/fldeff_rocksmash.c | 2 +- src/naming_screen.c | 4 +--- src/scrcmd.c | 2 +- src/secret_base.c | 2 +- src/union_room_player_avatar.c | 7 +++---- 16 files changed, 48 insertions(+), 70 deletions(-) diff --git a/include/battle_tower.h b/include/battle_tower.h index a80314592..8288ffb7e 100644 --- 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/event_data.h b/include/event_data.h index b1fa69460..86b7afea8 100644 --- a/include/event_data.h +++ b/include/event_data.h @@ -21,7 +21,7 @@ bool32 CanResetRTC(void); u16 *GetVarPointer(u16 id); u16 VarGet(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 FlagClear(u16 id); diff --git a/include/event_object_movement.h b/include/event_object_movement.h index f2383272f..9249cc6a9 100644 --- a/include/event_object_movement.h +++ b/include/event_object_movement.h @@ -132,15 +132,15 @@ u8 GetDirectionToFace(s16, s16, s16, s16); void TrySpawnObjectEvents(s16 cameraX, s16 cameraY); 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); u8 UpdateSpritePaletteByTemplate(const struct SpriteTemplate *, struct Sprite *); -void ObjectEventSetGraphicsId(struct ObjectEvent *, u8 graphicsId); +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); @@ -462,9 +462,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/field_player_avatar.h b/include/field_player_avatar.h index 39fc886af..dae0f6c0d 100644 --- 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/fldeff.h b/include/fldeff.h index 0ad0e3d60..836a795a0 100644 --- 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/src/battle_tower.c b/src/battle_tower.c index 1e134b8fa..1ae587af1 100644 --- 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) @@ -3466,7 +3466,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/cable_car.c b/src/cable_car.c index dd1da3176..a95e391c6 100644 --- a/src/cable_car.c +++ b/src/cable_car.c @@ -801,12 +801,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, @@ -1069,4 +1069,3 @@ static void InitGroundTilemapData(bool8 goingDown) sCableCar->groundTimer = 0; } - diff --git a/src/event_data.c b/src/event_data.c index 22ebdb0d1..561cd3edd 100644 --- a/src/event_data.c +++ b/src/event_data.c @@ -193,7 +193,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_movement.c b/src/event_object_movement.c index cf3cc5e71..077052f2d 100644 --- a/src/event_object_movement.c +++ b/src/event_object_movement.c @@ -1547,7 +1547,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; @@ -1657,7 +1657,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; @@ -1846,7 +1846,7 @@ void UpdateFollowingPokemon(void) { // Update following pokemon if any bool8 shiny; u8 form; // 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) && FALSE) { // TODO + 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, @@ -2357,14 +2357,14 @@ static void ObjectEventSetGraphics(struct ObjectEvent *objectEvent, const struct } } -void ObjectEventSetGraphicsId(struct ObjectEvent *objectEvent, u8 graphicsId) +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, u8 graphicsId) +void ObjectEventSetGraphicsIdByLocalIdAndMap(u8 localId, u8 mapNum, u8 mapGroup, u16 graphicsId) { u8 objectEventId; @@ -2396,7 +2396,7 @@ void PlayerObjectTurn(struct PlayerAvatar *playerAvatar, u8 direction) } static void SetBerryTreeGraphics(struct ObjectEvent *objectEvent, u8 berryId, u8 berryStage) { - const u8 graphicsId = gBerryTreeObjectEventGraphicsIdTablePointers[berryId][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); @@ -2440,7 +2440,7 @@ static void get_berry_tree_graphics(struct ObjectEvent *objectEvent, struct Spri } } -const struct ObjectEventGraphicsInfo *GetObjectEventGraphicsInfo(u8 graphicsId) +const struct ObjectEventGraphicsInfo *GetObjectEventGraphicsInfo(u16 graphicsId) { u8 bard; @@ -9751,7 +9751,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); diff --git a/src/field_player_avatar.c b/src/field_player_avatar.c index 5f4573c53..a6d775bc5 100644 --- a/src/field_player_avatar.c +++ b/src/field_player_avatar.c @@ -1212,50 +1212,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) { @@ -1324,7 +1306,7 @@ void SetPlayerAvatarStateMask(u8 flags) gPlayerAvatar.flags |= flags; } -static u8 GetPlayerAvatarStateTransitionByGraphicsId(u8 graphicsId, u8 gender) +static u8 GetPlayerAvatarStateTransitionByGraphicsId(u16 graphicsId, u8 gender) { u8 i; @@ -1336,7 +1318,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; @@ -1349,7 +1331,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_specials.c b/src/field_specials.c index 652cb434b..b62414fb8 100644 --- a/src/field_specials.c +++ b/src/field_specials.c @@ -90,7 +90,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); @@ -563,7 +563,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. diff --git a/src/fldeff_rocksmash.c b/src/fldeff_rocksmash.c index 71044aa30..39f64adb8 100644 --- 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; diff --git a/src/naming_screen.c b/src/naming_screen.c index da9aa6988..b044cc20d 100644 --- a/src/naming_screen.c +++ b/src/naming_screen.c @@ -1395,7 +1395,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); @@ -2584,5 +2584,3 @@ static const struct SpritePalette sSpritePalettes[] = {gNamingScreenMenu_Pal[4], PALTAG_OK_BUTTON}, {} }; - - diff --git a/src/scrcmd.c b/src/scrcmd.c index 8e278bb15..be26df963 100644 --- a/src/scrcmd.c +++ b/src/scrcmd.c @@ -1206,7 +1206,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)); diff --git a/src/secret_base.c b/src/secret_base.c index 1a4a0ac9c..836cf1b3d 100644 --- 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/union_room_player_avatar.c b/src/union_room_player_avatar.c index a7d5045b3..d8d1da49c 100644 --- 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); From 3a0dc0f4f60b902b4b91f86ff314d24533cd2d1f Mon Sep 17 00:00:00 2001 From: Ariel A <24759293+aarant@users.noreply.github.com> Date: Tue, 10 Jan 2023 20:23:53 -0500 Subject: [PATCH 224/241] Reworked how OW pokemon's graphics are loaded. --- include/constants/event_objects.h | 5 +- include/global.fieldmap.h | 3 +- src/event_object_movement.c | 128 +++++++++++++++++------------- 3 files changed, 77 insertions(+), 59 deletions(-) diff --git a/include/constants/event_objects.h b/include/constants/event_objects.h index 442d096cc..cd2de8e31 100644 --- a/include/constants/event_objects.h +++ b/include/constants/event_objects.h @@ -277,8 +277,11 @@ #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_MON_BASE) +#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 diff --git a/include/global.fieldmap.h b/include/global.fieldmap.h index 9b5eb8900..56c8c19f7 100644 --- a/include/global.fieldmap.h +++ b/include/global.fieldmap.h @@ -193,8 +193,7 @@ struct ObjectEvent u32 fixedPriority:1; u32 hideReflection:1; u32 shiny:1; // OW mon shininess - /*0x04*/ u16 graphicsId:11; // 11 bits; 2048 entries - /*0x05*/ u16 form:5; + /*0x04*/ u16 graphicsId; // 11 bits for species; high 5 bits for form /*0x06*/ u8 movementType; /*0x07*/ u8 trainerType; /*0x08*/ u8 localId; diff --git a/src/event_object_movement.c b/src/event_object_movement.c index 077052f2d..432599373 100644 --- a/src/event_object_movement.c +++ b/src/event_object_movement.c @@ -192,6 +192,8 @@ static const struct ObjectEventGraphicsInfo * SpeciesToGraphicsInfo(u16 species, 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[]; @@ -1300,7 +1302,7 @@ static u8 GetObjectEventIdByLocalId(u8 localId) return OBJECT_EVENTS_COUNT; } -static u8 InitObjectEventStateFromTemplate(struct ObjectEventTemplate *template, u8 mapNum, u8 mapGroup) +static u8 InitObjectEventStateFromTemplate(const struct ObjectEventTemplate *template, u8 mapNum, u8 mapGroup) { struct ObjectEvent *objectEvent; u8 objectEventId; @@ -1315,7 +1317,13 @@ static u8 InitObjectEventStateFromTemplate(struct ObjectEventTemplate *template, y = template->y + MAP_OFFSET; objectEvent->active = TRUE; objectEvent->triggerGroundEffectsOnMove = TRUE; - objectEvent->graphicsId = template->graphicsId; + objectEvent->graphicsId = PackGraphicsId(template); + 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 = template->trainerRange_berryTreeId >> 5; + } objectEvent->movementType = template->movementType; objectEvent->localId = template->localId; objectEvent->mapNum = mapNum; @@ -1401,7 +1409,7 @@ static void RemoveObjectEvent(struct ObjectEvent *objectEvent) objectEvent->active = FALSE; RemoveObjectEventInternal(objectEvent); // zero potential species info - objectEvent->graphicsId = objectEvent->form = objectEvent->shiny = 0; + objectEvent->graphicsId = objectEvent->shiny = 0; } void RemoveObjectEventByLocalIdAndMap(u8 localId, u8 mapNum, u8 mapGroup) @@ -1444,7 +1452,7 @@ void RemoveAllObjectEventsExceptPlayer(void) } } -static u8 TrySetupObjectEventSprite(struct ObjectEventTemplate *objectEventTemplate, struct SpriteTemplate *spriteTemplate, u8 mapNum, u8 mapGroup, s16 cameraX, s16 cameraY) +static u8 TrySetupObjectEventSprite(const struct ObjectEventTemplate *objectEventTemplate, struct SpriteTemplate *spriteTemplate, u8 mapNum, u8 mapGroup, s16 cameraX, s16 cameraY) { u8 spriteId; u8 objectEventId; @@ -1458,7 +1466,7 @@ static u8 TrySetupObjectEventSprite(struct ObjectEventTemplate *objectEventTempl objectEvent = &gObjectEvents[objectEventId]; graphicsInfo = GetObjectEventGraphicsInfo(objectEvent->graphicsId); - if (spriteTemplate->paletteTag != TAG_NONE) { + if (spriteTemplate->paletteTag != TAG_NONE && spriteTemplate->paletteTag != OBJ_EVENT_PAL_TAG_DYNAMIC) { LoadObjectEventPalette(spriteTemplate->paletteTag); } @@ -1473,6 +1481,10 @@ static u8 TrySetupObjectEventSprite(struct ObjectEventTemplate *objectEventTempl } 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); @@ -1490,20 +1502,41 @@ static u8 TrySetupObjectEventSprite(struct ObjectEventTemplate *objectEventTempl return objectEventId; } +// 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; + if (!template) + return 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; +} + static u8 -TrySpawnObjectEventTemplate(struct ObjectEventTemplate *objectEventTemplate, +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; - bool8 shiny; + u8 form = 0; + bool8 shiny = FALSE; - graphicsInfo = GetObjectEventGraphicsInfo(objectEventTemplate->graphicsId); - MakeSpriteTemplateFromObjectEventTemplate(objectEventTemplate, &spriteTemplate, &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); @@ -1514,27 +1547,6 @@ TrySpawnObjectEventTemplate(struct ObjectEventTemplate *objectEventTemplate, if (subspriteTables) SetSubspriteTables(&gSprites[gObjectEvents[objectEventId].spriteId], subspriteTables); - // Set form & shininess based on script header - if (objectEventTemplate->graphicsId >= OBJ_EVENT_GFX_MON_BASE && objectEventTemplate->script) { - const u8 *script = objectEventTemplate->script; - if (script[0] == 0x7d) { // bufferspeciesname - species = script[2] | script[3] << 8; - form = (species >> 10) & 0x1F; - shiny = species >> 15; - gObjectEvents[objectEventId].form = form; - gObjectEvents[objectEventId].shiny = shiny; - species = OW_SPECIES(objectEventTemplate); - FollowerSetGraphics(&gObjectEvents[objectEventId], species, form, shiny); - } - // Set runtime species based on VAR_TEMP_4, if template has a dynamic graphics ID - } else if (objectEventTemplate->graphicsId >= OBJ_EVENT_GFX_VARS && VarGetObjectEventGraphicsId(objectEventTemplate->graphicsId - OBJ_EVENT_GFX_VARS) >= OBJ_EVENT_GFX_MON_BASE) { - species = VarGet(VAR_TEMP_4); - gObjectEvents[objectEventId].form = form = (species >> 10) & 0x1F; - gObjectEvents[objectEventId].shiny = shiny = species >> 15; - species = OW_SPECIES(objectEventTemplate); - FollowerSetGraphics(&gObjectEvents[objectEventId], species, form, shiny); - } - return objectEventId; } @@ -1730,7 +1742,7 @@ static const struct ObjectEventGraphicsInfo * SpeciesToGraphicsInfo(u16 species, graphicsInfo = &gPokemonObjectGraphics[species]; break; } - return graphicsInfo->tileTag == 0xFFFF ? graphicsInfo : &gPokemonObjectGraphics[SPECIES_PORYGON]; // avoid OOB access + return graphicsInfo->tileTag == TAG_NONE ? graphicsInfo : &gPokemonObjectGraphics[SPECIES_PORYGON]; // avoid OOB access } // Find, or load, the palette for the specified pokemon info @@ -1751,10 +1763,9 @@ static u8 LoadDynamicFollowerPalette(u16 species, u8 form, bool8 shiny) { // Set graphics & sprite for a follower object event by species & shininess. static void FollowerSetGraphics(struct ObjectEvent *objEvent, u16 species, u8 form, bool8 shiny) { const struct ObjectEventGraphicsInfo *graphicsInfo = SpeciesToGraphicsInfo(species, form); - objEvent->graphicsId = OBJ_EVENT_GFX_MON_BASE + species; ObjectEventSetGraphics(objEvent, graphicsInfo); - objEvent->graphicsId = OBJ_EVENT_GFX_MON_BASE + species; - objEvent->form = form; + 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) { // Use palette from species palette table struct Sprite *sprite = &gSprites[objEvent->spriteId]; @@ -1771,7 +1782,7 @@ static void FollowerSetGraphics(struct ObjectEvent *objEvent, u16 species, u8 fo // TODO: Reposition sprite if size changes static void RefreshFollowerGraphics(struct ObjectEvent *objEvent) { u16 species = OW_SPECIES(objEvent); - u8 form = objEvent->form; + u8 form = OW_FORM(objEvent); u8 shiny = objEvent->shiny; const struct ObjectEventGraphicsInfo *graphicsInfo = SpeciesToGraphicsInfo(species, form); struct Sprite *sprite = &gSprites[objEvent->spriteId]; @@ -1857,17 +1868,19 @@ void UpdateFollowingPokemon(void) { // Update following pokemon if any // 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 != objEvent->form) { + 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); objEvent->invisible = TRUE; } - FollowerSetGraphics(objEvent, species, form, shiny); sprite->data[6] = 0; // set animation data } else { RemoveFollowingPokemon(); @@ -2260,13 +2273,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; - if (spriteTemplate.paletteTag != TAG_NONE) { + if (spriteTemplate.paletteTag != TAG_NONE && spriteTemplate.paletteTag != OBJ_EVENT_PAL_TAG_DYNAMIC) { LoadObjectEventPalette(spriteTemplate.paletteTag); } 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); @@ -2284,9 +2300,6 @@ static void SpawnObjectEventOnReturnToField(u8 objectEventId, s16 x, s16 y) sprite->coordOffsetEnabled = TRUE; sprite->sObjEventId = objectEventId; objectEvent->spriteId = i; - if (objectEvent->graphicsId >= OBJ_EVENT_GFX_MON_BASE) { // Set pokemon graphics - FollowerSetGraphics(objectEvent, OW_SPECIES(objectEvent), objectEvent->form, objectEvent->shiny); - } if (!objectEvent->inanimate && objectEvent->movementType != MOVEMENT_TYPE_PLAYER) StartSpriteAnim(sprite, GetFaceDirectionAnimNum(objectEvent->facingDirection)); @@ -2442,18 +2455,23 @@ static void get_berry_tree_graphics(struct ObjectEvent *objectEvent, struct Spri const struct ObjectEventGraphicsInfo *GetObjectEventGraphicsInfo(u16 graphicsId) { - u8 bard; + u32 form = 0; if (graphicsId >= OBJ_EVENT_GFX_VARS && graphicsId <= OBJ_EVENT_GFX_VAR_F) graphicsId = VarGetObjectEventGraphicsId(graphicsId - OBJ_EVENT_GFX_VARS); + // 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) { - bard = GetCurrentMauvilleOldMan(); - return gMauvilleOldManGraphicsInfoPointers[bard]; + return gMauvilleOldManGraphicsInfoPointers[GetCurrentMauvilleOldMan()]; } if (graphicsId >= OBJ_EVENT_GFX_MON_BASE) - return SpeciesToGraphicsInfo(graphicsId - OBJ_EVENT_GFX_MON_BASE, 0); + return SpeciesToGraphicsInfo(graphicsId - OBJ_EVENT_GFX_MON_BASE, form); if (graphicsId >= NUM_OBJ_EVENT_GFX) graphicsId = OBJ_EVENT_GFX_NINJA_BOY; @@ -2463,7 +2481,7 @@ const struct ObjectEventGraphicsInfo *GetObjectEventGraphicsInfo(u16 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); } @@ -4894,9 +4912,10 @@ static bool8 EndFollowerTransformEffect(struct ObjectEvent *objectEvent, struct static bool8 TryStartFollowerTransformEffect(struct ObjectEvent *objectEvent, struct Sprite *sprite) { u32 multi; - if (OW_SPECIES(objectEvent) == SPECIES_CASTFORM && objectEvent->form != (multi = GetOverworldCastformForm())) { + if (OW_SPECIES(objectEvent) == SPECIES_CASTFORM && OW_FORM(objectEvent) != (multi = GetOverworldCastformForm())) { sprite->data[7] = TRANSFORM_TYPE_PERMANENT << 8; - objectEvent->form = multi; + 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)) { @@ -4911,7 +4930,7 @@ static bool8 UpdateFollowerTransformEffect(struct ObjectEvent *objectEvent, stru u8 type = sprite->data[7] >> 8; u8 frames = sprite->data[7] & 0xFF; u8 stretch; - u32 multi, multi2; + u32 multi; if (!type) return TryStartFollowerTransformEffect(objectEvent, sprite); sprite->oam.mosaic = TRUE; @@ -4936,11 +4955,8 @@ static bool8 UpdateFollowerTransformEffect(struct ObjectEvent *objectEvent, stru break; } objectEvent->graphicsId += OBJ_EVENT_GFX_MON_BASE; - multi2 = objectEvent->form; - objectEvent->form = 0; RefreshFollowerGraphics(objectEvent); objectEvent->graphicsId = multi; - objectEvent->form = multi2; break; } } @@ -6728,7 +6744,7 @@ bool8 MovementAction_ExitPokeball_Step1(struct ObjectEvent *objectEvent, struct 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), objectEvent->form, objectEvent->shiny); + FollowerSetGraphics(objectEvent, OW_SPECIES(objectEvent), OW_FORM(objectEvent), objectEvent->shiny); LoadWhiteFlashPalette(objectEvent, sprite); // Initialize affine animation sprite->affineAnims = sAffineAnims_PokeballFollower; @@ -6740,7 +6756,7 @@ bool8 MovementAction_ExitPokeball_Step1(struct ObjectEvent *objectEvent, struct sprite->affineAnimEnded = TRUE; FreeSpriteOamMatrix(sprite); sprite->oam.affineMode = ST_OAM_AFFINE_OFF; - FollowerSetGraphics(objectEvent, OW_SPECIES(objectEvent), objectEvent->form, objectEvent->shiny); + FollowerSetGraphics(objectEvent, OW_SPECIES(objectEvent), OW_FORM(objectEvent), objectEvent->shiny); } return FALSE; } @@ -6780,7 +6796,7 @@ bool8 MovementAction_EnterPokeball_Step1(struct ObjectEvent *objectEvent, struct bool8 MovementAction_EnterPokeball_Step2(struct ObjectEvent *objectEvent, struct Sprite *sprite) { - FollowerSetGraphics(objectEvent, OW_SPECIES(objectEvent), objectEvent->form, objectEvent->shiny); + FollowerSetGraphics(objectEvent, OW_SPECIES(objectEvent), OW_FORM(objectEvent), objectEvent->shiny); objectEvent->invisible = TRUE; sprite->data[1] = 0; sprite->data[6] = 0; From 7b40e481ce1a42786bf8354374e24ee1171595b7 Mon Sep 17 00:00:00 2001 From: Ariel A <24759293+aarant@users.noreply.github.com> Date: Wed, 11 Jan 2023 21:55:39 -0500 Subject: [PATCH 225/241] Improved saving & loading expanded OWs. --- asm/macros/map.inc | 3 ++- include/global.fieldmap.h | 11 +++++++---- src/event_object_movement.c | 3 +-- src/load_save.c | 14 ++++++++++++++ 4 files changed, 24 insertions(+), 7 deletions(-) diff --git a/asm/macros/map.inc b/asm/macros/map.inc index c58896246..9678311a4 100644 --- a/asm/macros/map.inc +++ b/asm/macros/map.inc @@ -21,8 +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, \inConnection + .byte \index .2byte \gfx + .byte \inConnection .2byte \x, \y .byte \elevation .byte \movement_type diff --git a/include/global.fieldmap.h b/include/global.fieldmap.h index 56c8c19f7..22a4bc9a5 100644 --- a/include/global.fieldmap.h +++ b/include/global.fieldmap.h @@ -63,22 +63,24 @@ struct BackupMapLayout u16 *map; }; -struct ObjectEventTemplate +struct __attribute__((packed)) ObjectEventTemplate { /*0x00*/ u8 localId; - /*0x02*/ u16 graphicsId; - // /*0x02*/ u8 inConnection; // Leftover from FRLG + /*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 unused:8; /*0x0C*/ u16 trainerType; /*0x0E*/ u16 trainerRange_berryTreeId; /*0x10*/ const u8 *script; /*0x14*/ u16 flagId; -}; + /*0x16*/ u16 filler; +}; // size = 0x18 struct WarpEvent { @@ -193,6 +195,7 @@ struct ObjectEvent u32 fixedPriority:1; u32 hideReflection:1; u32 shiny:1; // OW mon shininess + u32 expanded:1; // 0 for vanilla, 1 for expanded OWs /*0x04*/ u16 graphicsId; // 11 bits for species; high 5 bits for form /*0x06*/ u8 movementType; /*0x07*/ u8 trainerType; diff --git a/src/event_object_movement.c b/src/event_object_movement.c index 432599373..259544880 100644 --- a/src/event_object_movement.c +++ b/src/event_object_movement.c @@ -1317,6 +1317,7 @@ static u8 InitObjectEventStateFromTemplate(const struct ObjectEventTemplate *tem y = template->y + MAP_OFFSET; objectEvent->active = TRUE; objectEvent->triggerGroundEffectsOnMove = TRUE; + objectEvent->expanded = TRUE; objectEvent->graphicsId = PackGraphicsId(template); if (objectEvent->graphicsId >= OBJ_EVENT_GFX_MON_BASE) { if (template->script && template->script[0] == 0x7d) @@ -1506,8 +1507,6 @@ static u8 TrySetupObjectEventSprite(const struct ObjectEventTemplate *objectEven static u16 PackGraphicsId(const struct ObjectEventTemplate *template) { u16 graphicsId = template->graphicsId; u32 form = 0; - if (!template) - return 0; // set form based on template's script, // if first command is bufferspeciesname if (graphicsId >= OBJ_EVENT_GFX_MON_BASE) { diff --git a/src/load_save.c b/src/load_save.c index da6997de0..07da62501 100644 --- a/src/load_save.c +++ b/src/load_save.c @@ -181,9 +181,15 @@ void LoadPlayerParty(void) void SaveObjectEvents(void) { int i; + u16 graphicsId; 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); // To avoid crash on vanilla, save follower as inactive if (gObjectEvents[i].localId == OBJ_EVENT_ID_FOLLOWER) gSaveBlock1Ptr->objectEvents[i].active = FALSE; @@ -193,9 +199,17 @@ void SaveObjectEvents(void) void LoadObjectEvents(void) { int i; + u16 graphicsId; 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].expanded) + gObjectEvents[i].graphicsId &= 0xFF; // Try to restore saved inactive follower if (gObjectEvents[i].localId == OBJ_EVENT_ID_FOLLOWER && !gObjectEvents[i].active && From 95b98efc30f85cc86c0f71a79f9a65cf3daf18c3 Mon Sep 17 00:00:00 2001 From: Ariel A <24759293+aarant@users.noreply.github.com> Date: Thu, 12 Jan 2023 21:40:05 -0500 Subject: [PATCH 226/241] Updated existing OW pokemon events with new system. --- data/map_events.s | 2 +- data/maps/AncientTomb/map.json | 2 +- data/maps/DesertRuins/map.json | 2 +- data/maps/IslandCave/map.json | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/data/map_events.s b/data/map_events.s index cfa5799d3..729f9725d 100644 --- 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/AncientTomb/map.json b/data/maps/AncientTomb/map.json index 16df613a4..98089d7ae 100644 --- 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_OW_MON", + "graphics_id": "OBJ_EVENT_GFX_MON_BASE+SPECIES_REGISTEEL", "x": 8, "y": 7, "elevation": 3, diff --git a/data/maps/DesertRuins/map.json b/data/maps/DesertRuins/map.json index 933d5d227..80c8f6a48 100644 --- a/data/maps/DesertRuins/map.json +++ b/data/maps/DesertRuins/map.json @@ -15,7 +15,7 @@ "connections": null, "object_events": [ { - "graphics_id": "OBJ_EVENT_GFX_OW_MON", + "graphics_id": "OBJ_EVENT_GFX_MON_BASE+SPECIES_REGIROCK", "x": 8, "y": 7, "elevation": 3, diff --git a/data/maps/IslandCave/map.json b/data/maps/IslandCave/map.json index 24c6e0cd2..c6204ff1c 100644 --- 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_OW_MON", + "graphics_id": "OBJ_EVENT_GFX_MON_BASE+SPECIES_REGICE", "x": 8, "y": 7, "elevation": 3, From 5047f1280e15393d7a9c85be4aca2a23598ae1b5 Mon Sep 17 00:00:00 2001 From: Ariel A <24759293+aarant@users.noreply.github.com> Date: Thu, 26 Jan 2023 17:23:51 -0500 Subject: [PATCH 227/241] Improved saving & loading object events. --- include/global.fieldmap.h | 1 - src/event_object_movement.c | 1 - src/load_save.c | 4 +++- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/include/global.fieldmap.h b/include/global.fieldmap.h index 22a4bc9a5..6627253d3 100644 --- a/include/global.fieldmap.h +++ b/include/global.fieldmap.h @@ -195,7 +195,6 @@ struct ObjectEvent u32 fixedPriority:1; u32 hideReflection:1; u32 shiny:1; // OW mon shininess - u32 expanded:1; // 0 for vanilla, 1 for expanded OWs /*0x04*/ u16 graphicsId; // 11 bits for species; high 5 bits for form /*0x06*/ u8 movementType; /*0x07*/ u8 trainerType; diff --git a/src/event_object_movement.c b/src/event_object_movement.c index 259544880..6abd2c7e3 100644 --- a/src/event_object_movement.c +++ b/src/event_object_movement.c @@ -1317,7 +1317,6 @@ static u8 InitObjectEventStateFromTemplate(const struct ObjectEventTemplate *tem y = template->y + MAP_OFFSET; objectEvent->active = TRUE; objectEvent->triggerGroundEffectsOnMove = TRUE; - objectEvent->expanded = TRUE; objectEvent->graphicsId = PackGraphicsId(template); if (objectEvent->graphicsId >= OBJ_EVENT_GFX_MON_BASE) { if (template->script && template->script[0] == 0x7d) diff --git a/src/load_save.c b/src/load_save.c index 07da62501..f071cdb82 100644 --- a/src/load_save.c +++ b/src/load_save.c @@ -190,6 +190,7 @@ void SaveObjectEvents(void) // 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; @@ -208,8 +209,9 @@ void LoadObjectEvents(void) // 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].expanded) + 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 && From 6fe4ce05e15a6a30618fd9a9aa06ce1ec53c6055 Mon Sep 17 00:00:00 2001 From: Ariel A <24759293+aarant@users.noreply.github.com> Date: Sat, 4 Feb 2023 19:25:49 -0500 Subject: [PATCH 228/241] Added lighting to Sootopolis lava. --- data/tilesets/secondary/sootopolis/palettes/10.pal | 4 ++-- src/data/tilesets/headers.h | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/data/tilesets/secondary/sootopolis/palettes/10.pal b/data/tilesets/secondary/sootopolis/palettes/10.pal index 6ca963250..46457797e 100644 --- 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/src/data/tilesets/headers.h b/src/data/tilesets/headers.h index 0e8d4dca9..d204bb45c 100644 --- a/src/data/tilesets/headers.h +++ b/src/data/tilesets/headers.h @@ -174,8 +174,8 @@ const struct Tileset gTileset_Sootopolis = .isCompressed = TRUE, .swapPalettes = SWAP_PAL(6), .isSecondary = TRUE, - .lightPalettes = LIGHT_PAL(6), - .customLightColor = LIGHT_PAL(6), + .lightPalettes = LIGHT_PAL(6) | LIGHT_PAL(10), + .customLightColor = LIGHT_PAL(6) | LIGHT_PAL(10), .tiles = gTilesetTiles_Sootopolis, .palettes = gTilesetPalettes_Sootopolis, .metatiles = gMetatiles_Sootopolis, From 9fd7542629e0ae8f8a7426298608ffcf95600fea Mon Sep 17 00:00:00 2001 From: Ariel A <24759293+aarant@users.noreply.github.com> Date: Thu, 9 Feb 2023 00:15:18 -0500 Subject: [PATCH 229/241] Fixed nighttime WEATHER_DOWNPOUR gamma shift. --- src/field_weather.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/field_weather.c b/src/field_weather.c index 4f9b72ea7..a875b7ec3 100644 --- a/src/field_weather.c +++ b/src/field_weather.c @@ -483,7 +483,7 @@ static void ApplyColorMap(u8 startPalIndex, u8 numPalettes, s8 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 && gWeatherPtr->currWeather == WEATHER_RAIN_THUNDERSTORM) && MapHasNaturalLight(gMapHeader.mapType)) + if (!(colorMapIndex > 3) && MapHasNaturalLight(gMapHeader.mapType)) UpdatePalettesWithTime(palettes); else CpuFastCopy(gPlttBufferUnfaded + palOffset, gPlttBufferFaded + palOffset, 32 * numPalettes); From 13873727bae4f5cde5829b54f3dd383b0941977b Mon Sep 17 00:00:00 2001 From: Ariel A <24759293+aarant@users.noreply.github.com> Date: Fri, 10 Feb 2023 19:59:02 -0500 Subject: [PATCH 230/241] Updated README with new branches. --- README.md | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index c3648a044..893678a2d 100644 --- a/README.md +++ b/README.md @@ -4,13 +4,13 @@ This is a fork of the [matching decompilation](https://github.com/pret/pokeemera 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. -There are several branches, each with one main feature: +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. -* Function to change a pokemon's nature while preserving most properties of its PID. -* Function to detect newer emulators/new GBA hardware. +* PID (but not legitimacy) preserving Pokémon nature-changing function +* Function to detect modern emulators/GBA hardware. **icons** branch: * Everything from the **followers** branch. @@ -28,6 +28,11 @@ There are several branches, each with one main feature: * 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). ## See also From 84e8df98fb2b24dcc887bd7a5b8bce5512be6006 Mon Sep 17 00:00:00 2001 From: Ariel A <24759293+aarant@users.noreply.github.com> Date: Fri, 10 Feb 2023 20:07:24 -0500 Subject: [PATCH 231/241] Fix bug with ledge jumps and invisible followers. --- src/event_object_movement.c | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/event_object_movement.c b/src/event_object_movement.c index 9a94f1a87..741257fc4 100644 --- a/src/event_object_movement.c +++ b/src/event_object_movement.c @@ -5048,6 +5048,11 @@ bool8 FollowablePlayerMovement_Step(struct ObjectEvent *objectEvent, struct Spri 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; From 3b3e45cff7f666f44fa06279b13fb26fadcf1217 Mon Sep 17 00:00:00 2001 From: Ariel A <24759293+aarant@users.noreply.github.com> Date: Fri, 10 Feb 2023 21:31:10 -0500 Subject: [PATCH 232/241] Fixed shadow positioning bug in some battle facilities. --- data/maps/BattleFrontier_BattleDomeBattleRoom/scripts.inc | 1 + data/maps/SlateportCity_BattleTentBattleRoom/scripts.inc | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/data/maps/BattleFrontier_BattleDomeBattleRoom/scripts.inc b/data/maps/BattleFrontier_BattleDomeBattleRoom/scripts.inc index 31314b598..cdd08fc77 100644 --- a/data/maps/BattleFrontier_BattleDomeBattleRoom/scripts.inc +++ b/data/maps/BattleFrontier_BattleDomeBattleRoom/scripts.inc @@ -476,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/SlateportCity_BattleTentBattleRoom/scripts.inc b/data/maps/SlateportCity_BattleTentBattleRoom/scripts.inc index 53514bb5e..fd6567cb6 100644 --- 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 - From edbb95f2a5fbe3351cb6eb064d9800a1820771ff Mon Sep 17 00:00:00 2001 From: Ariel A <24759293+aarant@users.noreply.github.com> Date: Sat, 3 Sep 2022 15:23:49 -0400 Subject: [PATCH 233/241] Cherry-pick of d6bac9895: Fixed contest palette load errors. --- src/contest_util.c | 18 ++++++++++++------ 1 file changed, 12 insertions(+), 6 deletions(-) diff --git a/src/contest_util.c b/src/contest_util.c index c2b226a18..76a9fd2df 100644 --- 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); } } } From b1ea5fb8c38fb293b67c147a9c8ca514cd28b994 Mon Sep 17 00:00:00 2001 From: Ariel A <24759293+aarant@users.noreply.github.com> Date: Sun, 5 Mar 2023 01:38:01 -0500 Subject: [PATCH 234/241] Fixed bug with applymovement not hiding followers after a battle. --- data/maps/RusturfTunnel/scripts.inc | 2 +- data/scripts/trainer_battle.inc | 9 ++++++--- 2 files changed, 7 insertions(+), 4 deletions(-) diff --git a/data/maps/RusturfTunnel/scripts.inc b/data/maps/RusturfTunnel/scripts.inc index e7eee5817..86c5e0f6a 100644 --- a/data/maps/RusturfTunnel/scripts.inc +++ b/data/maps/RusturfTunnel/scripts.inc @@ -274,6 +274,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 @@ -529,4 +530,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/scripts/trainer_battle.inc b/data/scripts/trainer_battle.inc index 66d4d6d5c..cbbdaac29 100644 --- a/data/scripts/trainer_battle.inc +++ b/data/scripts/trainer_battle.inc @@ -10,9 +10,10 @@ EventScript_TrainerApproach:: EventScript_TryDoNormalTrainerBattle:: lock faceplayer - setflag FLAG_SAFE_FOLLOWER_MOVEMENT + 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 @@ -45,9 +46,10 @@ EventScript_NoDoubleTrainerBattle:: gotopostbattlescript EventScript_DoNoIntroTrainerBattle:: - setflag FLAG_SAFE_FOLLOWER_MOVEMENT + setflag FLAG_SAFE_FOLLOWER_MOVEMENT applymovement VAR_LAST_TALKED, Movement_RevealTrainer waitmovement 0 + clearflag FLAG_SAFE_FOLLOWER_MOVEMENT special PlayTrainerEncounterMusic dotrainerbattle gotopostbattlescript @@ -95,9 +97,10 @@ EventScript_NotEnoughMonsForDoubleRematchBattle:: end EventScript_RevealTrainer:: - setflag FLAG_SAFE_FOLLOWER_MOVEMENT + setflag FLAG_SAFE_FOLLOWER_MOVEMENT applymovement VAR_LAST_TALKED, Movement_RevealTrainer waitmovement 0 + clearflag FLAG_SAFE_FOLLOWER_MOVEMENT return Movement_RevealTrainer: From 2ec895fbee8f236cda501e64541d1ade294b91fa Mon Sep 17 00:00:00 2001 From: Ariel A <24759293+aarant@users.noreply.github.com> Date: Tue, 7 Mar 2023 19:42:31 -0500 Subject: [PATCH 235/241] Updated CreateObjectGraphicsSprite with new system. --- src/event_object_movement.c | 37 ++++++++++++++++++------------------- 1 file changed, 18 insertions(+), 19 deletions(-) diff --git a/src/event_object_movement.c b/src/event_object_movement.c index a82f7f7ea..4f232147a 100644 --- a/src/event_object_movement.c +++ b/src/event_object_movement.c @@ -1614,6 +1614,18 @@ static void MakeSpriteTemplateFromObjectEventTemplate(struct ObjectEventTemplate 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; +} + // 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) { @@ -1621,29 +1633,16 @@ u8 CreateObjectGraphicsSprite(u16 graphicsId, void (*callback)(struct Sprite *), const struct SubspriteTable *subspriteTables; struct Sprite *sprite; u8 spriteId; - u16 species; - u8 form; - bool8 shiny; - u8 paletteNum; + u32 paletteNum; spriteTemplate = Alloc(sizeof(struct SpriteTemplate)); - if (graphicsId >= OBJ_EVENT_GFX_MON_BASE && GetFollowerInfo(&species, &form, &shiny)) { - const struct ObjectEventGraphicsInfo *graphicsInfo = SpeciesToGraphicsInfo(species, form); - spriteTemplate->tileTag = graphicsInfo->tileTag; - spriteTemplate->paletteTag = graphicsInfo->paletteTag; - spriteTemplate->oam = graphicsInfo->oam; - spriteTemplate->anims = graphicsInfo->anims; - spriteTemplate->images = graphicsInfo->images; - spriteTemplate->affineAnims = graphicsInfo->affineAnims; - spriteTemplate->callback = callback; - subspriteTables = graphicsInfo->subspriteTables; - } else - CopyObjectGraphicsInfoToSpriteTemplate(graphicsId, callback, spriteTemplate, &subspriteTables); + CopyObjectGraphicsInfoToSpriteTemplate(graphicsId, callback, spriteTemplate, &subspriteTables); if (spriteTemplate->paletteTag == OBJ_EVENT_PAL_TAG_DYNAMIC) { - const struct CompressedSpritePalette *spritePalette = &(shiny ? gMonShinyPaletteTable : gMonPaletteTable)[species]; - paletteNum = LoadDynamicFollowerPalette(species, form, shiny); - spriteTemplate->paletteTag = spritePalette->tag; + 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) LoadObjectEventPalette(spriteTemplate->paletteTag); From 07995f8925f2c81522b390b5e86228d1e4f73b51 Mon Sep 17 00:00:00 2001 From: Ariel A <24759293+aarant@users.noreply.github.com> Date: Tue, 7 Mar 2023 20:39:41 -0500 Subject: [PATCH 236/241] Fixed some decoration icons being darkened at night in outdoor shops. --- include/event_object_movement.h | 1 + src/decoration.c | 2 +- src/event_object_movement.c | 28 +++++++++++++++++++++++++--- src/shop.c | 2 +- 4 files changed, 28 insertions(+), 5 deletions(-) diff --git a/include/event_object_movement.h b/include/event_object_movement.h index 4a4904f62..683160820 100644 --- a/include/event_object_movement.h +++ b/include/event_object_movement.h @@ -131,6 +131,7 @@ 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); diff --git a/src/decoration.c b/src/decoration.c index 6d95cfbdc..d33ded155 100644 --- a/src/decoration.c +++ b/src/decoration.c @@ -2110,7 +2110,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; } diff --git a/src/event_object_movement.c b/src/event_object_movement.c index 49523559d..6d956d1da 100644 --- a/src/event_object_movement.c +++ b/src/event_object_movement.c @@ -1607,8 +1607,20 @@ static void MakeSpriteTemplateFromObjectEventTemplate(struct ObjectEventTemplate CopyObjectGraphicsInfoToSpriteTemplate_WithMovementType(objectEventTemplate->graphicsId, objectEventTemplate->movementType, spriteTemplate, subspriteTables); } +// 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; @@ -1637,8 +1649,14 @@ u8 CreateObjectGraphicsSprite(u16 graphicsId, void (*callback)(struct Sprite *), const struct CompressedSpritePalette *spritePalette = &(shiny ? gMonShinyPaletteTable : gMonPaletteTable)[species]; paletteNum = LoadDynamicFollowerPalette(species, form, shiny); spriteTemplate->paletteTag = spritePalette->tag; - } else if (spriteTemplate->paletteTag != TAG_NONE) - LoadObjectEventPalette(spriteTemplate->paletteTag); + } 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); @@ -1652,6 +1670,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] diff --git a/src/shop.c b/src/shop.c index 222ee181b..23699f07b 100644 --- a/src/shop.c +++ b/src/shop.c @@ -41,7 +41,7 @@ #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 From 6b2e49ffbc2a5c8b0edfdb5983ad1365c6b54d5b Mon Sep 17 00:00:00 2001 From: Ariel A <24759293+aarant@users.noreply.github.com> Date: Sat, 11 Mar 2023 16:16:51 -0500 Subject: [PATCH 237/241] Updated Ever Grande window lights. --- .../secondary/ever_grande/palettes/01.pal | 24 +++++++++---------- .../secondary/ever_grande/palettes/08.pal | 2 +- src/data/tilesets/headers.h | 2 ++ 3 files changed, 15 insertions(+), 13 deletions(-) diff --git a/data/tilesets/secondary/ever_grande/palettes/01.pal b/data/tilesets/secondary/ever_grande/palettes/01.pal index 3c6e40c2e..2c0276761 100644 --- 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 100644 --- 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/src/data/tilesets/headers.h b/src/data/tilesets/headers.h index d204bb45c..8a7907c6c 100644 --- a/src/data/tilesets/headers.h +++ b/src/data/tilesets/headers.h @@ -154,6 +154,8 @@ 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 = From 0d3061574c3e8e5830e18fa34846e01f218d953a Mon Sep 17 00:00:00 2001 From: Ariel A <24759293+aarant@users.noreply.github.com> Date: Thu, 9 Jun 2022 22:00:24 -0400 Subject: [PATCH 238/241] Made follower disappear when decorating. Decreased number of max sprite decorations to 13. --- src/decoration.c | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/src/decoration.c b/src/decoration.c index 6d95cfbdc..9b29fdb01 100644 --- 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; } @@ -2316,6 +2325,7 @@ static void Task_ContinuePuttingAwayDecorations(u8 taskId) } break; case 1: + RemoveFollowingPokemon(); SetUpPuttingAwayDecorationPlayerAvatar(); FadeInFromBlack(); tState = 2; From 9e00e23b961641f800298ce98c1cfcdb1d279315 Mon Sep 17 00:00:00 2001 From: Ariel A <24759293+aarant@users.noreply.github.com> Date: Mon, 27 Mar 2023 18:40:39 -0400 Subject: [PATCH 239/241] Added OW daycare pokemon. --- data/maps/Route117/map.json | 30 +++++++++++++++++++-- data/maps/Route117/scripts.inc | 49 +++++++++++++++++++++++++++++++++- src/daycare.c | 4 ++- src/event_object_movement.c | 35 ++++++++++++++++++++---- 4 files changed, 109 insertions(+), 9 deletions(-) diff --git a/data/maps/Route117/map.json b/data/maps/Route117/map.json index 80304ddf4..62a440095 100644 --- a/data/maps/Route117/map.json +++ b/data/maps/Route117/map.json @@ -105,8 +105,8 @@ }, { "graphics_id": "OBJ_EVENT_GFX_PIKACHU", - "x": 49, - "y": 2, + "x": 51, + "y": 1, "elevation": 3, "movement_type": "MOVEMENT_TYPE_LOOK_AROUND", "movement_range_x": 0, @@ -336,6 +336,32 @@ "trainer_sight_or_berry_tree_id": "4", "script": "Route117_EventScript_Melina", "flag": "0" + }, + { + "graphics_id": "OBJ_EVENT_GFX_VAR_0", + "x": 47, + "y": 2, + "elevation": 3, + "movement_type": "MOVEMENT_TYPE_LOOK_AROUND", + "movement_range_x": 0, + "movement_range_y": 0, + "trainer_type": "TRAINER_TYPE_NONE", + "trainer_sight_or_berry_tree_id": "VAR_TEMP_0", + "script": "NULL", + "flag": "FLAG_TEMP_1" + }, + { + "graphics_id": "OBJ_EVENT_GFX_VAR_1", + "x": 49, + "y": 2, + "elevation": 3, + "movement_type": "MOVEMENT_TYPE_LOOK_AROUND", + "movement_range_x": 0, + "movement_range_y": 0, + "trainer_type": "TRAINER_TYPE_NONE", + "trainer_sight_or_berry_tree_id": "VAR_TEMP_1", + "script": "NULL", + "flag": "FLAG_TEMP_2" } ], "warp_events": [ diff --git a/data/maps/Route117/scripts.inc b/data/maps/Route117/scripts.inc index 37d589ce3..71660b34d 100644 --- a/data/maps/Route117/scripts.inc +++ b/data/maps/Route117/scripts.inc @@ -1,13 +1,61 @@ .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 .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: 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 @@ -205,4 +253,3 @@ Route117_Text_RouteSignMauville: Route117_Text_DayCareSign: .string "POKéMON DAY CARE\n" .string "“Let us raise your POKéMON.”$" - diff --git a/src/daycare.c b/src/daycare.c index c3f4dd990..40704df16 100644 --- a/src/daycare.c +++ b/src/daycare.c @@ -1079,7 +1079,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/event_object_movement.c b/src/event_object_movement.c index 4f232147a..cedba8502 100644 --- a/src/event_object_movement.c +++ b/src/event_object_movement.c @@ -1318,11 +1318,12 @@ static u8 InitObjectEventStateFromTemplate(const struct ObjectEventTemplate *tem objectEvent->active = TRUE; objectEvent->triggerGroundEffectsOnMove = TRUE; 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 = template->trainerRange_berryTreeId >> 5; + objectEvent->shiny = VarGet(template->trainerRange_berryTreeId) >> 5; } objectEvent->movementType = template->movementType; objectEvent->localId = template->localId; @@ -1343,7 +1344,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) @@ -1823,9 +1823,7 @@ static u8 GetOverworldCastformForm(void) { return CASTFORM_NORMAL; } -// Retrieve graphic information about the following pokemon, if any -static bool8 GetFollowerInfo(u16 *species, u8 *form, u8 *shiny) { - struct Pokemon *mon = GetFirstLiveMon(); +static bool8 GetMonInfo(struct Pokemon * mon, u16 *species, u8 *form, u8 *shiny) { if (!mon) { *species = SPECIES_NONE; *form = 0; @@ -1847,6 +1845,11 @@ static bool8 GetFollowerInfo(u16 *species, u8 *form, u8 *shiny) { 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; @@ -10123,3 +10126,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; +} From 095994dc96666f3d9d6866339c6fcef191d35ea2 Mon Sep 17 00:00:00 2001 From: Ariel A <24759293+aarant@users.noreply.github.com> Date: Sun, 16 Apr 2023 20:07:41 -0400 Subject: [PATCH 240/241] Fixed gamma shift for special sprite palette tags (lights, emotes). Supersedes c82510e22bffb98fd9c63dc246c332dd1da602cd --- src/field_weather.c | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/src/field_weather.c b/src/field_weather.c index a875b7ec3..92673a35b 100644 --- a/src/field_weather.c +++ b/src/field_weather.c @@ -493,7 +493,9 @@ static void ApplyColorMap(u8 startPalIndex, u8 numPalettes, s8 colorMapIndex) // 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. palOffset += 16; @@ -502,10 +504,7 @@ static void ApplyColorMap(u8 startPalIndex, u8 numPalettes, s8 colorMapIndex) { u8 r, g, b; - // don't blend special sprite palette tags - if (sPaletteColorMapTypes[curPalIndex] == COLOR_MAP_CONTRAST || - (curPalIndex >= 16 && (curPalIndex - 16 == gWeatherPtr->contrastColorMapSpritePalIndex || - GetSpritePaletteTagByPaletteNum(curPalIndex - 16) >> 15))) + if (sPaletteColorMapTypes[curPalIndex] == COLOR_MAP_CONTRAST || curPalIndex - 16 == gWeatherPtr->contrastColorMapSpritePalIndex) colorMap = gWeatherPtr->contrastColorMaps[colorMapIndex]; else colorMap = gWeatherPtr->darkenedContrastColorMaps[colorMapIndex]; From 159faf8ff424941f70de810b621accb11bb5fefc Mon Sep 17 00:00:00 2001 From: Ariel A <24759293+aarant@users.noreply.github.com> Date: Sun, 23 Apr 2023 00:35:52 -0400 Subject: [PATCH 241/241] Fixed tall grass field effect discoloration in fog. Improved/optimized fog blending during fades. --- src/field_effect.c | 2 +- src/field_weather.c | 81 ++++++++++++++++----------------------------- 2 files changed, 29 insertions(+), 54 deletions(-) diff --git a/src/field_effect.c b/src/field_effect.c index 6fd17aa73..b120449ec 100644 --- a/src/field_effect.c +++ b/src/field_effect.c @@ -782,7 +782,7 @@ void FieldEffectScript_LoadFadedPalette(u8 **script) { struct SpritePalette *palette = (struct SpritePalette *)FieldEffectScript_ReadWord(script); LoadSpritePalette(palette); - UpdateSpritePaletteWithWeather(IndexOfSpritePaletteTag(palette->tag), FALSE); + UpdateSpritePaletteWithWeather(IndexOfSpritePaletteTag(palette->tag), TRUE); (*script) += 4; } diff --git a/src/field_weather.c b/src/field_weather.c index 92673a35b..9ed5c0c74 100644 --- a/src/field_weather.c +++ b/src/field_weather.c @@ -672,56 +672,27 @@ static void ApplyDroughtColorMapWithBlend(s8 colorMapIndex, u8 blendCoeff, u16 b } } -static void ApplyFogBlend(u8 blendCoeff, u16 blendColor) // TODO: Optimize this with time blending +// 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); // First blend all palettes with time UpdateAltBgPalettes(PALETTES_BG); - CpuFastCopy(gPlttBufferUnfaded, gPlttBufferFaded, 0x400); + CpuFastCopy(gPlttBufferUnfaded, gPlttBufferFaded, PLTT_BUFFER_SIZE * 2); UpdatePalettesWithTime(PALETTES_ALL); - // Then blend tile palettes [0, 12] faded->faded + // Then blend tile palettes [0, 12] faded->faded with fadeIn color BlendPalettesFine(0x1FFF, gPlttBufferFaded, gPlttBufferFaded, blendCoeff, blendColor); - color = *(struct RGBColor *)&blendColor; - rBlend = color.r; - gBlend = color.g; - bBlend = color.b; - 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 *)&gPlttBufferFaded[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 - { - BlendPalettesFine(1, gPlttBufferFaded + curPalIndex * 16, gPlttBufferFaded + 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) @@ -737,6 +708,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) @@ -879,20 +853,21 @@ void UpdateSpritePaletteWithWeather(u8 spritePaletteIndex, bool8 allowFog) default: if (gWeatherPtr->currWeather != WEATHER_FOG_HORIZONTAL) { if (gWeatherPtr->colorMapIndex) - ApplyColorMap(paletteIndex, 1, gWeatherPtr->colorMapIndex); + ApplyColorMap(paletteIndex, 1, gWeatherPtr->colorMapIndex); else - UpdateSpritePaletteWithTime(spritePaletteIndex); + UpdateSpritePaletteWithTime(spritePaletteIndex); } else { // In horizontal fog, only specific palettes should be fog-blended - if (allowFog) { - paletteIndex = PLTT_ID(paletteIndex); - // First blend with time - CpuFastCopy(gPlttBufferUnfaded + paletteIndex, gPlttBufferFaded + paletteIndex, 32); - UpdateSpritePaletteWithTime(spritePaletteIndex); - // Then blend faded->faded - BlendPalettesFine(1 << (spritePaletteIndex + 16), gPlttBufferFaded + paletteIndex, gPlttBufferFaded + paletteIndex, 12, RGB(28, 31, 28)); - } else { // Otherwise, just time-blend the palette - UpdateSpritePaletteWithTime(spritePaletteIndex); - } + 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; }